-
Notifications
You must be signed in to change notification settings - Fork 25
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
Comments
Hi |
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? |
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
Für die Steuerung benötige ich aus den
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 |
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 👍 |
Oh super! Du kannst mir gerne einen Pull Request schicken sobald du etwas hast, dann kann ich gerne testen. |
@Lazgar Ich fände die Erweiterung um Set-Befehle auch toll |
Hier eine Testversion. Alle Einstellungen können bei mir gesetzt werden ohne vorher ein Unlock zu senden. In Fhem habe ich folgendes im Attribut setList: OperationMode:SelfUse,Feedin,Backup,Manuel,PeakShaving,TOU {"KG/Wechselrichter/SolaX-X3/set/OperationMode ".SolaxValueMapping($EVTPART1)} Fürs übersetzen in Werte die der Wechselrichter versteht, habe ich mir in 99_myUtils.pm das folgende definiert: Nach einem Neustart dauert es ein bisschen bis er Befehle ausführt, und einige können nur verarbeitet wenn der Wechselrichter läuft. P.s.: minimum Interval für die Live Daten sind 5 Sekunden. |
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. @tobiasfaust Wenn im json der letzte Value bei den Live-Daten ein Mapping hat, schmiert mir der ESP permanent ab. Kannst du das nachstellen? |
Man imho den Inverter nur einmal entsperren, sprich: das passwort in register 0 schreiben. Danach nie wieder. |
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? |
@tobiasfaust Ich konnte den Fehler nicht mehr reproduzieren, lag wohl an mir :D |
@Lazgar |
@JensHoeppner 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. Warum beim Settings Lock eine 2 kommt, kann ich nicht nachvollziehen, laut Doku kann da nur 0 oder 1 kommen... |
@Lazgar 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: Nicht erfolgreich getestet: Was nicht funktioniert: 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? Nachtrag: Nun steht im reading "InverterLockState" wieder "2". Steuern funktioniert trotzdem. |
Ich kann diesen Wert nur setzen wenn der WR Energie produziert, kannst du mal versuchen tagsüber zu setzen?
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:
Ich habe PgridBias und die Charge Max. sowohl als Value und als Set eingebaut, kannst du mal testen: 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. Für das Attribut SetList verwende ich aktuell das: In die myUtils.pm musste ich noch die Pgrid Bias Values ergänzen: Leider konnte ich Bias Power weder zum auslesen noch zum schreiben in der Solax Doku finden.
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
Ich bin mir da auch nicht sicher, das ist ein Wert der schon im json war als ich es übernommen hab.
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.
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? |
PV-Produktion ist wegen Schnee grade nicht möglich. "InverterLockState" habe ich in der neuen JSON-Version nun gar nicht mehr. Auch auf der Statusseite vom ESP nicht. "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. 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 |
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.... 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 🖖 |
Ich melde mich wieder zurück, habe direkt mit dem Support von Solax kontakt aufgenommen. Nichts desto trotz haben sie ein Ticket an die Entwicklung aufgemacht, auf antwort warte ich noch... |
@Lazgar Hab grade über die App getestet: Hat definitiv Auswirkungen. Funktioniert genau so wie gewünscht. |
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:
Bei mir ist zudem ein HS25 Speicher im Einsatz. Die verwendete Modbus-MQTT-Version ist Battery ItemsDie Battery Items lesen bei mir folgendes aus:
In den "Benutzereinstellungen" der Solax-App gibt es bei mir folgende Optionen, die aktuell so konfiguriert sind:
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 KonfigurationDie Set-Funktionen scheinen bei mir keine Wirkung zu haben. Ich sende Der Item (In der Basis Config habe ich Irgendeine Idee, woran das liegen könnte? |
Ist jetzt schwierig zu sagen, Set Befehle hast du erlaubt nehme ich an. Schaust du in Fhem ob sich die Werte ändern oder am Gateway?
Die haben auch nicht wirklich was miteinander zu tun... Hilft aber nicht wenn keine Befehle verarbeitet werden :/ |
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. |
Du kannst dir die aktuelle Firmware auch hier holen und direkt einspielen: Ich verwende derzeit eine eigene Firmware, die Tabelle kommt in einem zukünftigen Update...aber auf die aktuelle Version updaten kann kein Fehler sein :) |
Für den X3 gibt es von @Lazgar ein aktuelles json Update im repo. |
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: 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:
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. |
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:In der Modbus Doku, die ich von Solax erhalten habe, steht, dass die
InverterSN
in den Feldern0x0000-0x0006
zu finden sind, 14 Chars bzw. 7 Felder vom Typuint16
.Von der Anzahl her passt es, aber wieso startet der Array bei
3
und nicht bei0
? Ähnlich ist es bei den darauffolgenden Feldern.Wäre super, wenn mir das jemand erläutern könnte.
The text was updated successfully, but these errors were encountered: