Einbindung vom SolaX Wechselrichter

Auflistung von gewünschten Features, Ausschreibung zur Umsetzung
LutzB
Beiträge: 3781
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 4 times
Been thanked: 25 times

Re: Einbindung vom SolaX Wechselrichter

Beitrag von LutzB »

Die Summen sind automatisch ab dem nächsten Tageswechsel richtig. Hatte HSC ja schon geschrieben.
Schauen wir morgen nochmal nach.
Benutzeravatar
arauhut
Beiträge: 118
Registriert: Di Jun 15, 2021 8:07 pm
Wohnort: Kassel
Kontaktdaten:

Re: Einbindung vom SolaX Wechselrichter

Beitrag von arauhut »

Machen wir. Vielen Dank
Grüße aus Kassel - Andreas
openWB series2 standard SW1.9 - Skoda Enyaq iV60 + Renault Zoe + SolaX X3-Hybrid-10.0-T-D + X3-Mic-6.0-T-D Wechselrichter (Gen 3) + HomeAssistant
HSC
Beiträge: 3941
Registriert: So Jan 10, 2021 8:49 am

Re: Einbindung vom SolaX Wechselrichter

Beitrag von HSC »

Hallo Lutz,
bei EVU fehlt wirklich auch noch der Faktor 1000 an irgendeiner Stelle zur Berechnung, um auf der Startseite die Tagessumme für Import & Export richtig zu bilden.
Die EVU- Zählerstände im Status sind seit Tagen in openWB i.O. und stammen direkt aus dem SDM630 des 1. Solax-WR.
Die sichtbaren 0,01 kWh sind in Wirklichkeit die abgeschnittenen 19 kWh Tagesdifferenz aus dem Log (csv), lt. Klammerwert aber nur 10 (bzw. 19, da abgeschnitten??) Wh.

Das Gleiche passiert unterm Tagesgraph als Tagessumme Bezug = 0,02 kWh = 20 Wh (scheinbar gerundet oder zetl. Differenz), müssten aber ca. 20 kWh heute sein, da der EVU- Zähler auch vor Update richtig anzeigte und richtig in csv geschrieben wurde.
Es setzt sich sichtbar weiterhin im Tagesgraph fort, da dort der "minimale" Bezug (um Faktor 1000 kleiner) auch nicht abgebildet werden kann.

Analog wird der Faktor auch im EVU- Export fehlen.

Schau bitte nochmal in das Modul oder die Übergaben der EVU- Werte zur TagesSummenberechnung.
Speicher passte schon immer, PV ist seit update heute auch komplett, nur EVU spinnt noch etwas.

@arauhut wird morgen dennoch nochmal eine Zusammenfassung der EVU- Summen, Tageslog- Summe Bezug sowie csv liefern.
VG
Benutzeravatar
arauhut
Beiträge: 118
Registriert: Di Jun 15, 2021 8:07 pm
Wohnort: Kassel
Kontaktdaten:

Re: Einbindung vom SolaX Wechselrichter

Beitrag von arauhut »

Vorweg ein Screenshot vom Laden nach einspielen der aktuellen Nightly.

Nach einem schönen Sonnenaufgang, hat diese sogar etwas beigesteuert

2022-02-10 09-20 openWB Startseite.jpg
PV & Speicher sind nun i.O.
EVU Tagessumme fehlt noch, bzw. steht nur auf 0,01kWh, obwohl 8,1 kWh geladen wurden.

Die Tagesdaten kommen später
Grüße aus Kassel - Andreas
openWB series2 standard SW1.9 - Skoda Enyaq iV60 + Renault Zoe + SolaX X3-Hybrid-10.0-T-D + X3-Mic-6.0-T-D Wechselrichter (Gen 3) + HomeAssistant
LutzB
Beiträge: 3781
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 4 times
Been thanked: 25 times

Re: Einbindung vom SolaX Wechselrichter

Beitrag von LutzB »

Meinst Du die 1.9.255? Hatte dort noch den Zähler korrigiert.
Benutzeravatar
arauhut
Beiträge: 118
Registriert: Di Jun 15, 2021 8:07 pm
Wohnort: Kassel
Kontaktdaten:

Re: Einbindung vom SolaX Wechselrichter

Beitrag von arauhut »

Ja, installierte Version ist: 1.9.255 (2022-02-10 07:49:31 +0100 [6ba478ee] )

Wie kann ich helfen?
Grüße aus Kassel - Andreas
openWB series2 standard SW1.9 - Skoda Enyaq iV60 + Renault Zoe + SolaX X3-Hybrid-10.0-T-D + X3-Mic-6.0-T-D Wechselrichter (Gen 3) + HomeAssistant
LutzB
Beiträge: 3781
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 4 times
Been thanked: 25 times

Re: Einbindung vom SolaX Wechselrichter

Beitrag von LutzB »

Mein Fehler. Der PR war noch nicht drin. :lol:
Also nochmal updaten bitte.
Benutzeravatar
arauhut
Beiträge: 118
Registriert: Di Jun 15, 2021 8:07 pm
Wohnort: Kassel
Kontaktdaten:

Re: Einbindung vom SolaX Wechselrichter

Beitrag von arauhut »

Keine Rede. Mach ich. :P
Grüße aus Kassel - Andreas
openWB series2 standard SW1.9 - Skoda Enyaq iV60 + Renault Zoe + SolaX X3-Hybrid-10.0-T-D + X3-Mic-6.0-T-D Wechselrichter (Gen 3) + HomeAssistant
Benutzeravatar
arauhut
Beiträge: 118
Registriert: Di Jun 15, 2021 8:07 pm
Wohnort: Kassel
Kontaktdaten:

