Ich versuche einen Hager Zähler ECR 380D über einen PE11 anzubinden, brauche aber Hilfe hab schon Vorarbeit geleistet kann ihn aber nicht unter den Zählern bei "Einstellungen Modulkonfiguration EVU einbinden"
da reichen meine Kenntnisse der OpenWB nicht aus
Mein Code für das Modbus auslesen läuft und gibt auch richtig aus
Code: Alles auswählen
#!/usr/bin/python
import sys
# import os
# import time
# import getopt
import struct
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('192.168.0.203', port=502)
modbusid = 1
# Gesamtleistung W
resp = client.read_holding_registers(0xB011,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
final = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Gesamt Watt = ' + str(final) +' W')
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(final))
f.close()
# Bezug kWh
resp = client.read_holding_registers(0xB060,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
ikwh = float(all) * 1000
# in Kommazahl umrechnen mal 1000 in Wh
print ('Gesamt Bezug = ' + str(ikwh) +' Wh')
f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
f.write(str(ikwh))
f.close()
# Einspeisung kWh
resp = client.read_holding_registers(0xB064,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
ekwh = float(all) * 1000
# in Kommazahl umrechnen mal 1000 in Wh
print ('Einspeisung = ' + str(ekwh) +' Wh')
f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
f.write(str(ekwh))
f.close()
# EVU Herz
resp = client.read_holding_registers(0xB006,1, unit=modbusid)
hz = resp.registers[0]
hz = float(hz) / 100
print ('Netzfrequenz = ' + str(hz) +' Hz')
f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
f.write(str(hz))
f.close()
# Spannung Phase L1
resp = client.read_holding_registers(0xB000,1, unit=modbusid)
voltage1 = resp.registers[0]
voltage1 = float(voltage1) / 100
print ('Spannung L1 = ' + str(voltage1) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv1', 'w')
f.write(str(voltage1))
f.close()
# Spannung Phase L2
resp = client.read_holding_registers(0xB001,1, unit=modbusid)
voltage2 = resp.registers[0]
voltage2 = float(voltage2) / 100
print ('Spannung L2 = ' + str(voltage2) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv2', 'w')
f.write(str(voltage2))
f.close()
# Spannung Phase L3
resp = client.read_holding_registers(0xB002,1, unit=modbusid)
voltage3 = resp.registers[0]
voltage3 = float(voltage3) / 100
print ('Spannung L3 = ' + str(voltage3) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv3', 'w')
f.write(str(voltage3))
f.close()
# Strom Phase L1
resp = client.read_holding_registers(0xB009,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla1 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla1) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga1', 'w')
f.write(str(lla1))
f.close()
# Strom Phase L2
resp = client.read_holding_registers(0xB00B,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla2 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla2) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga2', 'w')
f.write(str(lla2))
f.close()
# Strom Phase L3
resp = client.read_holding_registers(0xB00D,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla3 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla3) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga3', 'w')
f.write(str(lla3))
f.close()
# Leistung Phase L1
resp = client.read_holding_registers(0xB019,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw1 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L1 = ' + str(finalw1) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw1', 'w')
f.write(str(finalw1))
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.close()
# Leistung Phase L2
resp = client.read_holding_registers(0xB01B,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw2 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L2 = ' + str(finalw2) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw2', 'w')
f.write(str(finalw2))
f.close()
# Leistung Phase L3
resp = client.read_holding_registers(0xB01D,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw3 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L3 = ' + str(finalw3) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw3', 'w')
f.write(str(finalw3))
f.close()
# Leistungsfaktor CosPhi L1
resp = client.read_holding_registers(0xB02B,1, unit=modbusid)
evupf1 = resp.registers[0]
evupf1 = float(evupf1) / 1000
print ('CosPhi L1 = ' + str(evupf1) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf1', 'w')
f.write(str(evupf1))
f.close()
# Leistungsfaktor CosPhi L2
resp = client.read_holding_registers(0xB02C,1, unit=modbusid)
evupf2 = resp.registers[0]
evupf2 = float(evupf2) / 1000
print ('CosPhi L2 = ' + str(evupf2) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf2', 'w')
f.write(str(evupf2))
f.close()
# Leistungsfaktor CosPhi L3
resp = client.read_holding_registers(0xB02D,1, unit=modbusid)
evupf3 = resp.registers[0]
evupf3 = float(evupf3) / 1000
print ('CosPhi L3 = ' + str(evupf3) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf3', 'w')
f.write(str(evupf3))
f.close()
doch weder im Status EVU wird mir die Gesamtleistung W angezeigt
noch im Graphen
da Ich jedoch in Python nicht gut bin habe ich ja zum testen der Modbus Einstellungen das EVU KIT missbraucht
Wäre super wenn mir jemand sagen kann wie ich einen neuen Hersteller Hager anlegen kann mit "IP Adressen, Modus Port und ID Auswahl" und was mein Fehler mit der Gesamtleistung ('/var/www/html/openWB/ramdisk/wattbezug', 'w') ist
Dankeschön