Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diverse Erweiterungen der Solax-X3 Items #106

Open
benhubert opened this issue Dec 25, 2024 · 25 comments
Open

Diverse Erweiterungen der Solax-X3 Items #106

benhubert opened this issue Dec 25, 2024 · 25 comments

Comments

@benhubert
Copy link

benhubert commented Dec 25, 2024

UPDATE: Ich habe den Titel des Issues aktualisiert. Die ursprüngliche konkrete Frage wurde relativ rasch geklärt, doch der Inhalt der Diskussion hat sich danach etwas ausgedehnt.

Ich möchte weitere Register zur Solax X3 Konfiguration hinzufügen und versuche momentan den Inhalt der Datei zu verstehen. Leider gibt mir die Wiki auch nicht mehr Aufschluss.

Konkret bin ich verwundert über die Angaben in position, z.B. folgenden Block:

                {
                    "position": [
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16
                    ],
                    "name": "InverterSN",
                    "realname": "Inverter SerialNumber",
                    "datatype": "string"
                },

In der Modbus Doku, die ich von Solax erhalten habe, steht, dass die InverterSN in den Feldern 0x0000-0x0006 zu finden sind, 14 Chars bzw. 7 Felder vom Typ uint16.

Von der Anzahl her passt es, aber wieso startet der Array bei 3 und nicht bei 0? Ähnlich ist es bei den darauffolgenden Feldern.

Wäre super, wenn mir das jemand erläutern könnte.

@tobiasfaust
Copy link
Owner

@Lazgar
Copy link
Contributor

Lazgar commented Dec 25, 2024

Hallo benhubert, ich betreue das json für den solax x3, wenn du weitere Werte brauchst kann ich die gerne ergänzen. Was brauchst du?

@benhubert
Copy link
Author

Ok, d.h. die ersten drei Werte sind Header. Diesen Teil habe ich nicht gesehen, Danke.

Mein Ziel ist, das Lade-Verhalten des Akkus auszulesen und in weiterer Folge auch zu steuern. Konkret geht es um die 0x03 Holding-Register

  • 0x008B für den Lade-Modus
  • und idealerweise auch alle weiteren Register bis 0x00A8

Für die Steuerung benötige ich aus den 0x06 Write Register vorerst zumindest

  • 0x001f um den Charge-Mode zu wechseln

Wichtig ist, dass das Register wirklich nur dann geschrieben wird, wenn sich der Wert über MQTT geändert hat, da es ins EEPROM schreibt.

Soweit ich verstehe, müsste ich dafür auch auf irgendeine Weise das Passwort über Modbus übermitteln. Passiert das über das Write Register 0x0000? Für mich wäre es ok, wenn man einfach dieses Register wie alle anderen Register über MQTT verfügbar macht, sodass sich das Passwort von einer externen Software über MQTT übermitteln lässt.

@Lazgar
Copy link
Contributor

Lazgar commented Dec 25, 2024

Ich arbeite gerade daran das json für den x3 zu erweitern inkl. Einiger sinnvoller Set Befehle. Bisschen Zeit brauch ich noch dafür, aber das wird kommen 👍

@benhubert
Copy link
Author

Oh super! Du kannst mir gerne einen Pull Request schicken sobald du etwas hast, dann kann ich gerne testen.

@JensHoeppner
Copy link

@Lazgar Ich fände die Erweiterung um Set-Befehle auch toll

@Lazgar
Copy link
Contributor

Lazgar commented Dec 31, 2024

Hier eine Testversion. Alle Einstellungen können bei mir gesetzt werden ohne vorher ein Unlock zu senden.

Solax-X3-test.txt

In Fhem habe ich folgendes im Attribut setList:

