Verständnis Modbus Automation

Hallo zusammen,

ich fange gerade mit Home Assistant an und habe eine Verständnisfrage.

Ich habe eine PV Anlage mit Fronius Gen24 Umrichtern und einer BYD HVS Batterie. Da die Batterie regelmäßig den höchsten, bzw. niedrigsten Ladestand sehen muss, um das Balancing zu starten, und weil ich den Ladestrom begrenzen möchte, möchte ich hier eine Automatisierung einsetzen.

Das Verhalten wird über Modbus Register gesteuert die im Fronius Umrichter gesetzt werden.

Ich frage mich jetzt zum einen ob diese Modbus Register Ihren Zustand behalten wenn ich sie geschrieben habe, oder ob andere Mechanismen sie ändern, z.B. der Umrichter selber. In dem Fall müsste ich sie ja regelmäßig prüfen und ggf. neu schreiben.

Ich bin mir auch nicht sicher ob die verschiedenen Automationen die ich benötige evtl. gegeneinander arbeiten.

Grundsätzlich soll immer wenn die Batterie geladen wird der Ladestrom begrenzt werden - je voller die Batterie, desto geringer der Ladestrom.

Im Winter soll einmal alle 1-2 Wochen die Entladung gesperrt, die Batterie komplett vollgeladen werden und ein paar Stunden in diesem Zustand stehen bleiben damit der Balancer arbeiten kann. Danach kann die Entladung wieder freigegeben werden.

Im Sommer analog zu oben, nur soll die Batterie hier regelmäßig auf 5% entladen werden.

Ich brauche also eine Automation die z.B. alle 5 Minuten den Ladezustand prüft und ein Skript aufruft das den Ladestrom auf den passenden Wert begrenzt.

Zusätzlich eine Automation die nur in den Wintermonaten läuft und die Entladung sperrt bis der 100% Balancer fertig ist. Eine weitere Automation die in den Sommermonaten läuft und die Ladung sperrt bis der 5% Balancer fertig ist.

Kommen diese Automationen sich in die Quere? Sollte ich besser drei separate Automationen für Sommer, Winter und Übergangszeit schreiben? Oder kann eine alles abdecken? Man sollte Automationen ja einfach halten…

Ach ja, und später soll noch netzdienlich geladen werden, also wenn der Wetterbericht sagt: es gibt genug Sonne heute, soll die Ladung in die Mittagszeit verlegt werden.

Bin also gerade unsicher wie man das ganze aufbauen kann. Aber vielleicht hat ja jemand schon sowas ähnliches.

Danke Euch

Der Gärtner

Moin Moin,

Willkommen im Forum :upside_down_face:

Was Modbus angeht bin ich raus.

Was die Automationen angeht bin ich guter Dinge, dass man da was gebastelt bekommt :wink:

Hast du den Wechselrichter schon eingebunden Fronius - Home Assistant

Man müsste erstmal sehen welche Entitäten deine Geräte bereitstellen. Ggf. braucht’s dann kein direktes Modbus <> HA, wenns sich das über die Entitäten steuern und auslesen lässt.

WiE möchtest du Sommer/Winter triggern? Das Datum sagt ja nix über Wetter und Co. aus…

Hallo Dampf,

danke für die nette Aufnahme.

Modbus ist bei der Steuerung der Batterie der Standard. Soweit ich das sehen kann kommt man so detailliert auch nicht mit der normalen Integration (ja, ist eingebunden) an die Steuerung. Ist aber auch kein Hexenwerk, erklärt wird alles z.B. hier.
Es gibt Leute die sich da schon was gebastelt haben, aber ich habe noch keinen gefunden der seine HA Automationen teilt.

Sommer/Winter triggern…da sagst Du was. Wird vermutlich recht komplex.
Vielleicht fange ich erstmal mit drei Automationen für Standard, Vollladen und Leersaugen an, die ich von Hand umschalte.
Evtl. kann man ja vielleicht zumindest am Ende der Voll/Leer Automation auf Standard umschalten. Automationen aus eine anderen Automation heraus an/ausschalten geht, oder?

Ich denke ich fange jetzt erst mal mit den Skripten an die den jeweiligen Ladezustand steuern.

Evtl. kannst du dir was über online Wetterdaten oder einem Außensenor basteln

Ja, es geht Automatisierung An/Aus/ neu laden / auslösen / Neustarten.

Ich glaub in HA gibts nix was nicht geht

Uh, wie zitiert man hier?

Man könnte Zähler laufen lassen. Einen der zählt wann 100% das letzte Mal gesehen wurde und einen der zählt wann 5% das letzte Mal gesehen wurde. Wenn einer der beiden >14 Tage ist startet die jeweilige Automation, kehrt nach deren Beendigung zur Standardregelung zurück und resettet den jeweiligen Zähler.
Ist mir nur jetzt noch zu kompliziert, ich habe noch keine Zeile YAML geschrieben…

