ich würde die Einbindung eines Hager ECR als Request anfragen mit flexibler Adresse, Port, ID und Nutzung also sowohl als Netzbezug als such als Zwischenzäher oder Verbraucher
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()
MfG
Elektron