Übergabe einer Trigger-Variable an target Thema ist als GELÖST markiert

Rat und Tat rings um Home Assistant Automationen.
Antworten
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Ich versuche gerade eine Automation aufzubauen, in der ich die Trigger als Variable übergebe. So weit funktioniert das auch, nur das target mag nicht so, wie ich das dachte.
Die trigger.entity_id ist die Trigger-Variable, die ich gerne wie unten verarbeiten würde und dabei als target die entsprechende Entität auswählen würde. Das haut nur leider nicht hin :( Habt ihr ne Idee?

Code: Alles auswählen

  action:
    - service: input_text.set_value
      data_template:
        target: >-
          {% set ent = 'trigger.entity_id' %}
          {% if ent == sensor.netatmo_unser_heim_wohnzimmer_buro_co2 %}
            entity_id: input_text.co2_buero
          {% elif ent == sensor.netatmo_unser_heim_wohnzimmer_kuche_co2 %}
            entity_id: input_text.co2_kueche
          {% elif ent == sensor.netatmo_unser_heim_wohnzimmer_co2 %}
            entity_id: input_text.co2_wohnzimmer
          {% endif %}
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Was hast Du den für einen trigger verwendet?
numeric_state ?

In dem Fall sollte es

Code: Alles auswählen

trigger.to_state.entity_id
lauten
Und nicht

Code: Alles auswählen

trigger.entity_id
Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Alternativ, kannst Du den einzelnen Trigger eine trigger id verpassen. Und im action Teil. Aktiontyp Auswählen (choose) dann unterschiedlich auf die jeweiligen trigger id Aktionen ausführen.
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Osorkon hat geschrieben: Mi 1. Sep 2021, 12:41 Was hast Du den für einen trigger verwendet?
numeric_state ?
Nein, ich habe state.

Code: Alles auswählen

  trigger:
    - platform: state
      entity_id:
        - sensor.netatmo_unser_heim_wohnzimmer_buro_co2
        - sensor.netatmo_unser_heim_wohnzimmer_kuche_co2
        - sensor.netatmo_unser_heim_wohnzimmer_co2
Wie gesagt, die Übergabe bei data klappt damit ja (also wenn ich ein einzelnes target anstatt des Codes setze), nur bei target nicht.

Hier mal der komplette Code:

Code: Alles auswählen

- alias: co2_alarm
  description: "CO2 - Ampel"
  trigger:
    - platform: state
      entity_id:
        - sensor.netatmo_unser_heim_wohnzimmer_buro_co2
        - sensor.netatmo_unser_heim_wohnzimmer_kuche_co2
        - sensor.netatmo_unser_heim_wohnzimmer_co2
  action:
    - service: input_text.set_value
      #target:
      #  entity_id: input_text.co2_buero
      data_template:
        target: >-
          {% set ent = 'trigger.entity_id' %}
          {% if ent == sensor.netatmo_unser_heim_wohnzimmer_buro_co2 %}
            entity_id: input_text.co2_buero
          {% elif ent == sensor.netatmo_unser_heim_wohnzimmer_kuche_co2 %}
            entity_id: input_text.co2_kueche
          {% elif ent == sensor.netatmo_unser_heim_wohnzimmer_co2 %}
            entity_id: input_text.co2_wohnzimmer
          {% endif %}
      data:
        value: >-
          {% if states(trigger.entity_id)|int <= 800 %}
            grün mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 800 and
            states(trigger.entity_id)|int <= 1000 %}
            gelb mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1000 and
            states(trigger.entity_id)|int <= 1400 %}
            orange mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1400 %}
            rot mit {{ states(trigger.entity_id)|int }} ppm
          {% endif %}
  mode: queued
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Versuchsmal mit:

Code: Alles auswählen

