Template Binary Sensor
The template
platform supports sensors which breaks out the state
and state_attributes
from other entities. The state of a template binary sensor can only be on
or off
.
To enable template binary sensors in your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
binary_sensor:
- platform: template
sensors:
sun_up:
value_template: '{{ states.sun.sun.attributes.elevation > 0}}'
friendly_name: 'Sun is up'
Configuration variables:
- sensors array (Required): List of your sensors.
- friendly_name (Optional): Name to use in the Frontend.
- device_class (Optional): The type/class of the sensor to set the icon in the frontend.
- value_template (Optional): Defines a template to extract a value from the payload.
- entity_id (Optional): Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update it’s state.
Examples
In this section you find some real life examples of how to use this sensor.
Sensor threshold
This example indicates true if a sensor is above a given threshold. Assuming a sensor of furnace
that provides a current reading for the fan motor, we can determine if the furnace is running by checking that it is over some threshold:
sensor:
- platform: template
sensors:
furnace_on:
value_template: {{ states.sensor.furnace.state > 2.5 }}
friendly_name: 'Furnace Running'
device_class: heat
Switch as sensor
Some movement sensors and door/window sensors will appear as a switch. By using a template binary sensor, the switch can be displayed as a binary sensors. The original switch can then be hidden by customizing.
binary_sensor:
- platform: template
sensors:
movement:
value_template: "{{ states.switch.movement.state == 'on' }}"
device_class: motion
door:
value_template: "{{ states.switch.door.state == 'on' }}"
device_class: opening
Combining multiple sensors, and using entity_id:
This example combines multiple CO sensors into a single overall
status. When using templates with binary sensors, you need to return
True
or False
explicitly. entity_id
is used to limit which
sensors are being monitored to update the state, making computing this
sensor far more efficient.
binary_sensor:
- platform: template
sensors:
co:
friendly_name: 'CO'
device_class: 'gas'
value_template: >-
{%- if is_state("sensor.bedroom_co_status", "Ok")
and is_state("sensor.kitchen_co_status", "Ok")
and is_state("sensor.wardrobe_co_status", "Ok") -%}
False
{%- else -%}
True
{%- endif %}
entity_id:
- sensor.bedroom_co_status
- sensor.kitchen_co_status
- sensor.wardrobe_co_status
Change the icon
This example shows how to change the icon based on the day/night cycle.
sensor:
- platform: template
sensors:
day_night:
friendly_name: 'Day/Night'
value_template: '{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'
icon_template: '{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'
Is anyone home?
This example is determining if anyone is home based on the combination of device tracking and motion sensors. It’s extremely useful if you have kids / baby sitter / grand parrents who might still be in your house that aren’t represented by a trackable device in home assistant. This is providing a composite of wifi based device tracking and z-wave multisensor presence sensors.
binary_sensor:
- platform: template
sensors:
people_home:
value_template: >-
{%- if is_state("device_tracker.sean", "home")
or is_state("device_tracker.susan", "home")
or is_state("binary_sensor.office_124", "on")
or is_state("binary_sensor.hallway_134", "on")
or is_state("binary_sensor.living_room_139", "on")
or is_state("binary_sensor.porch_ms6_1_129", "on")
or is_state("binary_sensor.family_room_144", "on")
-%}
True
{%- else -%}
False
{%- endif %}
entity_id:
- device_tracker.sean
- device_tracker.susan
- binary_sensor.office_124
- binary_sensor.hallway_134
- binary_sensor.living_room_139
- binary_sensor.porch_ms6_1_129
- binary_sensor.family_room_144