OperationMode:SelfUse,Feedin,Backup,Manuel,PeakShaving,TOU {"KG/Wechselrichter/SolaX-X3/set/OperationMode ".SolaxValueMapping($EVTPART1)}
ManuelMode:StopChrge&Dischrge,ForceCharge,ForceDischarge {"KG/Wechselrichter/SolaX-X3/set/ManuelMode ".SolaxValueMapping($EVTPART1)}
ExportLimit:slider,0,100,30000 {"KG/Wechselrichter/SolaX-X3/set/ExportLimit ".$EVTPART1 * 0.1}
OffGridMinimumSoC:slider,10,1,25 {"KG/Wechselrichter/SolaX-X3/set/OffGridMinimumSoC ".$EVTPART1}
PhasePowerBalance:on,off {"KG/Wechselrichter/SolaX-X3/set/PhasePowerBalance ".SolaxValueMapping($EVTPART1)}
UnlockSettings:noArg {"KG/Wechselrichter/SolaX-X3/set/UnlockSettings ". ReadingsNum("MQTT2_SolaX_X3_E438BCD8", "InverterAdminPassword", 0000)}

Das Topic müsst ihr an eure Definition anpassen.

Fürs übersetzen in Werte die der Wechselrichter versteht, habe ich mir in 99_myUtils.pm das folgende definiert:
sub SolaxValueMapping($){
my ($value)=@_;
my $ret;
if ($value eq "SelfUse" or $value eq "StopChrge&Dischrge" or $value eq "off")
{$ret = 0;}
elsif ($value eq "Feedin" or $value eq "ForceCharge" or $value eq "on")
{$ret = 1;}
elsif ($value eq "Backup" or $value eq "ForceDischarge")
{$ret = 2;}
elsif ($value eq "Manuel")
{$ret = 3;}
elsif ($value eq "PeakShaving")
{$ret = 4;}
elsif ($value eq "TOU")
{$ret = 5;}
return $ret;
}

Nach einem Neustart dauert es ein bisschen bis er Befehle ausführt, und einige können nur verarbeitet wenn der Wechselrichter läuft.
Falls ihr zusätzliche Einstellungen benötigt oder selber welche einbaut, lasst es mich wissen.
Ist auf jeden Fall noch ausbaufähig :)

P.s.: minimum Interval für die Live Daten sind 5 Sekunden.

@Lazgar
Copy link
Contributor

Lazgar commented Jan 1, 2025

Ich habe noch den LockState von den Settings mit rein genommen. Bei mir steht der eigentlich immer auf Unlocked... Aber laut Doku muss man die Settings entsperren bevor man Befehle schickt.

Solax-X3-test.json

@tobiasfaust Wenn im json der letzte Value bei den Live-Daten ein Mapping hat, schmiert mir der ESP permanent ab. Kannst du das nachstellen?

@tobiasfaust
Copy link
Owner

Man imho den Inverter nur einmal entsperren, sprich: das passwort in register 0 schreiben. Danach nie wieder.
@Lazgar Mit dem Absturz bei einem Mapping muss ich noch testen. Wenn du es reproduzieren kannst, mach bitte ein neues Issue dazu auf damit ich den überblick behalte ;)

@Lazgar
Copy link
Contributor

Lazgar commented Jan 9, 2025

Hat sich das File schon jemand zum testen geladen? Gibt es irgendwelche Rückmeldungen dazu? @benhubert @JensHoeppner

Ich sehe mir gerade die Funktion TargetSoC an zwecks Batteriepflege. Leider funktioniert das derzeit nicht und ich kann nicht sagen ob es daran liegt, dass ich selbst noch keinen Speicher habe, oder weil es in ein anderes Register geschrieben wird (0x10)...

Habt ihr einen X3 mit Batterie und könntet das für mich testen?

@Lazgar
Copy link
Contributor

Lazgar commented Jan 9, 2025

@Lazgar Mit dem Absturz bei einem Mapping muss ich noch testen. Wenn du es reproduzieren kannst, mach bitte ein neues Issue dazu auf damit ich den überblick behalte ;)