- alias: co2_alarm
  description: "CO2 - Ampel"
  trigger:
    - platform: state
      entity_id:
        - sensor.netatmo_unser_heim_wohnzimmer_buro_co2
        - sensor.netatmo_unser_heim_wohnzimmer_kuche_co2
        - sensor.netatmo_unser_heim_wohnzimmer_co2
  action:
    - service: input_text.set_value
      data_template:
        target: >-
          {% set ent = trigger.entity_id %}
          {% if ent == 'sensor.netatmo_unser_heim_wohnzimmer_buro_co2' %}
            entity_id: input_text.co2_buero
          {% elif ent == 'sensor.netatmo_unser_heim_wohnzimmer_kuche_co2' %}
            entity_id: input_text.co2_kueche
          {% elif ent == 'sensor.netatmo_unser_heim_wohnzimmer_co2' %}
            entity_id: input_text.co2_wohnzimmer
          {% endif %}
      data:
        value: >-
          {% if states(trigger.entity_id)|int <= 800 %}
            grün mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 800 and
            states(trigger.entity_id)|int <= 1000 %}
            gelb mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1000 and
            states(trigger.entity_id)|int <= 1400 %}
            orange mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1400 %}
            rot mit {{ states(trigger.entity_id)|int }} ppm
          {% endif %}
  mode: queued
was auch funktionieren müsste ist:

Code: Alles auswählen

- alias: co2_alarm
  description: "CO2 - Ampel"
  trigger:
    - platform: state
      entity_id:
        - sensor.netatmo_unser_heim_wohnzimmer_buro_co2
        - sensor.netatmo_unser_heim_wohnzimmer_kuche_co2
        - sensor.netatmo_unser_heim_wohnzimmer_co2
  action:
    - service: input_text.set_value
      target:
      entity_id: >-
          {% set ent = trigger.entity_id %}
          {% if ent == 'sensor.netatmo_unser_heim_wohnzimmer_buro_co2' %}
            input_text.co2_buero
          {% elif ent == 'sensor.netatmo_unser_heim_wohnzimmer_kuche_co2' %}
            input_text.co2_kueche
          {% elif ent == 'sensor.netatmo_unser_heim_wohnzimmer_co2' %}
            input_text.co2_wohnzimmer
          {% endif %}
      data:
        value: >-
          {% if states(trigger.entity_id)|int <= 800 %}
            grün mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 800 and
            states(trigger.entity_id)|int <= 1000 %}
            gelb mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1000 and
            states(trigger.entity_id)|int <= 1400 %}
            orange mit {{ states(trigger.entity_id)|int }} ppm
          {% elif states(trigger.entity_id)|int > 1400 %}
            rot mit {{ states(trigger.entity_id)|int }} ppm
          {% endif %}
  mode: queued
Also anstatt:

Code: Alles auswählen

{% set ent = 'trigger.entity_id' %}
so:

Code: Alles auswählen

{% set ent = trigger.entity_id %}
und anstatt:

Code: Alles auswählen

 ent == sensor.netatmo_unser_heim_wohnzimmer_buro_co2
so:

Code: Alles auswählen

 ent == 'sensor.netatmo_unser_heim_wohnzimmer_buro_co2'
Edit

Den 2 Code habe ich noch korrigiert!
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

@Osorkon nein, leider nicht. Die Idee mit den Hochkommata hatte ich bereits :-/
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Ist ja nicht so, dass ich den Code bei mir nicht getestet habe! Bei mir läuft die Automation?!

Gruß
Osorkon
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Osorkon hat geschrieben: Mi 1. Sep 2021, 15:19 Ist ja nicht so, dass ich den Code bei mir nicht getestet habe?
Bei mir läuft die Automation?!

Gruß
Osorkon
Also das verstehe ich nicht.
Ich habe es gerade noch mal getestet. Keine Chance :( Da tut sich nix.

Du hast da nur die Hochkommata geändert?
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Hier mal mein Original Code, die sensoren habe ich natürlich durch ein mal helfer ersetzen müssen.

Version1:

Code: Alles auswählen

alias: test trigger to state 3
description: CO2 - Ampel
trigger:
  - platform: state
    entity_id:
      - input_number.test1
      - input_number.test2
      - input_number.test3
action:
  - service: input_text.set_value
    target:
      entity_id: |-
        {% set ent = trigger.entity_id %} {% if ent == 'input_number.test1' %}
          input_text.co2_1
        {% elif ent == 'input_number.test2' %}
          input_text.co2_2
        {% elif ent == 'input_number.test3' %}
          input_text.co2_3
        {% endif %}
    data:
      value: |
        {% if states(trigger.entity_id)|int <= 10 %}
          grün mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 10 and
          states(trigger.entity_id)|int <= 50 %}
          gelb mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 50 and
          states(trigger.entity_id)|int <= 80 %}
          orange mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 80 %}
          rot mit {{ states(trigger.entity_id)|int }} ppm
        {% endif %}