Einfach den Text markieren den du zitieren möchtest, dann ploppen die Zitieren-Option daran auf.

YAML ist oftmals gar nicht nötig. Man kann mittels der Bausteine im Automatisierungseditor sehr sehr viel direkt über das UI machen. Und was du dann zusammengeklickt hast, kannst du dir anschließend als YAML Code anzeigen lassen.

Moin, ich bin auch neu und profitiere von eurer Hilfe! Hier im NordWesten scheint gelegentlich die Sonne, deswegen habe ich den Profi Fronius und BYD als Stromerzeuger gewählt.

Hier kannst Du Dich in die Register von modbus einlesen:

Wenn Du angepasste Skripte oder meine Automationen als YAML-Datei haben möchtest, give me a call …

Ich habe davon abgesehen, weil Fronius auch die Ladeintervalle mit berechnet und über den Energiekosten-Assisten habe ich das Rundumsorglospaket. Das wir dann vielleicht mal ersetzt:

Viel Spaß beim basteln!

1 „Gefällt mir“

Hi Dampf,

wie kommunizieren wir denn bezüglich Skripten und Automationen? Den YAML Code kann man hier bequem reinkopieren, ich denke das ist besser als Screenshots vom visuellen Editor, oder?

Ich habe am Wochenende etwas rumgebastelt. Zum einen habe ich mir ein Skript geschrieben, dass das Entladen der Batterie über zwei Modbus Register abschaltet. Dann ausgeführt und bis jetzt bleiben die Register gesetzt. Wenn das so bleibt ist die Frage schon mal beantwortet.

Btw. Wie erstelle ich eigentlich eine Schaltfläche die ein Skript ausführt? Habe es jetzt über das Menu ausgeführt.

Dann habe ich mir weitere Skripte geschrieben die die Ladeleistung begrenzen und die ich über die Automation aufrufen möchte. z.B:

alias: Standard 95% 0,05c
sequence:
  - data:
      slave: 1
      address: 40348
      value: 1
      hub: gen24
    action: modbus.write_register
  - data:
      address: 40356
      slave: 1
      hub: gen24
      value: 5
    action: modbus.write_register
mode: single
icon: mdi:battery-charging

Wie kann ich eigentlich Kommentare in die Skripte einfügen? Habs mit # am Anfang der Zeile versucht, aber wenn ich speichere und das Skript wieder öffne ist alles mit # weg.

Dann im visuellen Editor den Anfang der Automation zusammengeklickt aber hier als YAML eingefügt.

alias: Standard Batterie Ladestrombegrenzung
description: ""
triggers:
- type: battery_level
device_id: 1f68df770925f...
entity_id: 623545e1489a...
domain: sensor
trigger: device
below: 95
conditions: []
actions:
- action: script.standard_95_005c
metadata: {}
data: {}
mode: single

Hier habe ich nun Fragen. Die Automation soll auf verschiedene Ladzustände mit verschiedenen Skripten reagieren. Wie setze ich das am besten um? Hier habe ich nun nur auf Ladezustand <95% geprüft und führe dann das Skript aus, das den Ladestrom auf 0,05c (500W) begrenzt.
Wie bekomme ich die anderen Zustände automatisiert? Bei <90% soll das Skript für 0,1c ausgeführt werden, usw.
Arbeitet man mit IF…THEN Abfragen? Ist es hier besser auf “kleiner als” zu prüfen oder auf “größer als”. Macht die Reihenfolge der Abfragen einen Unterschied?

Danke noch an joachim-xo: Register habe ich ja und jetzt hat es mich gepackt und ich will selber wissen wie das geht.

Definitiv Yaml, mit einem Screenshot lässt sich relativ wenig anfangen.

Einfach eine Entität Karze aufs Dashboard legen mit dem Script als Entität. Oder ein Button als als Tab Aktion, dann das Script ausführen.

Wenn Du Automaionen oder Scripte in der GUI erstellen tust, gar nicht.
Du hast nur die globale Beschreibung zur Verfügung.

Du kannst aber auch altmodisch die Scripte und Automationen direkt in den Yaml Dateien erstellen.
Dann kannst Du jede einzelne Zeile kommentieren. Dann lassen sich diese aber nicht mer in der GUI bearbeiten.

Was das Thema unterschiedliche Auslöser angeht.
Du kannst mehrere Auslöser verwenden. Vergibst jedem Auslöser eine Auslöser ID

Als Aktion wählst Du dann den Baustein Auswählen.
Und für jeden Auslöser der unterschiedliche Aktionen ausführen soll, dann eine Option mit der Bedingung Ausgelöst durch.

Gruß Osorkon

1 „Gefällt mir“

Ich habe sowohl eine Entität Karte als auch eine Knopf (Button) Karte probiert. Bei beiden muss ich nach dem Drücken der Karte noch in dem sich öffnenden Menu die Aktion starten. Gibts keine Karte die beim Drücken einfach die Aktion ausführt?

Entitäten Karte

Button Karte
Unter Interaktionen auf Umschalten umstellen

