Quasi Null Einspeisung Anker Solix funktioniert nicht richtig

So richtig funktioniert die implementierung nicht.
um einen Besseren überblick zu bekommen. habe ich eine Benachrichtigung implementiert.

Aber auch die mach konische Sachen.
Ich würde auch gerne in der Benachrichtigung , die neu gesetzten Werte sehen. Das hat leider aber nicht funktioniert.

Die habe ich wieder zurück gebaut HA neu gestartet und bekomme jetzt solche Nachrichten:



der Yaml code:

alias: Anker Nulleinspeisung V2 (also so halbwegs)
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
conditions:
  - condition: and
    conditions:
      - condition: state
        entity_id: switch.mar_de_api_nutzung
        state: "on"
      - condition: state
        entity_id: binary_sensor.system_mamohomespeicher_systemadministration
        state: "on"
      - condition: not
        conditions:
          - condition: state
            entity_id: sensor.solarbank_e1600_betriebszustand
            state: charge_priority
        alias: Ist nicht im Ladeprioritätszustand
    alias: Betriebszustandsprüfung
  - alias: Prüfe Änderung der Einspeisevorgabe
    condition: template
    value_template: >
      {{ (as_timestamp(now()) -
      as_timestamp(states.number.solarbank_e1600_system_einspeisevorgabe.last_changed))
      > 300 }}
  - alias: Anker & Bedarfs-Werte vergleichen (oder)
    condition: or
    conditions:
      - condition: template
        value_template: >-
          {{(float(states('number.solarbank_e1600_system_einspeisevorgabe')) *
          1.25 ) <=
          states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
          float}}
        alias: Min-Wert ist um mind. 25% größer als Solarbank
      - alias: Min-Wert ist um mind. 25% kleiner als Solarbank
        condition: template
        value_template: >-
          {{ float(states('number.solarbank_e1600_system_einspeisevorgabe')) >=
          (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
          float * 1.24 )}}
      - alias: Max ist gesetzt und es würde mehr benötigt werden
        condition: not
        conditions:
          - condition: numeric_state
            entity_id: sensor.solarbank_e1600_einspeisevorgabe
            above: 799
            below: 801
            alias: 800W gesetzt
          - condition: template
            value_template: >-
              {{(float(states('number.solarbank_e1600_system_einspeisevorgabe'))
              * 1.25 ) <=
              states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')
              | float}}
            alias: Min-Wert ist um mind. 25% größer als Solarbank
      - alias: Min ist gesetzt und es würde weniger benötigt werden
        condition: not
        conditions:
          - alias: 100W gesetzt
            condition: numeric_state
            entity_id: number.solarbank_e1600_system_einspeisevorgabe
            above: 99
            below: 101
          - condition: template
            value_template: >-
              {{ float(states('number.solarbank_e1600_system_einspeisevorgabe'))
              >=
              (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')
              | float * 1.24 )}}
            alias: Min-Wert ist um mind. 25% kleiner als Solarbank
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
            above: 49
            value_template: "    {{( (float(states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')) * 2) + float(states('sensor.haus_leistungsbedarf_gesamt_mittelwert_5min_watt'))) / 3}}"
          - condition: numeric_state
            entity_id: sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
            value_template: "    {{( (float(states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')) * 2) + float(states('sensor.haus_leistungsbedarf_gesamt_mittelwert_5min_watt'))) / 3}}"
            below: 801
        sequence:
          - metadata: {}
            data:
              value: >-
                {{(
                (float(states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt'))
                * 2) +
                float(states('sensor.haus_leistungsbedarf_gesamt_mittelwert_5min_watt'))
                ) / 3}}
            target:
              entity_id: number.solarbank_e1600_system_einspeisevorgabe
            alias: >-
              Vermittelten Wert aus Min (doppelt gewichtet) & Durchschnitt
              einstellen
            action: number.set_value
          - action: notify.whatsapp_martin
            metadata: {}
            data:
              message: Einspeisevorgabe geändert.
        alias: Set Min 100-800W if not Set
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
            value_template: "    {{( (float(states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')) * 2) + float(states('sensor.haus_leistungsbedarf_gesamt_mittelwert_5min_watt'))) / 3}}"
            above: 800
          - condition: not
            conditions:
              - condition: numeric_state
                entity_id: number.solarbank_e1600_system_einspeisevorgabe
                above: 799
                below: 801
        sequence:
          - metadata: {}
            data:
              value: "800"
            target:
              entity_id: number.solarbank_e1600_system_einspeisevorgabe
            action: number.set_value
          - action: notify.whatsapp_martin
            metadata: {}
            data:
              message: Einspeisevorgabe auf 800 W geändert.
        alias: Set Max 800W if not Set
      - conditions:
          - condition: numeric_state
            entity_id: sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
            value_template: "    {{( (float(states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')) * 2) + float(states('sensor.haus_leistungsbedarf_gesamt_mittelwert_5min_watt'))) / 3}}"
            below: 100
          - condition: not
            conditions:
              - condition: numeric_state
                entity_id: number.solarbank_e1600_system_einspeisevorgabe
                above: 99
                below: 101
        sequence:
          - metadata: {}
            data:
              value: "100"
            target:
              entity_id: number.solarbank_e1600_system_einspeisevorgabe
            action: number.set_value
          - action: notify.whatsapp_martin
            metadata: {}
            data:
              message: Einspeisevorgabe auf 100 W geändert.
        alias: Set Min 100W if not Set
mode: single


Die Änderungshäufigkeit kommt mir sehr hoch vor und ist teilweise auch unter 3 Minuten

So richtig fehlt mir aber der Ansatz für die Fehlereingrenzung

du gibst in deiner message ja aber auch keinen Wert mit.

Richtig, nach dem die Übergabe nicht funktioniert hat, habe ich diese wieder herausgenommen.

Seit dem kommt es zu diesen Endlos Nachrichten alle paar stunden.

Ich denke es macht als erstes Sinn den Grund für diese Endlosnachrichten zu fixen, um dann die Wertübergabe einzubauen.

Er scheint die Nachrichten an WA bei den “freien werten” irgendwie zu sammeln., warum auch immer.

dazu stimmen die WA Meldungen gravierend zeitlich nicht:

zum Verlauf

Um 9:58 und 12:23 auf 100 W gegangen laut Chart:
Laut WA

hast du zufällig so ein Benachrichtigungssammeldienst drin, der dir alles schickt wenn du wieder zuhause bist? Vielleicht spielt dieser etwas verrückt

Nein


Nach dem letzten Verhalten vermute ich eher dass der WA dienst bei zu vielen Meldungen sammelt.

Das würde auch zu meiner Vermutung von zu großem Regelungsaktionismus passen.

Ein bisschen bin ich voran gekommen.


Das Bild zeigt, dass er unnötig last auf die API gibt weil sich zwar der Minimalwert geändert hat, aber nicht so stark, dass er eine Änderung der Einspeisevorgabe die in 10 W Schritten nur möglich ist erzeugt.

das sollte ja eigentlich durch diese Bedingung abgefangen werden:

  - alias: Anker & Bedarfs-Werte vergleichen (oder)
    condition: or
    conditions:
      - condition: template
        value_template: >-
          {{(float(states('number.solarbank_e1600_system_einspeisevorgabe')) *
          1.25 ) <=
          states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
          float}}
        alias: Min-Wert ist um mind. 25% größer als Solarbank
      - alias: Min-Wert ist um mind. 25% kleiner als Solarbank
        condition: template
        value_template: >-
          {{ float(states('number.solarbank_e1600_system_einspeisevorgabe')) >=
          (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
          float * 1.24 )}}

Es scheint es aber nicht zu tun. Hat da jemand eine Idee?

Steig mal auf Telegram um, das funktioniert sehr zuverlässig und mit offizieller Api

ok, Danke für den Tip.

Wobei das Kernproblem aus meiner Sicht die fehlerhafte automation ist.

Die Automation sagt ja Ändere den Werte Wenn:
Bestimmte Betriebszustände vorhanden sind
UND
Wenn die letzte Änderung länger als 3 Minuten her ist
UND
(
Wenn der neue Bedarf 25 % kleiner oder größer ist
ODER
Kleiner als 100 und 100 nicht gesetzt ist
ODER
Größer als 800 und 800 nicht gesetzt ist
)

Bei dem 25% kleiner oder größer liegt aus meiner Sicht das Problem.
Er ändert die werte auch dann wenn die Werte auch, wenn die neuen Zielwerteweniger als 25 % Abweichung haben:
image

Das bedeutet irgendwo hier

  - alias: Anker & Bedarfs-Werte vergleichen (oder)
    condition: or
    conditions:
    - alias: Min-Wert ist um mind. 25% größer als Solarbank
      condition: template
      value_template: '{{(float(states(''sensor.solarbank_e1600_einspeisevorgabe''))
        * 1.25 ) <= states(''sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt'')  |
        float}}'
    - alias: Min-Wert ist um mind. 25% kleiner als Solarbank
      condition: template
      value_template: '{{ float(states(''sensor.solarbank_e1600_einspeisevorgabe''))
        >= (states(''sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt'') |
        float * 1.24 )}}'
    - alias: Max ist gesetzt und es würde mehr benötigt werden
      condition: not
      conditions:
      - condition: numeric_state
        entity_id: sensor.solarbank_e1600_einspeisevorgabe
        above: 799
        below: 801
        alias: 800W gesetzt
      - condition: template
        value_template: '{{(float(states(''number.solarbank_e1600_system_einspeisevorgabe''))
          * 1.25 ) <= states(''sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt'')
          | float}}'
        alias: Min-Wert ist um mind. 25% größer als Solarbank
    - alias: Min ist gesetzt und es würde weniger benötigt werden
      condition: not
      conditions:
      - alias: 100W gesetzt
        condition: numeric_state
        entity_id: number.solarbank_e1600_system_einspeisevorgabe
        above: 99
        below: 101
      - condition: template
        value_template: '{{ float(states(''number.solarbank_e1600_system_einspeisevorgabe''))
          >= (states(''sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt'')
          | float * 1.24 )}}'
        alias: Min-Wert ist um mind. 25% kleiner als Solarbank