Oligarch
(Oleksandr)
October 2, 2019, 2:57pm
1
- id: test
alias: test
trigger:
- platform: state
entity_id: binary_sensor.updater
from: 'off'
to: 'on'
action:
- service: notify.notify
data_template:
message: >
{%
set device =
{
"name": state_attr("climate.midea", "friendly_name"),
"state": {% if is_state("climate.midea", "off") %}
"turned off"
{% elif is_state("climate.midea", "unknown"}
"offline"
{% else %}
"turned on"
{% endif %}
}
%}
{{device.name}} {{device.state}}
Help, please. What I am doing wrong?
123
(Taras)
October 2, 2019, 3:05pm
2
Oligarch:
What I am duing wrong?
You are creating a template that contains nested {% %}
which is not supported.
You can’t put an expression (or logic) within an expression (or logic) like this:
{% … {% … %} …%}
Oligarch
(Oleksandr)
October 2, 2019, 3:09pm
3
But this work fine
message: >
{%
set device =
{
"name": state_attr("climate.midea", "friendly_name"),
"state": "test"
}
%}
How can I interpretate this part of code:
"state": {% if is_state("climate.midea", "off") %}
"turned off"
{% elif is_state("climate.midea", "unknown"}
"offline"
{% else %}
"turned on"
{% endif %}
123
(Taras)
October 2, 2019, 3:13pm
4
Yes because it doesn’t contain an expression within an expression. That is a single expression defining a variable whose value is a dictionary.
123
(Taras)
October 2, 2019, 3:21pm
5
Try this:
{% set values = {'on':'turned on', 'off':'turned off', 'unknown':'offline'} %}
{% set value = states('climate.midea') %}
{{state_attr('climate.midea', 'friendly_name')}} {{values[value] if value in values.keys() else 'unknown'}}