@tobiasfaust Ich konnte den Fehler nicht mehr reproduzieren, lag wohl an mir :D

@JensHoeppner
Copy link

@Lazgar
Ich habe getestet und komme nicht weiter. Liegt aber mehr an mir als an deiner Programmierung.
Was ich gemacht habe:
Neuen ESP mit aktueller Version 3.3.1@stable geflasht
Über den Menüpunkt Files die Solax-X3-test.json Datei angelegt und gefüllt,
Im Menü Modbus Config Solax-X3-test als Inverter-Typ ausgewählt, Set Commands auf enable
in der BasisConfig lautet mein Device Name "SolaX-X3" der MQTT Topic Base "KG/Wechselrichter"
Im FHEM wurde ein Gerät SolaX_X3_5CF6B870 angelegt, Readings erscheinen und werden aktualisiert.
bei diesem Gerät das Attribut setList ausgefüllt wie von dir oben angegeben
Muss dabei außer dem Gerätenamen in der letzten Zeile noch etwas angepasst werden?
UnlockSettings:noArg {"KG/Wechselrichter/SolaX-X3/set/UnlockSettings ". ReadingsNum("SolaX_X3_5CF6B870", "InverterAdminPassword", 0000)}
Muss das Passwort geändert werden? In der App ist bei mir ein anderes Hinterlegt. Oder haben die nichts miteinander zu tun?
die Routine SolaxValueMapping in der 99_myUtils.pm ist auch erstellt.
im Reading InverterLockState wird 2 angezeigt.
Habe versucht den OperationMode zu ändern, hat leider nicht funktioniert.
Über die App habe ich den OperationMode auf Manual Mode geändert und dann über FHEM versucht ForceCharge oder StopChrge zu aktivieren. Leider auch ohne Erfolg.
Habe ich etwas übersehen? Muss ich noch etwas anpassen?

@Lazgar
Copy link
Contributor

Lazgar commented Jan 11, 2025

@JensHoeppner
Das sieht schon sehr gut aus.
ReadingsNum zielt darauf ab das Admin Passwort aus einem Reading zu holen das "InverterAdminPassword" heißt.
Wenn er das nicht findet überträgt er 0000 als Passwort.

Du musst nur im Gateway das Item "Inverter Admin Password" aktivieren, damit wird dir auch das Reading in Fhem angelegt und er überträgt das richtige Passwort.
Bildschirmfoto vom 2025-01-11 09-45-23

Warum beim Settings Lock eine 2 kommt, kann ich nicht nachvollziehen, laut Doku kann da nur 0 oder 1 kommen...
Die restlichen Werte passen? Hast du einen X3 G4 oder X3 G3?

@JensHoeppner
Copy link

@Lazgar
Wir haben einen X3 G4 im Keller und ich kann Teilerfolge vermelden.
Der Haken bei "Inverter Admin Password" war und ist gesetzt, das Reading "Inverter Admin Password" gibt es auch und ist gefüllt.

Habe nun "set SolaX_X3_5CF6B870 UnlockSettungs" gesendet. Das Reading "InverterLockState" hat sich von "2" auf "Unlocked" geändert. Auch in der Status Ansicht steht unter "Inverter Settings Lock" nun "Unlocked"

Erfolgreich getestet:
Setzen des Betriebsmodus: funktioniert.
Im manuellen Modus kann zwischen Stop / Laden / Entladen gewechselt werden
das Export Limit kann eingestellt werden.
PhasePowerBalance: kann aktiviert /deaktiviert werden

Nicht erfolgreich getestet:
OffGridMinimumSoC: Ist das in der App EPS-Einstellung MinSoC (%)? Den bekomme ich nicht geändert.

Was nicht funktioniert:
Die Readings "ExportLimit", "OperationMode", "ManuelMode", "PhasePowerBalance" werden nur beim Start des ESP aktualisiert, danach nicht mehr.
Einige andere Readings werden auch nicht aktualisiert. Bei denen halte ich es jedoch nicht für nötig, da z.B. die Seriennummer sich nicht im Betrieb ändert.

