what happens when that light is below 20? Seems like the sensor will be empty.
You are right, I should have added some more conditions.
Just wanted to show I got âanyâ templating to work. Before it only produced errors.
This would be a better code in the case of a light sensor falling below a certain threshold:
sensor 123:
- platform: template
sensors:
my_new_sensor:
friendly_name: "My New Sensor"
value_template: >-
{% if states('sensor.ms_light') | float > 20 %}
There is light!
{% else %}
There is darkness!
{% endif %}
But to also answer your question, the card in lovelace was empty when I did not send a value after starting HA, went to âThere is lightâ when a value of over 20 was published, and stayed at âThere is lightâ when a value below 20 was published.
Iâm trying to do something similar, with four values. I just got it to pass validity check after referencing multiple forum posts and examples. But the sensor comes back unavailable, and i get the following errors in the log:
TemplateError('TypeError: AllStates.__call__() takes 2 positional arguments but 3 were given') while processing template 'Template("{% if states('sensor.genset_mode', 0) %} off {% elif states('sensor.genset_mode', 1) %} manual {% elif states('sensor.genset_mode', 2) %} auto {% elif states('sensor.genset_mode', 3) %} test {% endif %}")' for attribute '_attr_native_value' in entity 'sensor.genset_status'
Error while processing template: Template("{% if states('sensor.genset_mode', 0) %} off {% elif states('sensor.genset_mode', 1) %} manual {% elif states('sensor.genset_mode', 2) %} auto {% elif states('sensor.genset_mode', 3) %} test {% endif %}")
I donât understand what those mean.
- platform: template
sensors:
genset_status:
value_template: >-
{% if states('sensor.genset_mode', 0) %}
off
{% elif states('sensor.genset_mode', 1) %}
manual
{% elif states('sensor.genset_mode', 2) %}
auto
{% elif states('sensor.genset_mode', 3) %}
test
{% endif %}
you arenât using âstates()â correctly.
either:
value_template: >-
{% if states('sensor.genset_mode') | int == 0 %}
off
{% elif states('sensor.genset_mode') | int == 1 %}
manual
{% elif states('sensor.genset_mode') | int== 2 %}
auto
{% elif states('sensor.genset_mode') | int == 3 %}
test
{% endif %}
or:
value_template: >-
{% if states('sensor.genset_mode', '0') %}
off
{% elif is_state('sensor.genset_mode', '1') %}
manual
{% elif is_state('sensor.genset_mode', '2') %}
auto
{% elif is_state('sensor.genset_mode', '3') %}
test
{% endif %}
No thatâs not working either.
First example gives these errors:
TemplateError('ValueError: Template error: int got invalid input 'unknown' when rendering template '{% if states('sensor.genset_mode') | int == 0 %} off {% elif states('sensor.genset_mode') | int == 1 %} manual {% elif states('sensor.genset_mode') | int == 2 %} auto {% elif states('sensor.genset_mode') | int == 3 %} test {% endif %}' but no default was specified') while processing template 'Template("{% if states('sensor.genset_mode') | int == 0 %} off {% elif states('sensor.genset_mode') | int == 1 %} manual {% elif states('sensor.genset_mode') | int == 2 %} auto {% elif states('sensor.genset_mode') | int == 3 %} test {% endif %}")' for attribute '_attr_native_value' in entity 'sensor.genset_status'
Error while processing template: Template("{% if states('sensor.genset_mode') | int == 0 %} off {% elif states('sensor.genset_mode') | int == 1 %} manual {% elif states('sensor.genset_mode') | int == 2 %} auto {% elif states('sensor.genset_mode') | int == 3 %} test {% endif %}")
And the second one gives
TemplateError('TypeError: AllStates.__call__() takes 2 positional arguments but 3 were given') while processing template 'Template("{% if states('sensor.genset_mode', '0') %} off {% elif is_state('sensor.genset_mode', '1') %} manual {% elif is_state('sensor.genset_mode', '2') %} auto {% elif is_state('sensor.genset_mode', '3') %} test {% endif %}")' for attribute '_attr_native_value' in entity 'sensor.genset_status'
Error while processing template: Template("{% if states('sensor.genset_mode', '0') %} off {% elif is_state('sensor.genset_mode', '1') %} manual {% elif is_state('sensor.genset_mode', '2') %} auto {% elif is_state('sensor.genset_mode', '3') %} test {% endif %}")
Edit: Caught it. The first one works, just used the wrong entity.
Thanks mate.