Gruß Osorkon

Hmmm, Danke, aber kann es sein, dass das Skript dann immer wieder ausgeführt wird? Dauerfeuer sozusagen?

Ich hatte noch meine normale Entitäten Karte zusätzlich auf dem Dashboard. Die konnte ich aber nicht mehr benutzen nachdem ich einmal auf die “Button/Umschalten” Karte gedrückt hatte.

Nein, es wird immer nur einmalig ausgefüllt. Egal ob über die Button Karte oder die Entitäten Karte ausgeführt.

Script

Gruß Osorkon

Ich weiß nicht ob ich das falsch gemacht habe oder ob das nicht der richtige Weg ist. Aber ich denke das soll so nicht sein?

alias: Standard Batterie Ladestrombegrenzung
description: „“
triggers:

type: battery_level
device_id: 1f68df770925f8a2dcd4395850005eb5
entity_id: 623545e1489a393c691cc59875c81377
domain: sensor
trigger: device
id: „55“
above: 55

type: battery_level
device_id: 1f68df770925f8a2dcd4395850005eb5
entity_id: 623545e1489a393c691cc59875c81377
domain: sensor
trigger: device
above: 80
id: „80“

type: battery_level
device_id: 1f68df770925f8a2dcd4395850005eb5
entity_id: 623545e1489a393c691cc59875c81377
domain: sensor
trigger: device
above: 90
id: „90“
conditions:

condition: trigger
id:

„55“

condition: trigger
id:

„80“

condition: trigger
id:

„90“
actions:

action: script.standard_50_05c
metadata: {}
data: {}

action: script.standard_80_02c
metadata: {}
data: {}

action: script.standard_90_01c
metadata: {}
data: {}
mode: single

Ich würde gerne alles in einer Automation machen, aber ich weiß nicht wie das geht.

Also habe ich mehrere Automationen geschrieben, und heute hatte ich auch genug Sonne sie zu testen. Funktioniert :slight_smile: !

Hier eine der Automationen, leider sind die ganzen Einrückungen weg. Wie kopiere ich die richtig aus HA hier hin?

alias: 90-95% 0,05c
description: „“
triggers:

type: battery_level
device_id: 1f68df770925f8a2dcd4395850005eb5
entity_id: 623545e1489a393c691cc59875c81377
domain: sensor
trigger: device
above: 90
conditions:

type: is_battery_level
condition: device
device_id: 1f68df770925f8a2dcd4395850005eb5
entity_id: 623545e1489a393c691cc59875c81377
domain: sensor
below: 95
actions:

action: script.standard_90_01c
metadata: {}
data: {}
mode: single

Vermutlich werde ich aber doch mit IF THEN Abfragen arbeiten müssen. So erfordert das zuviel Eingriff.

Wenn Du auf unterschiedliche Auslöser mit unterschiedlichen Aktionen reagieren willst, dann als Aktion den Baustein Auswahl verwenden.

Hier mal ein Beispiel:

Gruß Osorkon

Hi Osorkon,

Danke dafür, ich habe allerdings Probleme das für mich umzusetzen. Ich habe mir das mehrmals durchgelesen und versucht sinnvolle IDs zu finden, aber bisher bin ich gescheitert.

Ich stelle das jetzt erst mal zurück und versuche ein anderes Problem zu lösen.
In einem der Register werden Bits gesetzt. Bit 1 für Ladebegrenzung, Bit 2 für Entladebegrenzung. Das resultiert in Dezimalwerten 0, 1, 2 und 3. Wenn ich allerdings zB. eine Entladebegrenzung mit Dezimal 2 setze und später die Automation zusätzlich eine Ladebegrenzung setzen möchte, also Dezimal 1, dann überschreibt sie mir natürlich die 2.

Ich werde also mal HACS installieren weil es dort eine Integration gibt um Modbus Register bitweise zu setzen: Modbus Write Bit

Bin aber happy mit dem was ich bis jetzt geschafft habe.

Modbus Write Bit hat vieles einfacher gemacht und erlaubt mir die Register genau so zu steuern wie ich es benötige. Allerdings habe ich gemerkt das der Modbus einen Moment braucht um die Werte korrekt zu setzen.
Man muss also bei den Automationen aufpassen das nicht in schneller Folge geschrieben wird. Eine Verzögerung von 10 Sekunden vor Schreibvorgängen hat das Problem bei mir behoben.

Ich habe mir inzwischen eine LLM als Ghostwriter genommen und erstelle vor allem das Konzept der Automationen und suche die Fehler. Trotzdem lerne ich viel über HA.

Die Laderegelung ist nach einigen Fehlversuchen auf Zellspannungsregelung umgebaut. Eine weitere HACS Integration liefert mir die jeweils höchste Zellspannung, bei der Überschreitung einer einstellbaren Spannung reduziere oder pausiere ich die Ladeleistung.
Funktioniert gut, bin an der Feinabstimmung.

1 „Gefällt mir“