GELÖST: PV-Batterie über ESPHome Ein- Ausschalten

berndh

New member
Hallo zusammen!

Ich stehe vor einem Automatisierungsproblem.
Vorweg: Mein Growatt Wechselrichter (WR) mit Batterie (BMS) wird mit einem ESPHome USB Stick ausgelesen, die Daten kommen alle in HA an.
Und zwar möchte ich die Batterie zu bestimmten Zeiten, unter bestimmten Voraussetzungen ausschalten.
1708850580890.png
Dies kann ich manuel, indem ich bei dem Auswahlmenü eine der 4 Möglichkeiten auswähle. 2 Sekunden darauf wird das auch vom WR, bzw. BMS umgesetzt.
Also ich kann den WR sowie die Batterie EIN- und AUS schalten.

1708850598939.png
Hier, wie die Daten mittels ESPHome ankommen, welche ich aus Register 00 auslesen und auch schreiben kann:
YAML:
select:
  - platform: modbus_controller
    name: "${name} Status"
    address: 00
    value_type: U_WORD     
    optionsmap:
      "Inverter ON": 1
      "Inverter OFF": 0
      "Battery ON": 3
      "Battery OFF": 2

Wie kann ich das automatisieren? Ich muss ja irgendwie den Wert 0, 1, 2, 3 eingeben lassen, in diesem Fall 2 und 3, da ich nur die Batterie ausschalten brauche.
Danke schonmal für Eure Hilfe!
 
Erledigt!
Geht doch ganz normal zum auswählen in den Automationen. Ich hab einfach viel zu kompliziert gedacht...
1708926872554.png
 
Hallo berndh,

das ist eine gute Idee. Ich hab da gleich eine Frage, auf die ich schon länger keine Antwort finden kann.

Ich lese das Modbus register meines Growatt MOD 6000 mit APX Speicher via ESPhome aus. (Ich kenne die Versionen des Modbus Protokolls von Growatt). Dabei klappt das Auslesen der Inverterdaten prima. Leider bekomme keine Anzeigewerte für den SOC des Speichers (0-100%) mit der beschriebenen Adresse 1014.

Wie bist du an die Modbus Daten des Speichers gekommen? Ich verzweifle schon eine Weile und lese immer wieder, dass das Protokoll nicht für alle WR gleich ist.

VG SirL
 
Bei mir ist es 3171 für SoC:

- platform: modbus_controller
name: "${name} Battery SoC"
address: 3171
register_type: "read"
unit_of_measurement: "%"
device_class: POWER_FACTOR
state_class: measurement
entity_category: diagnostic
icon: mdi:flash
value_type: U_WORD
accuracy_decimals: 2
filters:
- multiply: 1

In einem PDF habe ich folgende Info stehen.
Da es viele Funktionen aber mehrmals gibt, musste ich auch viel probieren.
google mal "growatt modbus pdf".
1720501839351.png
 
Bitte entschuldige meine späte Antwort. Adresse 3171 ist auch die Richtige für den SoC beim Growatt MOD. Vielen Dank!

Es gibt in der Tat mehrere doppelte Belegungen bei den Registern. Je nachdem welche der verschiedenen Modbus pdf "Dokus" man aus dem Netz verwendet, kann man die korrekte Adresse für meinen WR finden oder auch nicht. Bei mir hat es länger gedauert ;-)
 
YAML:
  - platform: modbus_controller
    name: "${name} Battery SoC"
    address: 3171
    register_type: "read"
    unit_of_measurement: "%"
    device_class: POWER_FACTOR
    state_class: measurement
    entity_category: diagnostic
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
    - multiply: 1
 
Hallo zusammen,
die folgenden Modbus Register zur Speicherüberwachung und zur Einspeisung sind auch noch interessant:

YAML:
  - platform: modbus_controller
    name: "${friendly_name} battery discharge power"
    address: 3178
    register_type: "read"
    unit_of_measurement: W
    device_class: power
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} battery charge power"
    address: 3180
    register_type: "read"
    unit_of_measurement: W
    device_class: power
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} battery discharge total energy"
    address: 3182
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} battery charge total energy"
    address: 3184
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} energy to grid today"
    address: 3071
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} energy to grid total"
    address: 3073
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
 
@berndh Es wäre auch noch sehr interessant, wenn Du Deinen Code zum Schreiben/Kommandieren des WR bzw. Speichers einfügen würdest. Dein erster Beitrag oben scheint mir noch nicht vollständig gewesen zu sein.

Da müsste noch der Befehl zum Schreiben fehlen, wie z.B.:
YAML:
register_type: "write"

War die Adresse wirklich "00"?
 
Das ist der Code Schnipsel, wie ich meinen WR und die Batterie von HomeAssistant aus steuern kann. Ich denke "write" wird verwendet, wenn man Uhrzeiten in den WR schreiben möchte.

YAML:
select:
  - platform: modbus_controller
    name: "${name} Status"
    address: 00
    value_type: U_WORD     
    optionsmap:
      "Inverter ON": 1
      "Inverter OFF": 0
      "Battery ON": 3
      "Battery OFF": 2
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.387
Beiträge
53.333
Mitglieder
5.175
Neuestes Mitglied
cctru
Zurück
Oben