Anbindung Hager ECR 380D

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
Antworten
Elektron
Beiträge: 5
Registriert: Mo Aug 09, 2021 9:40 am

Anbindung Hager ECR 380D

Beitrag von Elektron »

Hallo

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()
wenn ich die Test py im Terminal starte passt alles laut den Print Befehlen
Terminal.jpg
doch weder im Status EVU wird mir die Gesamtleistung W angezeigt
EVU Status.png
noch im Graphen
Graph.jpg
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
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: Anbindung Hager ECR 380D

Beitrag von derNeueDet »

Wie rufst du das Python Programm auf? Lass mal das Shell Script dazu sehen

VG
Det
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 250 (07/2023)
Elektron
Beiträge: 5
Registriert: Mo Aug 09, 2021 9:40 am

Re: Anbindung Hager ECR 380D

Beitrag von Elektron »

Ruf ich von Hand im Terminal auf für das Log der Werte und den Test

Das script selbst läuft durch die alte Main vom bezug_ethmpm3pm.py

Wie gesagt mir ging es um den Modbus Test aber fürn Test bin ich zu schlecht im Programmieren
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: Anbindung Hager ECR 380D

Beitrag von derNeueDet »

Dann schau mal in dem main.sh, ob du da evtl. Die echo Zeile raus genommen hast, die den Watt Wert aus der Ramdisk liest und an das aufrufende Programm gibt.

Code: Alles auswählen

 
 ​wattbezug=​$(​<​${RAMDISKDIR}​/wattbezug​) 
 ​echo​ ​$wattbezug
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 250 (07/2023)
Elektron
Beiträge: 5
Registriert: Mo Aug 09, 2021 9:40 am

Re: Anbindung Hager ECR 380D

Beitrag von Elektron »

Hallo

Danke für die Antwort, klappt trotzdem nicht. Und für die neue Zähler Struktur bin ich zu blöd.

Wie erstelle ich einen Request zum einbinden oder wer kann mir erklären wie ich es selbst mache die ganzen Modbus Daten habe ich ja.
Antworten