How to replace numerical sensor data with strings?

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.

1 Like