Rat und Tat rings um Home Assistant Automationen.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 11:43
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 %}
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 12:41
Was hast Du den für einen trigger verwendet?
numeric_state ?
In dem Fall sollte es
lauten
Und nicht
Gruß
Osorkon
Einer muss ja für Ordnung sorgen.
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 12:58
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.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 13:07
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
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 15:06
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:
so:
und anstatt:
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.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 15:15
@Osorkon nein, leider nicht. Die Idee mit den Hochkommata hatte ich bereits :-/
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » 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
Einer muss ja für Ordnung sorgen.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 15:21
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?
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 15:30
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 (29.8 KiB) 683 mal betrachtet
Einer muss ja für Ordnung sorgen.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 15:32
Ich werde das dann noch mal checken. Danke erst mal.
Ich melde mich ...
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 16:34
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 (22.9 KiB) 680 mal betrachtet
Einer muss ja für Ordnung sorgen.
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 17:04
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 (23.9 KiB) 676 mal betrachtet
Einer muss ja für Ordnung sorgen.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 17:41
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
Osorkon
Administrator
Beiträge: 1972 Registriert: Sa 17. Jul 2021, 16:53
2
Wohnort: Langenargen
Has thanked: 61 times
Been thanked: 539 times
Kontaktdaten:
Beitrag
von Osorkon » Mi 1. Sep 2021, 18:11
Friedi hat geschrieben: ↑ Mi 1. Sep 2021, 17:41
Also Code ist schon immer sehr kleinlich
Man könnte auch auf die Idee kommen, den grafischen Editor zu nutzen!
Einer muss ja für Ordnung sorgen.
Friedi
Beiträge: 449 Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 37 times
Been thanked: 22 times
Beitrag
von Friedi » Mi 1. Sep 2021, 18:14
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
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…