Wünschen würde ich mir noch die Werte Charger - Max. Ladestrom (A), Charger - Max. Entladestrom (A), Pgrid BIAS, Bias Power (W) einstellen zu können.

Was hat es mit "DRMFunction" und "MPPT" auf sich? Die sind neu. Was ist das?
Weißt du was "EChargeTotal" ist?
Was meinst du mit der Funktion "TargetSoC"?

Nachtrag: Nun steht im reading "InverterLockState" wieder "2". Steuern funktioniert trotzdem.

@Lazgar
Copy link
Contributor

Lazgar commented Jan 12, 2025

@JensHoeppner

Nicht erfolgreich getestet:
OffGridMinimumSoC: Ist das in der App EPS-Einstellung MinSoC (%)? Den bekomme ich nicht geändert.

Ich kann diesen Wert nur setzen wenn der WR Energie produziert, kannst du mal versuchen tagsüber zu setzen?

Was nicht funktioniert:
Die Readings "ExportLimit", "OperationMode", "ManuelMode", "PhasePowerBalance" werden nur beim Start des ESP aktualisiert, danach nicht mehr.

Diese Werte werden aus den ID Daten ausgelesen, die werden nur aktualisiert wenn man einen Set Befehl schickt (dauert ein paar sekunden), oder per default jede Stunde, je nachdem was man hier einstellt:
Bildschirmfoto vom 2025-01-12 11-12-19
Wenn du den Intervall kürzer stellst, kommen die auch öfter, kannst du das bestätigen?

Wünschen würde ich mir noch die Werte Charger - Max. Ladestrom (A), Charger - Max. Entladestrom (A), Pgrid BIAS, Bias Power (W) einstellen zu können.

Ich habe PgridBias und die Charge Max. sowohl als Value und als Set eingebaut, kannst du mal testen:
Solax-X3-test2.json

ACHTUNG: Ich habe einige bestehende Values überarbeitet und vereinheitlicht, daher kann es sein, dass du in Fhem deine DOIFs und|oder Notifys anpassen musst damit die wieder funktionieren.
Falls du für den Wechselrichter keine Statistiken erstellst, würde ich empfehlen alle Readings als auch das Attribut ReadingList in Fhem zu löschen, zu besseren Übersicht.
Ich musste auch alle Set Befehle Umbenennen um für zukünftige Updates kompatibel zu sein.

Für das Attribut SetList verwende ich aktuell das:
setList.txt

In die myUtils.pm musste ich noch die Pgrid Bias Values ergänzen:
myUtils.txt

Leider konnte ich Bias Power weder zum auslesen noch zum schreiben in der Solax Doku finden.
Ich bin mir nicht sicher ob da nicht das Export Limit greift wenn Pgrid Bias aktiviert ist?!?
Wenn du eine Info findest wo das stehen soll, immer her damit :)

Was hat es mit "DRMFunction" und "MPPT" auf sich? Die sind neu. Was ist das?

Mit der DRM Funktion hat der Energieversorger die möglichkeit deinen WR abzuschalten wenn in der Nachbarschaft zu viel Energie geliefert wird, ich konnte den Befehl über Modbus nicht setzen, nur über die App. Den Set Befehl habe ich entfernt und nur noch den Value drin gelassen. Bin mir auch nicht sicher ob das überhaupt verwendet wird in DE|AT

MPPT steht für Max Power Point Tracking soll den Ertrag erhöhen, kannst ja mal Online nachlesen, in der App heißt das ganze GMPPT, leider unterscheidet sich die App zur Modbus Doku, ich muss da selbst noch ein bisschen nachforschen wie man das richtig beschreibt.

Weißt du was "EChargeTotal" ist?

Ich bin mir da auch nicht sicher, das ist ein Wert der schon im json war als ich es übernommen hab.
In der Doku steht auch nicht viel dazu... nur EchargeTotal (Inverter AC Port)
@tobiasfaust weißt du was der Wert genau aussagt?

Was meinst du mit der Funktion "TargetSoC"?

Für einen Akku ist es eigentlich eher schlecht wenn er andauernd nur ein bisschen entladen wird und dann gleich wieder voll gemacht wird, oder auch nur ein bisschen geladen wird und dann gleich wieder komplett entladen.
Es gibt die Funktion den Akku erst wieder zu laden wenn er z.B.: 10% erreicht hat, oder eben erst wieder zu entladen wenn er 100% erreicht hat. sozusagen einen kompletten Entlade und Ladezyklus zu durchlaufen.
Da ich selbst keine Batterie habe, kann ich es nicht testen.

Nachtrag: Nun steht im reading "InverterLockState" wieder "2". Steuern funktioniert trotzdem.

In dieser Version des json ist der Aufbau der Abfragen ein anderer, wenn du trotzdem noch immer eine 2 bekommst, kannst du mir vielleicht die SW Version deines WR schicken?
Zu finden in der Solax Cloud Webseite bei deinem WR Device:
Bildschirmfoto vom 2025-01-12 11-46-18

@JensHoeppner
Copy link

@Lazgar

PV-Produktion ist wegen Schnee grade nicht möglich.
Den Test vom "OffGridMinimumSoC" muss ich dann später nachholen.
Auch "TargetSoC" ist dann wohl zu Zeit etwas schwierig zu testen.

"InverterLockState" habe ich in der neuen JSON-Version nun gar nicht mehr. Auch auf der Statusseite vom ESP nicht.
Ich konnte auch keine Werte mehr ändern.
Bin dann auf das alte JSON zurückgewechselt und habe den Inverter unlocked.
Dann konnte ich auch mit der V2 die Werte wieder ändern.
Was mir aufgefallen ist:
Setlist V1:
UnlockSettings:noArg {"KG/Wechselrichter/SolaX-X3/set/UnlockSettings ". ReadingsNum("MQTT2_SolaX_X3_E438BCD8", "InverterAdminPassword", 0000)}
Setlist V2:
UnlockSettings:noArg {"KG/Wechselrichter/SolaX-X3/set/setUnlockSettings ".ReadingsNum("MQTT2_SolaX_X3_E438BCD8","InverterAdminPassword",0000)}
Absicht oder versehen?

"ExportLimit", "OperationMode", "ManuelMode", "PhasePowerBalance" werden beim Start oder gem. dem Interval for ID Datatransmission abgerufen. Beim absenden von Set Befehlen anscheinend nicht. Habe das Interval for ID Datatransmission testweise auch auf 5 heruntergesetzt. Dann werden quasi durchgehend Daten abgerufen. Schneller als alle 7 Sekunden scheint es nicht zu gehen, wenn man alle Datenpunkte abruft.
Spricht etwas dagegen die ID Daten so oft abzurufen? Kann man die Datenleitung überlasten?

PgridBias habe ich getestet: funktioniert. Ebenso BatChargeMaxCurrent und BatDischargeMaxCurrent. Werte anzeigen und Setting geht.

PgridBias Watt kann nicht gleich dem export limit sein, sondern muss ein separater Wert sein. Ich habe dort unterschiedliche Werte drin stehen. in welchen Registern die stehen habe ich jedoch auch keine Ahnung

Softwareversionen des WR sind mit deinen identisch

@Lazgar
Copy link
Contributor

Lazgar commented Jan 12, 2025

@JensHoeppner

Hab eh geschrieben, daß ich einige Values umbenannt hab zwecks Vereinheitlichung, InverterSettingsLock heißt jetzt nur noch InverterSettings. Du musst alle umbenannten Values neu aktivieren unter modbusitemconfig....
auch die set Befehle musste ich umbenennen für zukünftige Updates, haben alle ein set davor bekommen.
setList.txt und myUtils.txt sind passend zur test2.json, funktionieren aber nicht mit der test.json