mode: queued
max: 10
Version 2:

Code: Alles auswählen

alias: test trigger to state 4
description: CO2 - Ampel
trigger:
  - platform: state
    entity_id:
      - input_number.test1
      - input_number.test2
      - input_number.test3
condition: []
action:
  - service: input_text.set_value
    target:
      entity_id: |-
        {% set ent = 'trigger.entity_id' %} {% if ent == 'input_number.test1' %}
          input_text.co2_1
        {% elif ent == 'input_number.test2' %}
          input_text.co2_2
        {% elif ent == 'input_number.test3' %}
          input_text.co2_3
        {% endif %}
    data:
      value: |
        {% if states(trigger.entity_id)|int <= 10 %}
          grün mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 10 and
          states(trigger.entity_id)|int <= 50 %}
          gelb mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 50 and
          states(trigger.entity_id)|int <= 80 %}
          orange mit {{ states(trigger.entity_id)|int }} ppm
        {% elif states(trigger.entity_id)|int > 80 %}
          rot mit {{ states(trigger.entity_id)|int }} ppm
        {% endif %}
mode: queued
max: 10
Dateianhänge
trigger.state.PNG
trigger.state.PNG (29.8 KiB) 33 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Ich werde das dann noch mal checken. Danke erst mal.
Ich melde mich ...
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Vielleicht noch eine andere Möglichkeit.
Wenn es Dir nur drum geht die Co2 Belastung auf dem Dashboard zu visualisieren, wäre vielleicht die Markdown Karte auch eine Alternative?

Code: Alles auswählen

type: vertical-stack
cards:
  - type: markdown
    content: |-
      {% if states.input_number.test1.state | int <= 10 %}
       <font color= #00FF00> 
          Büro {{states.input_number.test1.state}} ppm
       {% elif states.input_number.test1.state | int > 10  and
       states.input_number.test1.state |int <= 50  %}
        <font color= #FFFF00>
          Büro {{states.input_number.test1.state}} ppm
       {% elif states.input_number.test1.state | int > 50 and
       states.input_number.test1.state|int <= 80 %}
          <font color= #ff8800>
          Büro {{states.input_number.test1.state}} ppm
       {% elif states.input_number.test1.state | int > 80  %}
          <font color= #FF0000> 
          Büro {{states.input_number.test1.state}} ppm
       {% endif %}
    title: Co2 Belastung
  - type: markdown
    content: |-
      {% if states.input_number.test2.state | int <= 10 %}
       <font color= #00FF00> 
          Küche {{states.input_number.test2.state}} ppm
       {% elif states.input_number.test2.state | int > 10  and
       states.input_number.test2.state |int <= 50  %}
        <font color= #FFFF00>
          Küche {{states.input_number.test2.state}} ppm
       {% elif states.input_number.test2.state | int > 50 and
       states.input_number.test2.state|int <= 80 %}
          <font color= #ff8800>
          Küche {{states.input_number.test2.state}} ppm
       {% elif states.input_number.test2.state | int > 80  %}
          <font color= #FF0000> 
          Küche {{states.input_number.test2.state}} ppm
       {% endif %}
  - type: markdown
    content: |-
      {% if states.input_number.test3.state | int <= 10 %}
       <font color= #00FF00> 
          Wohnzimmer {{states.input_number.test3.state}} ppm
       {% elif states.input_number.test3.state | int > 10  and
       states.input_number.test3.state |int <= 50  %}
        <font color= #FFFF00>
          Wohnzimmer {{states.input_number.test3.state}} ppm
       {% elif states.input_number.test3.state | int > 50 and
       states.input_number.test3.state|int <= 80 %}
          <font color= #ff8800>
          Wohnzimmer {{states.input_number.test3.state}} ppm
       {% elif states.input_number.test3.state | int > 80  %}
          <font color= #FF0000> 
          Wohnzimmer {{states.input_number.test3.state}} ppm
       {% endif %}
Dateianhänge
markdown_co2.PNG
markdown_co2.PNG (22.9 KiB) 30 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Oder so:

Code: Alles auswählen

type: markdown
content: |-
  ## **CO2 Belastung**
  ---
  {% if states.input_number.test1.state | int <= 10 %}
    <font color= #00FF00> 
    Büro {{states.input_number.test1.state}} ppm
  {% elif states.input_number.test1.state | int > 10  and
    states.input_number.test1.state |int <= 50  %}
    <font color= #FFFF00>
    Büro {{states.input_number.test1.state}} ppm
  {% elif states.input_number.test1.state | int > 50 and
    states.input_number.test1.state|int <= 80 %}
    <font color= #ff8800>
    Büro {{states.input_number.test1.state}} ppm
  {% elif states.input_number.test1.state | int > 80  %}
    <font color= #FF0000> 
    Büro {{states.input_number.test1.state}} ppm
  {% endif %}
  ---
  {% if states.input_number.test2.state | int <= 10 %}
    <font color= #00FF00> 
    Küche {{states.input_number.test2.state}} ppm
  {% elif states.input_number.test2.state | int > 10  and
    states.input_number.test2.state |int <= 50  %}
    <font color= #FFFF00>
    Küche {{states.input_number.test2.state}} ppm
  {% elif states.input_number.test2.state | int > 50 and
    states.input_number.test2.state|int <= 80 %}
    <font color= #ff8800>
     Küche {{states.input_number.test2.state}} ppm
  {% elif states.input_number.test2.state | int > 80  %}
    <font color= #FF0000> 
     Küche {{states.input_number.test2.state}} ppm
  {% endif %}
  ---
  {% if states.input_number.test3.state | int <= 10 %}
    <font color= #00FF00> 
    Wohnzimmer {{states.input_number.test3.state}} ppm
  {% elif states.input_number.test3.state | int > 10  and
    states.input_number.test3.state |int <= 50  %}
    <font color= #FFFF00>
    Wohnzimmer {{states.input_number.test3.state}} ppm
  {% elif states.input_number.test3.state | int > 50 and
    states.input_number.test3.state|int <= 80 %}
    <font color= #ff8800>
    Wohnzimmer {{states.input_number.test3.state}} ppm
  {% elif states.input_number.test3.state | int > 80  %}
    <font color= #FF0000> 
    Wohnzimmer {{states.input_number.test3.state}} ppm
    {% endif %}
  ---
Dateianhänge
markdown_co2_v2.PNG
markdown_co2_v2.PNG (23.9 KiB) 26 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Also ich werde verrückt.
Ich habe deinen zweiten Vorschlag mal umgesetzt und siehe da, es funzt. Danke!!!

Also Code ist schon immer sehr kleinlich :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 123
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Übergabe einer Trigger-Variable an target

Beitrag von Osorkon »

Friedi hat geschrieben: Mi 1. Sep 2021, 17:41 Also Code ist schon immer sehr kleinlich :D
Man könnte auch auf die Idee kommen, den grafischen Editor zu nutzen! 🤪😀
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
Friedi
Beiträge: 70
Registriert: Do 22. Jul 2021, 16:57

Re: Übergabe einer Trigger-Variable an target

Beitrag von Friedi »

Osorkon hat geschrieben: Mi 1. Sep 2021, 18:11
Friedi hat geschrieben: Mi 1. Sep 2021, 17:41 Also Code ist schon immer sehr kleinlich :D
Man könnte auch auf die Idee kommen, den grafischen Editor zu nutzen! 🤪😀
Ich trenne gerade manuelle Automationen von denen der GUI. Danach kann ich das wieder…
Antworten