Problem mit automation für nulleinspeisung. Marstek b2500

Ich habe Simons YT Video “Marstek - GÜNSTIGER PV Speicher für Home Assistant? (100LOKAL über MQTT! :light_bulb:)“ gesehen und den dazugehörigen Blogeintrag gelesen und scheitere trotzdem bei der Einrichtung.

Ich habe den Marstek B2500 erfolgreich in den lokalen Modus geschaltet und erhalte seine Werte in HA. In Simons Template habe ich meine Shelly Daten eingegeben. In der Automation habe ich ebenfalls, sofern ich das beurteilen kann, überall meine Daten eingefügt. Aber die Automation will einfach nicht gespeichert werden. Ich erhalte beim Speichern immer die Fehlermeldung:

“fehler: Automation-Einrichtung fehlgeschlagen Neue(s) Automation wurde gespeichert, aber das Warten auf die Einrichtung ist abgelaufen. Dies kann an Fehlern beim Parsen deiner Datei configuration.yaml liegen. Bitte überprüfe die Konfiguration in den Entwicklerwerkzeugen. Dein(e) Automation wird nicht angezeigt, bis dies korrigiert und die Automationen neu geladen wurden. Änderungen an Bereich, Kategorie oder Beschriftungen wurden nicht gespeichert und müssen erneut angewendet werden.“

Nachdem ich mich jetzt 2 Tage lang von ChatGPT habe gaslighten lassen, wende ich mich verzweifelt an euch. Soll ich mal meine Configuration.yaml und automations.yaml hier einfügen?

Ich benutze keinen Lesekopf, sonder einen Shelly pro3em

Nachtrag:

Automations.yaml

# yaml
- id: '1757841834711'
  alias: Marstek B2500-D Nulleinspeisung (also so halbwegs)
  description: ''
  triggers:
  - entity_id:
    - sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt
    trigger: state
    id: Energy
  - trigger: numeric_state
    entity_id:
    - sensor.hame_energy_hma_1_2419720d2b1e_battery_percentage
    below: 11
    alias: LowBat
    id: LowBat
  conditions:
  - condition: or
    conditions:
    - alias: Energie-Bedingungen
      condition: and
      conditions:
      - condition: trigger
        id:
        - Energy
      - condition: not
        conditions:
        - condition: state
          entity_id: sensor.hame_energy_hma_1_2419720d2b1e_battery_capacity
          state: unknown
        alias: Gerät ist nicht "unbekannt"
      - condition: not
        conditions:
        - condition: state
          entity_id: sensor.hame_energy_hma_1_2419720d2b1e_battery_capacity
          state: unavailable
        alias: Gerät ist nicht "nicht verfügbar"
      - alias: 'Nicht: Max ist bereits gesetzt und es würde mehr benötigt werden'
        condition: not
        conditions:
        - condition: and
          conditions:
          - alias: 800W gesetzt
            condition: numeric_state
            entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
            above: 799
          - alias: Min-Wert ist um mind. 10% größer
            condition: template
            value_template: '{{(float(states(''number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value''))
              * 1.10 ) <= states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt'')
              | float}}'
      - alias: 'Nicht: Speicherprio ist gesetzt und es würde weniger benötigt werden'
        condition: not
        conditions:
        - condition: and
          conditions:
          - condition: state
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
            state: Fully Charge Then Discharge
          - alias: Min-Wert ist um mind. 5% kleiner
            condition: template
            value_template: '{{ float(states(''number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value''))
              >= (states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt'')
              | float * 1.04 )}}'
      - alias: Ist & Bedarfs-Werte vergleichen (oder)
        condition: or
        conditions:
        - condition: and
          conditions:
          - alias: Nur, wenn nicht innerhalb der letzten 3 Minuten getriggert wurde
              (hierfür muss der Aktionsblock erreicht worden sein)
            condition: template
            value_template: '{{ state_attr("automation.marstek_b2500_d_nulleinspeisung_also_so_halbwegs",
              "last_triggered") == None or ( as_timestamp(now()) - as_timestamp(state_attr("automation.marstek_b2500_d_nulleinspeisung_also_so_halbwegs",
              "last_triggered")) |int(0) ) > 180 }}'
          - alias: Min-Wert ist um mind. 10% größer
            condition: template
            value_template: '{{(float(states(''number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value''))
              * 1.10 ) <= states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt'')
              | float}}'
          alias: Mehr Energie wird benötigt & letzter Lauf ist mind. 3 Minuten her
        - alias: Weniger Energie wird benötigt & letzter Lauf ist mind. 15 Sekunden
            her
          condition: and
          conditions:
          - alias: Min-Wert ist um mind. 3% kleiner
            condition: template
            value_template: '{{ float(states(''number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value''))
              >= (states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt'')
              | float * 1.02 )}}'
          - alias: Nur, wenn nicht innerhalb der letzten 15 Sekunden getriggert wurde
              (hierfür muss der Aktionsblock erreicht worden sein)
            condition: template
            value_template: '{{ state_attr("automation.marstek_b2500_d_nulleinspeisung_also_so_halbwegs",
              "last_triggered") == None or ( as_timestamp(now()) - as_timestamp(state_attr("automation.marstek_b2500_d_nulleinspeisung_also_so_halbwegs",
              "last_triggered")) |int(0) ) > 15 }}'
      - condition: not
        conditions:
        - condition: and
          conditions:
          - condition: state
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
            state: Fully Charge Then Discharge
          - condition: numeric_state
            entity_id: sensor.hame_energy_hma_1_2419720d2b1e_battery_percentage
            below: 15
    - condition: trigger
      id:
      - LowBat
      alias: LowBat
  actions:
  - choose:
    - conditions:
      - condition: trigger
        id:
        - LowBat
      sequence:
      - action: select.select_option
        metadata: {}
        data:
          option: Fully Charge Then Discharge
        target:
          entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
      - action: number.set_value
        metadata: {}
        data:
          value: '50'
        target:
          entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.hame_energy_hma_1_2419720d2b1e_time_period_1_enabled
      - stop: Akku erschöpft
      alias: Wenn LowBat dann Energiemodus umstellen
    - conditions:
      - condition: numeric_state
        entity_id: sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt
        above: 29
        value_template: '    {{( (float(states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt''))
          * 2) + float(states(''sensor.wohnung_leistungsbedarf_gesamt_mittelwert_5min_watt'')))
          / 3}}'
        enabled: true
      - condition: numeric_state
        entity_id: sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt
        value_template: '    {{( (float(states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt''))
          * 2) + float(states(''sensor.wohnung_leistungsbedarf_gesamt_mittelwert_5min_watt'')))
          / 3}}'
        below: 801
      sequence:
      - alias: Vermittelten Wert aus Min (doppelt gewichtet) & Durchschnitt einstellen
        metadata: {}
        data:
          value: '{{( (float(states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt''))
            * 2) + float(states(''sensor.wohnung_leistungsbedarf_gesamt_mittelwert_5min_watt''))
            ) / 3}}'
        action: number.set_value
        target:
          entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
      - if:
        - condition: or
          conditions:
          - condition: state
            entity_id: switch.hame_energy_hma_1_2419720d2b1e_time_period_1_enabled
            state: 'off'
          - condition: state
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
            state: Fully Charge Then Discharge
        then:
        - action: switch.turn_on
          metadata: {}
          data: {}
          target:
            entity_id: switch.hame_energy_hma_1_2419720d2b1e_time_period_1_enabled
        - action: select.select_option
          metadata: {}
          data:
            option: Simultaneous Charging/Discharging
          target:
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
        alias: Wenn Deaktiviert, wieder aktivieren
    - conditions:
      - condition: numeric_state
        entity_id: sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt
        value_template: '    {{( (float(states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt''))
          * 2) + float(states(''sensor.wohnung_leistungsbedarf_gesamt_mittelwert_5min_watt'')))
          / 3}}'
        below: 30
      - condition: not
        conditions:
        - condition: state
          entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
          state: Fully Charge Then Discharge
      sequence:
      - alias: Vermittelten Wert aus Min (doppelt gewichtet) & Durchschnitt einstellen
        metadata: {}
        data:
          value: '30'
        action: number.set_value
        target:
          entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
      alias: Set Min Watt if not Set
    - conditions:
      - condition: numeric_state
        entity_id: sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt
        value_template: '    {{( (float(states(''sensor.wohnung_leistungsbedarf_gesamt_min_5min_watt''))
          * 2) + float(states(''sensor.wohnung_leistungsbedarf_gesamt_mittelwert_5min_watt'')))
          / 3}}'
        above: 800
      - condition: not
        conditions:
        - condition: numeric_state
          entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
          above: 799
      sequence:
      - metadata: {}
        data:
          value: '800'
        action: number.set_value
        target:
          entity_id: number.hame_energy_hma_1_2419720d2b1e_time_period_1_output_value
      - if:
        - condition: or
          conditions:
          - condition: state
            entity_id: switch.hame_energy_hma_1_2419720d2b1e_time_period_1_enabled
            state: 'off'
          - condition: state
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
            state: Fully Charge Then Discharge
        then:
        - action: switch.turn_on
          metadata: {}
          data: {}
          target:
            entity_id: switch.hame_energy_hma_1_2419720d2b1e_time_period_1_enabled
        - action: select.select_option
          metadata: {}
          data:
            option: Simultaneous Charging/Discharging
          target:
            entity_id: select.hame_energy_hma_1_2419720d2b1e_charging_mode
        alias: Wenn Deaktiviert, wieder aktivieren
      alias: Set Max Watt if not Set
  - alias: Graveyard
    choose: []
    enabled: true
  mode: single

Configuration.yaml:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

template:
  - sensor:
      - name: "Netzeinspeisung" # <- Nur nötig, um die Entität vom SML-Lesekopf in HA auszuwählen
        state_class: total_increasing
        device_class: energy
        icon: mdi:home-export-outline
        unit_of_measurement: kWh
        state: "{{ states('sensor.shellypro3em_2cbcbba72bcc_total_active_returned_energy')|float}}"
        availability: "{{ is_number(states('sensor.shellypro3em_2cbcbba72bcc_total_active_returned_energy')) }}"
      - name: "Netzbezug" # <- Nur nötig, um die Entität vom SML-Lesekopf in HA auszuwählen
        state_class: total_increasing
        device_class: energy
        icon: mdi:home-import-outline
        unit_of_measurement: kWh
        state: "{{ states('sensor.shellypro3em_2cbcbba72bcc_total_active_energy')|float}}"
        availability: "{{ is_number(states('sensor.shellypro3em_2cbcbba72bcc_total_active_energy')) }}"
      - name: "Wohnung Leistungsbedarf gesamt (Watt)" # <- Berechnet den Leistungsbedarf für die Wohnung in Watt, damit wir das in der Automation nutzten können
        unique_id: "WohnungLeistungsbedarfgesamtWatt"
        unit_of_measurement: W
        device_class: energy
        state_class: measurement
        state: "{{ (states('sensor.shellypro3em_2cbcbba72bcc_total_active_power') | float + states('sensor.hame_energy_hma_1_2419720d2b1e_micro_inverter_power') | float ) }}"
sensor:
  - platform: statistics # <- 5 Minuten stimmt zwar nicht mehr (auf 2 geändert), aber so muss ich nicht die ganze Automation nochmal bearbeiten 😅
    name: "Wohnung Leistungsbedarf gesamt Mittelwert 5Min (Watt)" # <- Mittel-Wert
    entity_id: sensor.wohnung_leistungsbedarf_gesamt_watt
    state_characteristic: mean
    max_age:
      minutes: 2
      # Da die Automation schon nach 3 Minuten wieder nachjustiert, muss dieser Wert kleiner sein
    sampling_size: 1200
    percentile: 90
  - platform: statistics # <- 5 Minuten stimmt zwar nicht mehr (auf 2 geändert), aber so muss ich nicht die ganze Automation nochmal bearbeiten 😅
    name: "Wohnung Leistungsbedarf gesamt Min 5Min (Watt)" # <- Min-Wert
    entity_id: sensor.wohnung_leistungsbedarf_gesamt_watt
    state_characteristic: value_min
    max_age:
      minutes: 2
      # Da die Automation schon nach 3 Minuten wieder nachjustiert, muss dieser Wert kleiner sein
    sampling_size: 1200
    percentile: 90

Nachtrag2:
Mir ist gerade aufgefallen, dass ich dieselbe Fehlermeldung auch bei ganz simplen Automationen erhalte. Ich hab gerade versucht einzustellen, dass wenn Shelly Total active Power über 700Watt registriert, dann soll Time Period Output Value auf 700Watt eingestellt werden. Ich habe die Geräte direkt im Automationsmodul ausgewählt. Ich weiß leider nicht, was das Problem ist.

Ich habe vor einer Woche das gleiche Setup bei mir stehen.

Marstek B2500 / AP-Systems EZ1 / Shelly Pro 3EM

Habe mich schnell dafür entschieden, den Shelly direkt mit dem Marstek zu verbinden (in der Marstek App). Nach ein / zwei Tagen Schluckauf regelt der Marstek die Output Leitstung zuverlässig und sehr schnell nach dem Wohnungsverbrauch nach. Denke viel besser wird man das über MQTT (Daten bekommst du hier nicht in Echtzeit sondern je nach Abfrageinterval alle 10 Sekunden?)

1 „Gefällt mir“

Vielen Dank, ich habe den automodus vor ein paar Monaten mal ausprobiert und es war eine Katastrophe. Dank dir habe ich es jetzt nochmal probiert und es ist sehr viel besser geworden und ich lasse es erstmal so laufen. Trotzdem möchte ich es gerne irgendwann manuell über HA einstellen können. Also falls mir hier trotzdem jemand helfen könnte, wäre ich sehr dankbar

Hallo,

ich habe zu dem Thema mal eine Anfängerfrage: Ich habe hier den Marstek 5.12 stehen. Ist der Weg der Intergration derselbe, oder benötige ich dafür eine Lösung, die auf den 5.12 kw/h großen Speicher zugeschnitten ist - ich frage bevor ich einfach “versuche” den Speicher einzubinden :wink:

Besten Dank vorab

Jake