Zu Pgrid Bias Power habe ich noch eine Idee um den zu finden, komme aber heute nicht mehr dazu. Spätestens morgen Abend geb ich bescheid 🖖

@Lazgar
Copy link
Contributor

Lazgar commented Jan 18, 2025

@JensHoeppner

Ich melde mich wieder zurück, habe direkt mit dem Support von Solax kontakt aufgenommen.
Der Wert Bias Power kann für den Solax X3 G4 derzeit nicht über ModBus gesetzt werden.
Sie waren sich auch nicht sicher ob es überhaupt eine Wirkung hat wenn man es über die App setzt...
Laut diesem Artikel wird die Funktion Bias Power gar nicht vom WR unterstüzt:
https://kb.solaxpower.com/de/solution/detail/ff8080818e7ebc08018e87e97bdd241a

Nichts desto trotz haben sie ein Ticket an die Entwicklung aufgemacht, auf antwort warte ich noch...

@JensHoeppner
Copy link

@Lazgar
Vielen Dank für deine Rückmeldung.

Hab grade über die App getestet: Hat definitiv Auswirkungen. Funktioniert genau so wie gewünscht.
Die in dem KB-Eintrag angegebenen Parameter habe ich in der App teilweise auch gar nicht.
Ist aber auch nicht so tragisch. Hauptsache ich kann die Richtung steuern.

@benhubert
Copy link
Author

Hallo! Vielen Dank für euren Einsatz, ich komme leider doch erst jetzt dazu, mir das anzusehen.

Mein Wechselrichter hat erst vor kurzem ein Update bekommen, bei mir sind daher folgende Versionen im Einsatz:

  • ARM-Version: 1.45-1.15
  • DSP-Version: 1.48

Bei mir ist zudem ein HS25 Speicher im Einsatz.

Die verwendete Modbus-MQTT-Version ist 3.2.3(@development). Die Verwendete Reg-Datei ist Solax-X3-test2.json aus diesem Kommentar

Battery Items

Die Battery Items lesen bei mir folgendes aus:

Battery User SoC: 0%
Battery User SoH: 100%
Battery Target SoC: 0%

In den "Benutzereinstellungen" der Solax-App gibt es bei mir folgende Optionen, die aktuell so konfiguriert sind:

Eigenverbrauch > Min Soc (%): 50

Priorität Einspeisung > Min Soc(%): 10
Priorität Einspeisung > Charge Battery to (%): 100

Back Up Modus > Min Soc (%): 50
Back Up Modus > Charge Battery to (%): 50

Die drei o.g. Items bleiben bei mir immer unverändert, auch wenn ich den Speicher manuell vom Netz laden lasse. Zudem wäre es für meine Automation notwendig, die die genannten Einstellungen über MQTT setzen zu können.

Setzen der Konfiguration

Die Set-Funktionen scheinen bei mir keine Wirkung zu haben. Ich sende 0 an solax/solax001/set/setOperationMode, doch die Solax-Konfiguration bleibt auf Back Up Modus.

Der Item InverterSettings meldet Unlocked. Ich habe auch versucht, das Passwort an solax/solax001/set/setUnlockSettings zu schicken, aber auch das hatte keinen Effekt.

(In der Basis Config habe ich MQTT Topic Base Path: solax und Device name: solax001.)

Irgendeine Idee, woran das liegen könnte?

@benhubert benhubert changed the title Fehlende Erläuterung zu Register position Diverse Erweiterungen der Solax-X3 Items Jan 19, 2025
@Lazgar
Copy link
Contributor

Lazgar commented Jan 19, 2025

@benhubert

Ist jetzt schwierig zu sagen, Set Befehle hast du erlaubt nehme ich an.
Wenn du ein falsches passwort schickst, sollte er wieder auf Locked springen, vielleicht mal ausprobieren.

