Alles was mit # auskommentiert ist war im originalen Modul aktiv und wird bei mir nicht mehr benutzt.
WR
pvwatt -> unverändert
Code: Alles auswählen
resp=client.read_input_registers(10, 2)
pv1 = unsigned16(resp, 0)
pv2 = unsigned16(resp, 1)
f = open('/var/www/html/openWB/ramdisk/pvwatt', 'w')
f.write(str( (pv1 + pv2) * -1 ) ) # Erzeugung negativ
f.close()
daily_pvkwh braucht es nicht, da daily von openwb über pvwatt berechnet wird = Auskommentiert.
Code: Alles auswählen
resp=client.read_input_registers(80, 4)
#pvtoday = unsigned32(resp,0) / 10 # yield today
#f = open('/var/www/html/openWB/ramdisk/daily_pvkwh', 'w')
#f.write(str(pvtoday))
#f.close()
pvkwh und pvkwhk
Gesamtertrag wurde in wh ausgelesen und über / 1000 in pvkwhk übergeben. Kamen bei mir falsche Werte raus (Kommastelle).
pvkwhk braucht es auch nicht.
Code: Alles auswählen
#pvall = unsigned32(resp,2) # yield overall
#f = open('/var/www/html/openWB/ramdisk/pvkwh', 'w')
#f.write(str(pvall))
#f.close()
#f = open('/var/www/html/openWB/ramdisk/pvkwhk', 'w')
#f.write(str(pvall / 1000))
#f.close()
#client.close()
# Gesamtertrag [kWh]
pvall = unsigned32(resp, 2) * 100 # yield overall
f = open('/var/www/html/openWB/ramdisk/pvkwh', 'w')
f.write(str(pvall))
f.close()
EVU
wattbezug -> keine Änderung
Code: Alles auswählen
resp=client.read_input_registers(0, 114)
value = signed32(resp, 70)
# for SolaX negative means get power from grid
value = -value
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(value))
f.close()
evuhz -> Register 7 wird ausschließlich von einem Solax X1 bedient (1phasig).
Habe ich auskommentiert. Das richtige Register laut Solax wäre 189. Das liefert nämlich evuhz direkt vom Meter und nicht vom WR. Hat bei mir mal den Wert 4999 gebracht, liefert aber aktuell 0. Habe die 109 genommen, welche die Frequenz von einem der Phasen des X3 ist. Geht also nicht beim X1.
Code: Alles auswählen
#frequenz = unsigned16(resp,7) / 100
#print (frequenz)
#f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
#f.write(str(frequenz))
#f.close()
bezugkwh und einspeisungkwh
Kommastelle falsch
Code: Alles auswählen
#consumed = unsigned32(resp,74) / 100
#print (consumed)
#f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
#f.write(str(consumed))
#f.close()
#einspeisung = unsigned32(resp,72) / 100
#f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
#f.write(str(einspeisung))
#f.close()
einspeisung = unsigned32(resp, 72) * 10
f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
f.write(str(einspeisung))
f.close()
consumed = unsigned32(resp, 74) * 10
f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
f.write(str(consumed))
f.close()
bezugw1, bezugw2 und bezugw3
Das passt nur für einen X3. Sind die EVU Meter Werte für die Leistung in Watt. Also Import/Export pro Phase. Ampere gibt es leider nicht, bzw. konnte ich nicht finden:
Code: Alles auswählen
resp=client.read_input_registers(130, 6)
value2 = signed32(resp, 0)
value2 = -value2
f = open('/var/www/html/openWB/ramdisk/bezugw1', 'w')
f.write(str(value2))
f.close()
value3 = signed32(resp, 2)
value3 = -value3
f = open('/var/www/html/openWB/ramdisk/bezugw2', 'w')
f.write(str(value3))
f.close()
value4 = signed32(resp, 4)
value4 = -value4
f = open('/var/www/html/openWB/ramdisk/bezugw3', 'w')
f.write(str(value4))
f.close()
Speicher
speicherleistung / speichersoc / speicherikwh / speicherekwh
Passt soweit. habe ich aber um den Gesamtzähler Speicher Ladung und Entladung erweitert.
Code: Alles auswählen
resp=client.read_input_registers(0, 114)
value1 = signed16(resp, 22) #Batterie Power
value2 = unsigned16(resp, 28 )
f = open('/var/www/html/openWB/ramdisk/speicherleistung', 'w')
f.write(str(value1))
f.close()
f = open('/var/www/html/openWB/ramdisk/speichersoc', 'w') #Batterieladezustand
f.write(str(value2))
f.close()
Das kam hinzu:
Code: Alles auswählen
# Batterie entladen LSB 29 MSB 30
valuei29 = unsigned16(resp, 29)
valuei30 = unsigned16(resp, 30)
f = open('/var/www/html/openWB/ramdisk/speicherekwh', 'w')
f.write(str((valuei29 + (valuei30 * 65536)) * 100 ) )
f.close()
# Batterie geladen LSB 33 MSB 34
valuei33 = unsigned16(resp, 33)
valuei34 = unsigned16(resp, 34)
f = open('/var/www/html/openWB/ramdisk/speicherikwh', 'w')
f.write(str((valuei33 + (valuei34 * 65536)) * 100 ) )
f.close()
Morgen gebe ich Feedback, ob die Speicherwerte für das tögliche laden und entladen passen. Das ist das Einzige, was ich heute nicht sehen konnte.