question

fabian-lauer avatar image
fabian-lauer asked

Solax X1 Boost 5.0 DT inverter with VenusOS / Cerbo GX via DBus

Hi,

just wanted to share another little script which I use in my private project.
It is simulating a DBus pvinverter - in my case it is a Solax X1 Boost with 5kW and a WIFI stick to upload data into the Solax Cloud.

I don't directly get realtime data via ModBus, instead I call the Solax cloud RESTapi.
Values are only updated every 5 minutes in the cloud - this is maybe causing some inaccuracies, which I am currently investigating in.

This script is based on my earlier project with the Shelly 3EM.

The code can be found on GitHub: https://github.com/fabian-lauer/dbus-solax-x1-pvinverter

ccgx-overview.png

ccgx-details.png

vrm-overview.png

Hope that is code is helpful for someone.
And I am always happy to get your feedback and support.

Thx

cerbo gxd-bus
ccgx-overview.png (17.6 KiB)
ccgx-details.png (20.3 KiB)
vrm-overview.png (69.3 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

8 Answers
thoki avatar image
thoki answered ·

Hallo Fabian,

das ist ja alles sehr interessant. Ich habe seit einigen Wochen einen MultiPlus-II GX installiert.

Durch Dein Script konnte ich ein Shelly 3em einbinden und damit meine Batterien steuern. Auch eine Wallbox (go-e Charger) habe ich eingebunden. Nun suche ich noch nach einer Möglichkeit mehrere Growatt PV-Wechselrichter einzubinden, um Nulleinspeisung und das Überschussladen mit der Wallbox konfigurieren zu können.

Wie bei Solax senden die Growatts über Wifi-Sticks ihre Daten in die Cloud, allerdings nur alle fünf Minuten, so dass eine Steuerung doch sehr schleppend wäre. Deswegen habe ich herausgefunden, wie ich die Daten über ein Gateway per ModbusTCP auslesen kann.

Natürlich findet das GX den Wechelrichter nicht, auch nicht mit manueller Eingabe (IP und Modbus Slave ID).

Hast Du ein Script dafür oder eins, dass entsprechend angepasst werden kann?

MfG

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

fabian-lauer avatar image
fabian-lauer answered ·

Hallo @Thoki,

leider kann ich hier nicht weiterhelfen - habe selber schon Mal überlegt die Cloud Anbindung zu ersetzen, aber das wäre mir gerade nur Mehraufwand für etwas bessere Daten - die eigentliche Steuerung erfolgt meiner Meinung über den 3EM und den Wert der zuviel oder zuwenig eingespeist wird.

Ggf. findet sich jemand anderes der schon ein Growatt Gerät eingebunden hat.

Gruß
Fabian

P.S.: gerade mal fix Google bemüht - ggf. hilft das weiter, auch wenn es Modus RTU ist - ggf. ist die Payload ähnlich: https://www.npmjs.com/package/growatt-modbus

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

thoki avatar image thoki commented ·

Vielen Dank für Deine Antwort.

Schade, dann muss ich weiter forschen.

Dein Link ist auf jeden Fall interessant, muss ich mir genauer ansehen. Die Kabel habe ich auch so verbunden mit einem RS485-USB Adapter, aber nicht über einen RPi, sondern einen Windows PC, auf dem dann eine Software läuft, die den PV Inverter per ModbusRTU ausliest und als ModbusTCP-Gateway fungiert. Da bei mir ein Windows Server läuft, sieht das sehr gut aus.

Dieses habe ich mir auch schon angesehen https://github.com/victronenergy/venus/wiki/dbus#pv-inverters. Mal sehen, ob ich da etwas hinbekomme.

Gruß


0 Likes 0 ·
masterpu avatar image
masterpu answered ·

Moin,

würde das ganze auch gerne für Growatt umsetzen, bin aber zu beschränkt in meinen Python Kenntnissen und schnalle auch die Growatt API nicht so richtig.

Habe unter https://pypi.org/project/growattServer/ eigentlich ein passendes Projekt gefunden, was als Basis dienen könnte. Da sind eigentlich alle wichtigen Sachen drin, aber ich kann es leider nicht.


Vielleicht nimmt Fabian Lauer sich ja der Sache an.

Ich könnte Dir auch meine Growatt API Login Daten zur Verfügung stellen.


Gruß Claudius

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

panicfr avatar image
panicfr answered ·

@fabian-lauer

Hallo Fabian, danke dafür, dass du uns dein Skript überlässt.

Leider macht das Skript bei mir Probleme, und zwar zeigt es (anscheinend?) bei der ersten Verbindung mit dem Solax X1 die gesamte KWh, seit inbetriebnahme des X1 an
1671519786426.png

Ich vermute mal, dass das Skript bei der ersten Abfrage die Daten entweder falsch bekommt oder einfach falsch auswertet.

Output vom API:

{"success":true,"exception":"Query success!","result":{"inverterSN":"blablablablabla","sn":"blubblubbblubbbblubbbbbb","acpower":0.0,"yieldtoday":0.0,"yieldtotal":91.3,"feedinpower":0.0,"feedinenergy":0.0,"consumeenergy":0.0,"feedinpowerM2":null,"soc":null,"peps1":null,"peps2":null,"peps3":null,"inverterType":"4","inverterStatus":"102","uploadTime":"2022-12-20 09:28:14","batPower":null,"powerdc1":4.0,"powerdc2":0.0,"powerdc3":null,"powerdc4":null,"batStatus":null}}

Dadurch "versaut" es natürlich die Statistik und die Tagesanzeige.

(Das System hängt an einer Wohnung mit ca. 7-8KWh/Tag Durchsatz..)

Ist das Problem bekann? Kann ich da ggf. im Skript selbst eingreifen?

Vielen Dank schonmal für deine Hilfe!


1671519786426.png (48.5 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Ron Ronsen avatar image
Ron Ronsen answered ·

Hallo Fabian, ich freue mich das jemand endlich ma ein Script für den Solax X1 geschrieben hat.

Leider scheine ich irgendetwas falsch zu machen, ich habe das log file voll mit folgenden Fehlern

023-04-03 06:16:40,61 root INFO Start
2023-04-03 06:16:40,340 root CRITICAL Error at main
Traceback (most recent call last):
File "/data/dbus-solax-x1-pvinverter/dbus-solax-x1-pvinverter.py", line 294, in main
pvac_output = DbusSolaxX1Service(
File "/data/dbus-solax-x1-pvinverter/dbus-solax-x1-pvinverter.py", line 25, in __init__
self._dbusservice = VeDbusService("{}.pv_{}".format(servicename, self._getSolaxInverterSerial()))
File "/data/dbus-solax-x1-pvinverter/dbus-solax-x1-pvinverter.py", line 86, in _getSolaxInverterSerial
data = self._getSolaxCloudData()
File "/data/dbus-solax-x1-pvinverter/dbus-solax-x1-pvinverter.py", line 151, in _getSolaxCloudData
raise ValueError("Response (%s) is not ok - 'success'=%s 'exception'=%s" % ( URL, data['success'], data['exception']))
ValueError: Response (https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=BLABLABLA;sn=?tokenId=BLABLABLA&sn=BLUBBLUB) is not ok - 'success'=False 'exception'=The overrun has been disabled for 1 hour!


Firmware Version ist v2.93

Kannst du mir evetnuell einen Tip geben was ich falsch gemacht haben könnte?

Ich bin leider auch nicht so fit in der ganze Geschichte das ich jetzt einfach wild irgendwelche Befehle eingeben möchte.

Ich würde mich sehr uber eine Antwort freuen.

3 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

fabian-lauer avatar image fabian-lauer commented ·
Bitte einmal die URL mit dem richtigen Token und SN im Browser aufrufen und das Ergebnis prüfen - denke hier stimmt was nicht...
0 Likes 0 ·
Ron Ronsen avatar image Ron Ronsen fabian-lauer commented ·

Hallo Fabian, die URL funktioniert, zumindest kann ich die ganzen notwendigen Daten sehen

{"success":true,"exception":"Query success!","result":{"inverterSN":"blablabla","sn":"blablabla","acpower":0.0,"yieldtoday":0.0,"yieldtotal":1936.4,"feedinpower":0.0,"feedinenergy":0.0,"consumeenergy":0.0,"feedinpowerM2":null,"soc":null,"peps1":null,"peps2":null,"peps3":null,"inverterType":"4","inverterStatus":"100","uploadTime":"2023-04-03 23:20:07","batPower":null,"powerdc1":0.0,"powerdc2":0.0,"powerdc3":null,"powerdc4":null,"batStatus":null}}

scheinbar liegen die Probleme in der dbus-solax-x1-pvinverter.py

Ich habe die Datei mit Virtual Studio Code geöffnet und bekomme folgende Probleme angezeigt.

Import "dbus.mainloop.glib" could not be resolved

Import "gi.repository" could not be resolved

Import "requests" could not be resolved from source

Import "vedbus" could not be resolved

Import "dbus.mainloop.glib" could not be resolved

0 Likes 0 ·
fabian-lauer avatar image fabian-lauer Ron Ronsen commented ·

Ja die Meldungen von VSCode können an der fehlenden kompletten Python Einrichtung liegen - wie auch immer....


Das Script zeigt an der Stelle folgenden code

1680595903312.png


Scheinbar ist die Rückmeldung nicht ok - die Meldung von der API ist wohl "The overrun has been disabled for 1 hour" - ggf. ist stimmt das mit dem Account oder dem API-Key nicht....bin gerade auch etwas überfragt :-(

0 Likes 0 ·
1680595903312.png (6.1 KiB)
oezyurt avatar image
oezyurt answered ·

Hallo Zusammen, hab das Problem das das Script zwar funktioniert und das Gerät in der VRM Geräte Liste und in der Geräteliste in der Console sichtbar ist aber nicht als "PV Inverter" in der Grafischen Übersicht weder in der Console noch VRM erscheint.

Habt Ihr ähnliche Erfahrungen ? Hab einen VenusGX mit v3.0 und v3.1 ausprobiert ... in beiden fällen das gleiche phänomen...

Müsste das SolaxX1 dan nicht eigentlich unter "PV Invertes" oder "Energy Meters" erscheinen ?? Tut es leider nicht...


LG Ibrahim



2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

tobiasfaust avatar image
tobiasfaust answered ·

Hi, ist es nicht einfacher ein normales ESP Modbus-RTU Gateway einzusetzen welches alle Werte per MQTT im sekundentakt bereitstellt? Die MQTT Nachrichten können doch dann subscribed werden. Dafür wird es doch ein generisches Modul geben, oder?


https://github.com/tobiasfaust/SolaxModbusGateway

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

commander-1971 avatar image
commander-1971 answered ·

Hallo zusammen, bin neu hier, sorry wenn ich was falsch mache.

Ich habe das Skript erfolgreich in mein VRM-Portal interagiert, wird alles korrekt angezeigt. Danke dafür.

Nun, da ich insgesamt 4 Solax Wechselrichter bei mir im Einsatz habe, würde ich auch gerne alle 4 im VRM Portal anzeigen lassen, was muss ich dafür tun oder geht es nicht?


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Related Resources