Re: Einbindung vom SolaX Wechselrichter

Beitrag von arauhut »

So, nun denke ich, dass das SolaX-Modul für 3-phasige Wechselrichter mit Batterie zu gebrauchen ist.
Kleinigkeiten werden sicher noch gefunden werden aber alles in Allem können die Daten und Diagramme gut genutzt werden.

Zur abschließenden Kontrolle hier noch einmal ein paar Screenshots, vielleicht sieht der eine oder andere noch ein paar Ungereimtheiten.....
2022-02-10 21-00 openWB Startseite.jpg
2022-02-10 21-00 openWB Status.jpg
2022-02-10 21-00 openWB Tageslog.jpg
2022-02-10 21-00 openWB Langzeitansicht.jpg

PS: vielen Dank an alle, die sich intensiv mit meinem Problem auseinandergesetzt haben und es so schnell zu einem tollen Ergebnis gebracht haben.
HSC erinnert mich gerade, dass es genau 3 Monate her ist, dass ich damit ins Forum gegangen bin.
Ich bleib weiter dran, werde jetzt aber erst mal das System nutzen.
Grüße aus Kassel - Andreas
openWB series2 standard SW1.9 - Skoda Enyaq iV60 + Renault Zoe + SolaX X3-Hybrid-10.0-T-D + X3-Mic-6.0-T-D Wechselrichter (Gen 3) + HomeAssistant
Peete
Beiträge: 76
Registriert: Mi Feb 24, 2021 9:40 am

Re: Einbindung vom SolaX Wechselrichter

Beitrag von Peete »

LutzB hat geschrieben: Do Jan 27, 2022 8:37 am Wenn die Beschreibung dort viewtopic.php?p=52181#p52181 noch aktuell ist, bitte einen Blick auf den PR #1969 werfen.

https://github.com/snaptec/openWB/pull/1969

Das ist alles ungetestet! Ich bitte um Rückmeldung, ob das so passt.
Das ist der letzte Stand, der bei mir seit Dezember funktioniert:

bezug_solax -> solax.py

Code: Alles auswählen

#!/usr/bin/python
import sys
# import os
# import time
# import getopt
# import socket
# import struct
# import binascii
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.factory import ClientDecoder

def unsigned32(result, addr):
   low  = result.registers[addr]
   high = result.registers[addr + 1]
   val = low +( high << 16)
   return val

def unsigned16 (result, addr):
    return result.registers[addr]

def signed16(result, addr):
    val = result.registers[addr]
    if val > 32767:
        val -= 65535
    return val

def signed32(result, addr):
    val = unsigned32(result, addr)
    if val > 2147483647:
        val -=  4294967295
    return val

ipaddress = str(sys.argv[1])
client = ModbusTcpClient(ipaddress, port=502)

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()

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()

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()

resp=client.read_input_registers(109, 2)
frequenz = unsigned16(resp,0) / 100
f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
f.write(str(frequenz))
f.close()
speicher_solax -> solax.py

Code: Alles auswählen

#!/usr/bin/python
import sys
# import os
# import time
# import getopt
# import socket
# import struct
# import binascii
from pymodbus.client.sync import ModbusTcpClient

def unsigned16(result, addr):
    return result.registers[addr]

def signed16(result, addr):
    val = result.registers[addr]
    if val > 32767:
       val -= 65535
    return val

ipaddress = str(sys.argv[1])

client = ModbusTcpClient(ipaddress, port=502)

resp=client.read_input_registers(0, 114)

# Batterie Power
valuep = signed16(resp, 22)
f = open('/var/www/html/openWB/ramdisk/speicherleistung', 'w')
f.write(str(valuep))
f.close()

# Batterieladezustand
valuesoc = unsigned16(resp, 28 )
f = open('/var/www/html/openWB/ramdisk/speichersoc', 'w')
f.write(str(valuesoc))
f.close()

# 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()
wr_solax -> solax.py

Code: Alles auswählen

#!/usr/bin/python
import sys
# import os
# import time
# import getopt
# import socket
# import struct
# import binascii
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.factory import ClientDecoder

ipaddress = str(sys.argv[1])

def unsigned32(result, addr):
   low  = result.registers[addr]
   high = result.registers[addr + 1]
   val = low +( high << 16)
   return val

def unsigned16 (result, addr):
    return result.registers[addr]

def signed16(result, addr):
    val =  addr
    if val > 32767:
        val -= 65535
    return val

client = ModbusTcpClient(ipaddress, port=502)

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()

resp=client.read_input_registers(80, 4)

client.close()
loadvars Zeile 1085 (bei mir)

Code: Alles auswählen

if [[ $pvwattmodul == "wr_kostalpiko" ]] || [[ $pvwattmodul == "wr_siemens" ]] || [[ $pvwattmodul == "wr_rct" ]]|| [[ $pvwattmodul == "wr_solarwatt" ]] || [[ $pvwattmodul == "wr_shelly" ]] || [[ $pvwattmodul == "wr_sungrow" ]] || [[ $pvwattmodul == "wr_huawei" ]] || [[ $pvwattmodul == "wr_powerdog" ]] || [[ $pvwattmodul == "wr_lgessv1" ]]|| [[ $pvwattmodul == "wr_kostalpikovar2" ]] || [[ $pvwattmodul == "wr_solax" ]]; then
		usesimpv=1
Gruß
openWB series2 standard+
Antworten