Schaust du in Fhem ob sich die Werte ändern oder am Gateway?
Kannst du mir mal dein setList hier posten?

Die drei o.g. Items bleiben bei mir immer unverändert, auch wenn ich den Speicher manuell vom Netz laden lasse.

Die haben auch nicht wirklich was miteinander zu tun...
Ich hab dir die 5 Items und Set Befehle mal hier eingebaut:

Solax-X3-test2.json

Image

Hilft aber nicht wenn keine Befehle verarbeitet werden :/

@benhubert
Copy link
Author

Enable Set Commands over MQTT ist aktiviert, ja.

FHEM verwende ich nicht. Ich habe meine eigene Software und schicke die Befehle direkt per MQTT. Getestet habe ich das über den MQTT Explorer.

Die Tabelle in deinem Screenshot kann ich in meinem Web-UI aber nicht finden. Ich tippe daher darauf, dass meine Firmware zu alt ist. Einspielen der Firmware über den Update-Button hat bei mir noch nicht geklappt. Ich melde mich nochmal, sobald ich die aktuelle Version in Verwendung habe.

@Lazgar
Copy link
Contributor

Lazgar commented Jan 20, 2025

Du kannst dir die aktuelle Firmware auch hier holen und direkt einspielen:

WebInstaller

Ich verwende derzeit eine eigene Firmware, die Tabelle kommt in einem zukünftigen Update...aber auf die aktuelle Version updaten kann kein Fehler sein :)

@tobiasfaust
Copy link
Owner

Für den X3 gibt es von @Lazgar ein aktuelles json Update im repo.
Einfach am ESP über OTA den aktuellsten Build für Firmware und Filesystem flashen

@benhubert
Copy link
Author

Hi! Letztendlich hat es dann mit der installierten Version geklappt, ich habe nie herausgefunden, was bei meinen ersten Versuchen falsch war.

In der Zwischenzeit bin ich noch auf folgende Dokumentation gestoßen:
https://kb.solaxpower.com/solution/detail/2c9fa4148ecd09eb018edf67a87b01d2
Für die Fernsteuerung sind das meiner Ansicht nach die wesentlichsten Features der Modbus-Schnittstelle. Diese funktionieren auf meinem Wechselrichter, auch wenn sie in der eigentlichen Dokumentation nicht enthalten sind. Diese Remote-Commands haben vor allem den Vorteil, dass sie nicht in das EEPROM schreiben, welches ja nur eine gewisse Anzahl an Schreibzugriffen erlaubt.

Notwendig für diese Remote-Commands ist allerdings das Schreiben in mehrere Register zugleich. Hierfür muss man sich überlegen, wie man das auf MQTT abbildet.

Unabhängig davon habe ich außerdem herausgefunden, dass mein neuer Solax-Dongle bereits Modbus über TCP beherrscht. Daher habe ich spontan ein eigenes kleines Python-Skript für mich entwickelt, dass die Verbindung zwischen Solax und MQTT herstellt. So dankbar ich für all eure Mühe bisher war, mein ESP und dieses Projekt sind in meinem Fall nun nicht mehr notwendig. Vielen Dank dennoch für all eure Mühe!

Die Remote-Command Schnittstelle in meiner eigenen Lösung sieht nun so aus, dass ich die 10 Werte als CSV-Liste in einem MQTT-Topic erwarte. Beispiele:

  • Exit remote command mode: 0,0,0,0,0,0,0,0,0,0
  • Produce 1000 W to AC: 1,2,-1000,0,120,0,0,0,300,0
  • Charge 1000 W from AC to battery: 1,2,1000,0,120,0,0,0,300,0

Diese transformiere ich dann in die entsprechenden 15 Modbus-Felder, wobei manche davon in 32-Bit-Form gebracht werden müssen, andere nicht. Soweit als Inspiration für euch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants