Trigger Varables

Hallo,
ich habe das Problem, wenn ich die Automation manuel trigger, das die Triggervariablen nicht funktionieren. Das setzen der Variable trigger funktioniert nicht. Was mache ich falsch?

Vielen Dank
Klaus

Code

alias: Soil Moisture Level
description: "reports the moisture status of the pot flora"
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    id: soil_moisture_level_low
    below: input_number.soil_low
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    above: input_number.soil_normal
    id: soil_moisture_level_normal
    below: input_number.soil_hight
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    above: input_number.soil_hight
    id: soil_moisture_level_hight
condition: []
action:
  - if:
      - condition: template
        value_template: "{% if trigger.platform == '' %}true{% endif %}"
        enabled: true
    then:
      - variables:
          trigger:
            id: manuel
            entity_id: manuel
      - service: notify.persistent_notification
        data:
          message: "{{ trigger }}"
        enabled: false
    else:
      - service: notify.persistent_notification
        data:
          message: "{{ trigger }}"
        enabled: false
    enabled: true
  - service: persistent_notification.create
    data:
      title: Soil Moisture Level
      notification_id: soil_moisture_level
      message: >
        **{{ trigger.id }} {{ trigger.entity_id }}={{ states(trigger.entity_id)
        }}**<br>{{ states('sensor.esp32_flora_soil_moisture_level') }} / {{
        states('sensor.esp32_outside_soil_moisture_level') }} / {{
        states('sensor.ble_kitchen_soil_moisture_level') }} / {{
        states('sensor.ble_bedroom_soil_moisture_level') }} / {{
        states('sensor.ble_fitnessroom_soil_moisture_level') }} / {{
        states('sensor.air_adq_livingroom_soil_moisture_level') }}
  - if:
      - condition: template
        value_template: "{% if trigger.id == 'soil_moisture_level_low' %}true{% endif %}"
    then:
      - service: switch.turn_on
        data: {}
        target:
          entity_id:
            - switch.ble_kitchen_blue_led
            - switch.ble_fitnessroom_blue_led
            - switch.air_adq_livingroom_blue_led
            - switch.ble_bedroom_blue_led
    else:
      - if:
          - condition: template
            value_template: "{% if trigger.id == 'soil_moisture_level_normal' %}true{% endif %}"
        then:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.esp32_flora_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
              - condition: numeric_state
                entity_id: sensor.esp32_outside_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
              - condition: numeric_state
                entity_id: sensor.ble_kitchen_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
              - condition: numeric_state
                entity_id: sensor.ble_fitnessroom_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
              - condition: numeric_state
                entity_id: sensor.ble_bedroom_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
              - condition: numeric_state
                entity_id: sensor.air_adq_livingroom_soil_moisture_level
                above: input_number.soil_normal
                below: input_number.soil_hight
          - service: switch.turn_off
            data: {}
            target:
              entity_id:
                - switch.ble_kitchen_blue_led
                - switch.ble_fitnessroom_blue_led
                - switch.ble_fitnessroom_blue_led_fast
                - switch.ble_kitchen_blue_led_fast
                - switch.air_adq_livingroom_blue_led_fast
                - switch.air_adq_livingroom_blue_led
                - switch.ble_bedroom_blue_led
                - switch.ble_bedroom_blue_led_fast
        else:
          - if:
              - condition: template
                value_template: >-
                  {% if trigger.id == 'soil_moisture_level_hight' %}true{% endif
                  %}
            then:
              - service: switch.turn_on
                target:
                  entity_id:
                    - switch.ble_kitchen_blue_led_fast
                    - switch.ble_fitnessroom_blue_led_fast
                    - switch.air_adq_livingroom_blue_led_fast
                    - switch.ble_bedroom_blue_led_fast
                  device_id: []
                  area_id: []
                data: {}
mode: single

:crayon:by HeikoBauer: Codezeilen formatiert. Bitte mit </> einfügen.

Du triggerst manuell.

Dann greift kein Trigger und die Bedingungen greifen auch nicht. Welches soll denn der auslösende Trigger sein, wenn du das manuell machst?

Dieses soll dann greifen. Tut es auch aber die fogende Action wird abgebrochen.

* * action:
* if:
  * condition: template
value_template: “{% if trigger.platform == ‘’ %}true{% endif %}”
enabled: true
then:
  * variables:
trigger:
id: manuel
entity_id: manuel
  * service: notify.persistent_notification
data:
message: “{{ trigger }}”
enabled: false
else:
  * service: notify.persistent_notification
data:
message: “{{ trigger }}”
enabled: false
enabled: true
* service: persistent_notification.create
data:
title: Soil Moisture Level
notification_id: soil_moisture_level
message: >
<strong>{{ trigger.id }} {{ trigger.entity_id }}={{ states(trigger.entity_id)
}}</strong>

:crayon:by HarryP: Codezeilen formatiert (bitte in </> einfügen)

Eine Notify mit Trigger sieht so aus.

Soil Moisture Level

soil_moisture_level_normal sensor.esp32_flora_soil_moisture_level=78
78 / 75 / 75 / 71 / 75 / 75

Es geht manuell nicht. Du fragst schließlich ab was getriggert hat.

Warte einfach ab bis ein Sensor triggern sollte.

Das ist aber keine Lösung. Wieso sollte dass nicht funktionieren?

Du möchtest in der Aktion wissen, welcher Sensor getriggert hat, richtig? Wie soll das funktionieren, wenn kein Sensor triggert, sondern Du manuell?

Es ist Standard, dass Trigger und Condition beim manuellen Ausführen nicht abgefragt werden. Condition wäre noch machbar, aber Trigger bist ja immer du selbst.

Du könntest versuchen den Wert eines Sensors über Entwicklerwerkzeuge → Zustand manuell zu überschreiben, so dass dieser auslösen müsste.

Die trigger variable hat den Inhalt {‘platform’: None} und dass kann man auch auswerten . Warum wird der gesetzten Variable nicht übernommen?

So…letzter Versuch:
Der Trigger muss ein Sensor sein, damit die Variable für trigger gesetzt wird. Du triggerst aber manuell. Daher gibt es keinen Sensor und auch keine Variable.

None ist kein trigger. Die Variable steht so nicht zur Verfügung.

1 „Gefällt mir“

Hmm,
Die Variable trigger hat den Inhalt {‘platform’: None} und lasst sich abfragen. Ich kann bedingt Variablen setzen. Das Problem ist, dass nach der “if” Bedingung die Variablen wieder weg sind…

Aber trotzdem danke

Moin,
wenn du die Automation manuell auslöst wird der Bereich Trigger/Auslöser und Condition/Bedingungen komplett übergangen.
Weswegen die Variable trigger auch nur none(nichts) ausgibt.

Das Manuelle testen funktioniert für komplekse Automation nicht da muss man sich anders Helfen.

Was du machen könntest: Ein Helfer erstellen und den in die Automation einbindest zum Testen. Für dich macht wahrscheinlich ein Nummern Helfer an meisten Sinn.

LG

Das würde mMn am meisten Sinn machen, wenn es funktioniert.

Danke, Du hast mein Problem verstanden.
Das habe ich so auch gemacht und es funktioniert. Was ich nicht verstehe ist, wenn ich eine Variable in einer if Bedingung setze, das sie nach der Bedingung weg ist.
Gilt eine Variable nicht für die ganze Automation?

Vielen Dank

Das ist jetzt meine Lösung.
Vielen Dank für eure Hilfe

<alias: Soil Moisture Level
description: "reports the moisture status of the pot flora"
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    id: soil_moisture_level_low
    below: input_number.soil_low
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    above: input_number.soil_normal
    id: soil_moisture_level_normal
    below: input_number.soil_hight
  - platform: numeric_state
    entity_id:
      - sensor.esp32_flora_soil_moisture_level
      - sensor.esp32_outside_soil_moisture_level
      - sensor.ble_kitchen_soil_moisture_level
      - sensor.ble_fitnessroom_soil_moisture_level
      - sensor.ble_bedroom_soil_moisture_level
      - sensor.air_adq_livingroom_soil_moisture_level
    above: input_number.soil_hight
    id: soil_moisture_level_hight
condition: []
action:
  - variables:
      message: |-
        {{ states('sensor.esp32_flora_soil_moisture_level') }} / {{
        states('sensor.esp32_outside_soil_moisture_level') }} / {{
        states('sensor.ble_kitchen_soil_moisture_level') }} / {{
        states('sensor.ble_bedroom_soil_moisture_level') }} / {{
        states('sensor.ble_fitnessroom_soil_moisture_level') }} / {{
        states('sensor.air_adq_livingroom_soil_moisture_level') }}
  - if:
      - condition: template
        value_template: "{% if trigger.platform == None %}true{% endif %}"
        enabled: true
    then:
      - variables:
          trigger:
            id: manuel
            entity_id: manuel
      - service: persistent_notification.create
        data:
          title: Soil Moisture Level
          notification_id: soil_moisture_level
          message: "**{{ trigger.id }} {{ trigger.entity_id }}**<br>{{ message }}"
    else:
      - service: persistent_notification.create
        data:
          title: Soil Moisture Level
          notification_id: soil_moisture_level
          message: |-
            **{{ trigger.id }} {{ trigger.entity_id }}={{
            states(trigger.entity_id) }}**<br>{{ message }}
...