Wie finde ich den Fehlerort

ich bin dabei die Solix Quasi Nulleinspeisung von Simon zu implementieren.

Dabei hat er mir erst einen Fehler geworfen, dass NONE nicht zulässig ist.

Die einzige Stelle an der NONE vorkam ist diese:

    - 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.anker_nulleinspeisung_v2_also_so_halbwegs",
        "last_triggered") == None or ( as_timestamp(now()) -
        as_timestamp(state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
        "last_triggered")) |int(0) ) > 180 }}

den Code habe ich wie folgt geändert:

    value_template: >-
      {{ state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered") == ( as_timestamp(now()) -
      as_timestamp(state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered")) |int(0) ) > 180 }}
    alias: Nur, wenn nicht innerhalb der letzten 3 Minuten getriggert wurde (hierfür muss der Aktionsblock erreicht worden sein)   

jetzt bekomme ich folgenden Fehler:

das Word None kommt aber in der ganzen automations.yaml gar nicht vor.

Hier die Automation:

- id: '174349XX'
  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
  - condition: template
    value_template: >-
      {{ state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered") == ( as_timestamp(now()) -
      as_timestamp(state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered")) |int(0) ) > 180 }}
    alias: Nur, wenn nicht innerhalb der letzten 3 Minuten getriggert wurde (hierfür muss der Aktionsblock erreicht worden sein)   
  - condition: or
    conditions:
    - condition: template
      value_template: >-
            {{(float(states('number.solarbank_e1600_einspeisevorgabe')) *
            1.25 ) <=
            states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
            float}}
      alias: Min-Wert ist um mind. 25% größer als Solarbank
    - condition: template
      value_template: >-
            {{ float(states('number.solarbank_e1600_einspeisevorgabe')) >=
            (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') | float
            * 1.24 )}}
      alias: Min-Wert ist um mind. 25% kleiner als Solarbank
    - 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_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: sensor.solarbank_e1600_einspeisevorgabe
          above: 99
          below: 101
        - condition: template
          value_template: >-
            {{ float(states('number.solarbank_e1600_einspeisevorgabe'))
            >= (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')
            | float * 1.24 )}}
          alias: Min-Wert ist um mind. 25% kleiner als Solarbank
    - alias: Anker & Bedarfs-Werte vergleichen (oder) 
  actions:
  - choose:
    - conditions:
      - condition: numeric_state
        entity_id: sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt
        above: 99
        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_einspeisevorgabe
        alias: Vermittelten Wert aus Min (doppelt gewichtet) & Durchschnitt einstellen
        action: number.set_value
      - action: notify.whatsapp_martin
        metadata: {}
        data:
          message: Einspeisevorgabe geändert
    - 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: sensor.solarbank_e1600_einspeisevorgabe
          above: 799
          below: 801
      sequence:
      - metadata: {}
        data:
          value: '800'
        target:
          entity_id: number.solarbank_e1600_einspeisevorgabe
        action: number.set_value
      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: sensor.solarbank_e1600_einspeisevorgabe
          above: 99
          below: 101
      sequence:
      - metadata: {}
        data:
          value: '100'
        target:
          entity_id: number.solarbank_e1600_einspeisevorgabe
        action: number.set_value
      alias: Set Min 100W if not Set
  mode: single

Hast einer eine IDee woran es liegen kann und wi muss ich diese Posuitionsangabe lesen:

@ data[2][‘conditions’][4]

In Zeile 75 hast Du einen leeren Condition Block definiert:

  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
  - condition: template
    value_template: >-
      {{ state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered") == ( as_timestamp(now()) -
      as_timestamp(state_attr("automation.anker_nulleinspeisung_v2_also_so_halbwegs",
      "last_triggered")) |int(0) ) > 180 }}
    alias: Nur, wenn nicht innerhalb der letzten 3 Minuten getriggert wurde (hierfür muss der Aktionsblock erreicht worden sein)   
  - condition: or
    conditions:
    - condition: template
      value_template: >-
            {{(float(states('number.solarbank_e1600_einspeisevorgabe')) *
            1.25 ) <=
            states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') |
            float}}
      alias: Min-Wert ist um mind. 25% größer als Solarbank
    - condition: template
      value_template: >-
            {{ float(states('number.solarbank_e1600_einspeisevorgabe')) >=
            (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt') | float
            * 1.24 )}}
      alias: Min-Wert ist um mind. 25% kleiner als Solarbank
    - 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_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: sensor.solarbank_e1600_einspeisevorgabe
          above: 99
          below: 101
        - condition: template
          value_template: >-
            {{ float(states('number.solarbank_e1600_einspeisevorgabe'))
            >= (states('sensor.haus_leistungsbedarf_gesamt_minimalwert_5min_watt')
            | float * 1.24 )}}
          alias: Min-Wert ist um mind. 25% kleiner als Solarbank
    - alias: Anker & Bedarfs-Werte vergleichen (oder) 
  actions:

Die vorletzten Zeile meines Codeausschnitts ist das Problem. Ein Condition Block erwartet etwas mehr als nur einen Alias.

Kann es sein, dass der Alias für den Gesamten Conditions Block gelten soll? Dann wäre schlicht die Einrückung eine Ebene zu tief, wenn ich das richtig überblicke. YAML ist da sehr penibel, was die Einrückungen betrifft.

Um das aus der Fehlermeldung abzuleiten ein Screenshot zur Hilfe:

Die Zahlen in den eckigen Klammern addressieren ein Element in einer Liste. IT typisch wird mit 0 (Null) begonnen zu zählen. data[2] deutet also auf das 3. Element (Zeile 31) in Deinem conditions Block hin. In diesem liegt der Fehler in conditions[4], also im 5. Element der Liste (Zeile 75). Und hier ist ein Conditions Block definiert, der nur aus dem Alias besteht, welches der Codeprüfung nicht standhält und daher eine Fehlermeldung ausgibt.

Ich hoffe das war verständlich. :slight_smile:

Danke Euch beiden das war es.