Kommentare: Fronius & BYD Akku über Modbus steuern, Home Assistant
Fragen / Kommentare zu Fronius & BYD Akku über Modbus steuern, Home Assistant
(neueste zuerst)Hi, ich habe ein Problem mit der Umsetzung. Das script Force Charging habe ich so angelegt: alias: Force charging sequence: - data: slave: 1 address: 40348 value: 2 hub: gen24 action: modbus.write_register - data: address: 40355 slave: 1 hub: gen24 value: "{{ 65536 - (states('input_number.charging_power')|int(0) / states('sensor.wchamax')|int(1) * 10000)|int }}" action: modbus.write_register - data: address: 40356 slave: 1 hub: gen24 value: "{{ (states('input_number.charging_power')|int(0) / states('sensor.reading_battery_settings').split(',')[0]|int(1) * 10000) | int }}" action: modbus.write_register - data: slave: 1 address: 40350 value: 9900 hub: gen24 action: modbus.write_register mode: single icon: mdi:battery-charging Sobald ich gespeichert habe, sieht das beim nächsten öffnen dann so aus: alias: Force charging sequence: - data: slave: 1 address: 40348 value: 2 hub: gen24 action: modbus.write_register - data: address: 40355 slave: 1 hub: gen24 value: >- {{ 65536 - (states('input_number.charging_power')|int(0) / states('sensor.wchamax')|int(1) * 10000)|int }} action: modbus.write_register - data: address: 40356 slave: 1 hub: gen24 value: >- {{ (states('input_number.charging_power')|int(0) / states('sensor.reading_battery_settings').split(',')[0]|int(1) * 10000) | int }} action: modbus.write_register - data: slave: 1 address: 40350 value: 9900 hub: gen24 action: modbus.write_register mode: single icon: mdi:battery-charging Ich bekomme immer beim ausfführen: Fehler: value must be at least 0 @ data['value'][0] Was mache ich falsch? Vielen Dank für das script!
Moin, Ich war eben auch am basteln und stand vor der gleichen Herausforderung. Lösung bei mir: Der Sensor für wchamax heißt bei mir im HA „sensor.storage_wchamax“ (im Skript steht sensor.wchamax). Schau mal in deinen Entitäten, wie er bei dir heißt und ändere dies manuell im Skript ab.
Beitrag erstellt von anonym
ich bin soweot das erste Script zu erstellen. Leider kann nicht gespeichert werden folgende Meldung: Message malformed: extra keys not allowed @ data['sequence'][0]['mode'] hier der Yaml code: (die register sind auf den Fronius symo Hybrid angepasst) alias: Reset charging sequence: - service: modbus.write_register data: slave: 1 address: 40309 value: 0 hub: fronius modbus - service: modbus.write_register data: address: 40316 slave: 1 value: 10000 hub: fronius modbus - service: modbus.write_register data: slave: 1 address: 40311 value: 500 hub: fronius modbus - service: modbus.write_register data: slave: 1 address: 40317 value: 10000 hub: fronius modbus mode: single icon: mdi:home-battery
schaut so aus als wäre vor mode und icon eine extra Einrückung? mode und ico sollte auf der selben Ebene wie alias sein ..
Beitrag erstellt von Bernhard
Erstmal vielen Dank für die geniale Anleitung, ich hätte aber noch eine Frage zu dem Input-Helfer für die Ladeleistung. Und zwar wie man auf die in der Anleitung verwendeten Werte 500 bis 5000 kommt, meines Verständnisses nach müsste ja am Ende ein Prozentwert übergeben werden? Was genau wird denn mit {{ (states('input_number.charging_power')|int(0) / states('sensor.reading_battery_settings').split(',')[0]|int(1) * 10000) | int }} ausgerechnet, wenn ich den Input-Helfer wie in der Anleitung erstelle und dann z.B. 5000 einstelle? Bei mir wird dann das Register, wenn ich es richtig sehe, nämlich auf 0 gestellt.
Der Template-Sensor rechnet Prozent aus: Ladeleistung / Akku-Kapazität * 10000 z.B. bei einer Akkukapazität von 10240Wh und einer Ladeleistung von 500Watt: 10240/500 * 10000 = 488 Sollte 4,88 % bedeuten.
Beitrag erstellt von Bernhard
Hallo, vielen Dank für die Anleitung! Fast alles hat wie beschrieben funktioniert. Ich habe jedoch das Problem, dass beim Aktivieren des Scripts "FastCharging" mein Akku mit voller Leistung geladen wird. Wenn ich einen Wert über input_number setze und dann das Script "Limit Charging" ausführe, passiert leider nichts. Hat vielleicht jemand eine Idee, woran das liegen könnte? Viele Grüße! Andre
Hey, ich habe leider das gleiche Problem. Folgendes ist mir aufgefallen: Wenn der Akku mittels Skript erzwungen geladen wird und ich danach das Skript "Charge-limit" ausführe, wird egal welche Zahl unter input_number.charging_power erfasst war die Ladeleistung auf 500 w gestellt. Wenn ich das Skript "Charge-limit" als erstes ausführe und danach erst "Force charging". Klappt es manchmal (z. B. bei Eingabe von 2000) und manchmal nicht (z. B. bei Eingabe von 3570). Mache ich/wir (gruß an Andre) etwas falsch? Gibts hier eine Lösung? LG Robert
Beitrag erstellt von anonym
Hallo Andre, Hallo Robert, hilft das Ausführen von "Reset Charging" vor dem Start von z.B. Force Charging oder Charge Limit?
Beitrag erstellt von Bernhard
Hallo, habe es eben probiert. 1. Reset charging Skript 2. 1500w bei Input……. 3. charge-Limit Skript 4. force charging 5. Abbruch, da die Ladeleistung auf über 2kw gestiegen ist 6. nochmaliger Test, Ladeleistung steigt aufs Maximum an Ich glaube dass der Akku immer mit voller Leistung lädt, egal was ich eingebe. Wenn ich das Skript charge-Limit nach force charging ausführe, wird wie gesagt immer auf 0,5kw limitiert - egal was ich unter Input….. eingegeben habe. Hast du noch einen Tipp? LG Robert
Beitrag erstellt von anonym
Nach dem Reset sollte nur ein Script für die jeweilige Aktion ausgeführt werden. Lass mal 3 weg, force charge sollte eigenständig die 1500 von Input verwenden.
Beitrag erstellt von Bernhard
Hallo Bernhard, danke für deine Hilfe. Leider klappt dass auch nicht, habe es wie oben beschrieben getestet, jedoch wie vorgeschlagen ohne dem charge-Limit Skript. Getestet wurde zb 1100 als Input, die Leistung stieg jedoch wieder weiter an, habe dann bei 2800 wieder abgebrochen. Was kann ich denn kontrollieren um auf einen Fehler auf meiner Seite zu kommen? Der battery reading Sensor meldet (meiner Meinung nach) korrekte Werte zb im Hinblick auf die Speichergröße. Lg Robert
Beitrag erstellt von anonym
Hallo Robert, sorry da hätte ich schon früher nochmal genauer testen sollen. Ich habe das Template "alias: Force charging" anhand der Dokumentation nochmal neu aufgebaut und hier aktualisiert: Eventuell kannst du damit nochmal testen, ob es jetzt funktioniert. Wäre super, wenn du kurz ein Feedback geben könntest, ob es mit dem neuen Template klappt?
Beitrag erstellt von Bernhard
Hallo Bernhard, danke für deine Hilfe/Arbeit! :) Die ersten paar Tests waren alle erfolgreich. Ich denke also dass es nun funktioniert. Ablauf: 1. Skript "Reset charging" ausführen 2. Gewünschte Leistung bei "input_number.charging_power" erfassen 3. Skript "Force charging" (in aktualisierter Version) ausführen 4. Klappt! Ich habe auf Basis deiner Änderungen eine zweite Version des Skripts "Force charging erstellt". Dazu war noch die Anlage eines weiteren Sensors (sensor.wchamax) nötig. Diesen habe ich mit Infos aus der verlinkten Github Seite erstellt. -> "{{ states('sensor.reading_battery_settings').split(',')[0]|int(0) }}" Sollte so passen denke ich? Wenn ja, solltest du es in der Anleitung ergänzen, da ohne diesen Sensor das Skript bei mir nicht funktioniert hat. Wofür ist dann das Skript "Charge-limit" eigentlich vorgesehen? Um die Leistung (Ladung und Entladung?) generell zu limitieren? Kann dadurch bspw. die Ladung des Akkus durch die PV Anlage oder aber die Entladeleistung beschränkt werden? Nochmals danke für diese Anleitung und deine Hilfe! LG Robert
Beitrag erstellt von anonym
All real registers +1 except 40345, means: 40349 StorCtl_Mod, 40356 OutWRte 40357 InWRte From fronius doc: 40349 40349 1 RW 0x03 0x06 0x10 StorCtl_Mod 40356 40356 1 RW 0x03 0x06 0x10 OutWRte 40357 40357 1 RW 0x03 0x06 0x10 InWRte Fault comes from HA 40345 declaration i guess. Wbr,
Danke für die super Anleitung ich möchte gerne das Register ChaGriSet auslesen was muss ich dazu in den Template Sensor für einen Code schreiben (bin leider nicht der Programmierer), bei den andren konnte ich es mir durch die Beispielcodes zusammenreimen. Ich hätte diesen Ansatz getroffen: {% set ChaGriSet_mod= states('sensor.reading_battery_settings').split(',')[15] | int%} {{ "NETZ AUS" if ChaGriSet_mod == 0 else "NETZ EIN" if ChaGriSet_mod == 1 else else "Fehler" }} Ich bekomme jedoch folgende Anzeige in der Vorschau: Dieses Template überwacht keine Ereignisse und wird nicht automatisch aktualisiert. Danke für deine Unterstützung
Hallo, auf Anhieb sehe ich 2mal else: am Ende der vorletzten und zu Beginn der letzten Zeile. Ansonsten kannst dich mal schrittweise nähern indem du mal nur {{ChaGriSet_mod}} ausgibts und die Ausgabe nach und nach erweiterst.
Beitrag erstellt von Bernhard
Servus, vielen lieben Dank für die rasche Rückmeldung! Du hattest natürlich recht mit dem else richtig schaut das Yaml so aus: {% set ChaGriSet_mod= states('sensor.reading_battery_settings').split(',')[15] | int%} {{ "Netzladen erlaubt" if ChaGriSet_mod == 0 else "Netzladen nicht erlaubt" if ChaGriSet_mod == 1 else "FEHLER" }} Schönen Tag noch, sonnige Grüße aus Österreich
Beitrag erstellt von anonym
Hallo! Danke für die tolle Anleitung. Funktioniert, jedoch wenn ich den Akku aus dem Netz laden möchte, lädt der Akku nur mit deutlich unter 1kW. Gesetzt habe ich aber 40356 = 10000 (also 100%). Ist noch ein anderes Limit einzustellen?
Fronius und BYD Akku über Modbus steuern, vielen Dank es ist eine super Beschreibung, auch die Detail finde ich echt Top!!! Ich hätte eine Frage zum Punkt: „Für das Setzen der Register bietet sich ein Skript an: "Einstellungen", "Automatisierungen & Szenen", "Skripte", "NEUES SKRIPT ERSTELLEN":“ Welchen Punkt muss ich wählen bei Sequenz Aktion hinzufügen, ich habe schon einiges probiert wie Szene usw. wäre über eine Unterstützung sehr dankbar.
Danke für dein Feedback. Als Aktion für die Sequenz benötigst du hier meist: "Modbus: Register schreiben" oder alternativ den vorbereiten YAML-Text kopieren und gegebenenfalls anpassen.
Beitrag erstellt von Bernhard
Danke für die rasche Antwort, ich habe mich wahrscheinlich nicht gut ausgedrückt. Ich würde gerne deinen Code verwenden (welcher unter Inhalt steht), aber ich weiß nicht, wie ich den Yaml einfügen kann. Wenn ich beim Punkt Sequenz hinzufügen anklicke, geht ein Fenster auf wo ich zu Auswahl folgende Punkte habe: Auswählen/Bedingung/Dienste Ausführen usw. welchen Punkt muss ich nehmen um den Inhalt „alias: Reset charging sequence: - service: modbus.write_register… einfügen zu können. Danke Liebe Grüße Roman
Beitrag erstellt von anonym
Rechts oben im Editor auf Ebene der Überschrift, bei den 3 Punkten "⁝" und "als YAML bearbeiten"
Beitrag erstellt von Bernhard
Danke für die rasche Antwort, das war die Lösung. Wirklich sehr gute Beschreibung vielen Dank dafür!!! Du kannst damit sicher nicht nur mir sondern vielen helfen, den Speicher gut zu nutzen.
Beitrag erstellt von anonym
Beitrag erstellt von FlyByWire
Beitrag erstellt von Bernhard
Beitrag erstellt von FlyByWire