Capteur de courant / tension / watt / conso PZEM-004T V3.0
Salut david et les autres
Ce n'est pas une "issue" mais un partage qui est intéressant...
Je travail sur l'utilisation du capteur de tension/courant PZEM-004T dejas bien connus sur le net avec pvmonit. https://www.amazon.fr/PZEM-004T-Multim%C3%A8tre-num%C3%A9rique-Affichage-Adaptateur/dp/B074QKPJVB
J'ai enfin réussi a le faire fonctionner sans passer par un arduino mais via un adaptateur rs232/USB
Voici comment :
Installation des dependances :
sudo pip install pyserial
sudo pip3 install -U pymodbus
Puis création d'un code python sudo vi /opt/PvMonit/bin/pzem_004t.py
Dans lequel on trouve :
#!/usr/bin/python3
import pymodbus
import serial
import math
from pymodbus.pdu import ModbusRequest
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.transaction import ModbusRtuFramer
def calc (registers, factor):
format = '%%0.%df' % int (math.ceil (math.log10 (factor)))
if len(registers) == 1:
return format % ((1.0 * registers[0]) / factor)
elif len(registers) == 2:
return format % (((1.0 * registers[1] * 65535) + (1.0 * registers[0])) / factor)
#endif
#end calc
client = ModbusClient (method = "rtu", port="/dev/ttyUSB0", stopbits = 1, bytesize = 8, parity = 'N', baudrate = 9600)
#Connect to the serial modbus server
connection = client.connect()
if client.connect ():
try:
result = client.read_input_registers (0x0000, 10, unit = 0x01)
print ('V: ' + calc (result.registers[0:1], 10) + 'V')
print ('A: ' + calc (result.registers[1:3], 1000) + 'A')
print ('P: ' + calc (result.registers[3:5], 10) + 'W')
print ('E: ' + calc (result.registers[5:7], 1) + 'Wh')
print ('F: ' + calc (result.registers[7:8], 10) + 'Hz')
print ('f: ' + calc (result.registers[8:9], 100))
print ('a: ' + calc (result.registers[9:10], 1))
finally:
client.close()
#end try
#end if
Dans la ligne client = ModbusClient (method = "rtu", port="/dev/ttyUSB0", stopbits = 1, bytesize = 8, parity = 'N', baudrate = 9600) On remplace /dev/ttyUSB0 par le bon port utilisé par le capteur ( /dev/ttyUSB1 dans mon cas puisque le ttyUSB0 est utilisé par le cable victron)
Test du script :
pi@raspberrypi:~ $ sudo python3 /opt/PvMonit/bin/pzem_004t.py
V: 230.0V
A: 0.043A
P: 0.9W
E: 2Wh
F: 50.0Hz
f: 0.09
a: 0
pi@raspberrypi:~ $
Voila pour l’instant... il me reste a écrire le script php pour intégrer tout ca dans pvmonit ...
Enfin ... si j'y arrive ... car je suis toujours autant larguer en php...