mrvautin

Home Assistant - Guide to Creating Template Sensors in Home Assistant

Words: 668 - (4 min read)

Home Assistant - Guide to Creating Template Sensors in Home Assistant

Home Assistant's Template Sensors allow you to create custom sensors using data from existing entities and templates. This guide will walk you through the process of creating Template Sensors using YAML.

Table of Contents

  1. Prerequisites
  2. Understanding Template Sensors
  3. Creating Template Sensors
  • Basic Structure
  • Adding to configuration.yaml
  1. Examples of Template Sensors
  • Combining Two Sensors
  • Calculating a Value
  • Formatting Time or Date
  1. Testing and Validating Configuration
  2. Restarting Home Assistant
  3. Advanced Use Cases
  4. Troubleshooting

Prerequisites

  1. A working installation of Home Assistant.
  2. Access to the Home Assistant configuration files, particularly configuration.yaml.
  3. Basic knowledge of YAML and Jinja2 templating syntax.

Understanding Template Sensors

Template Sensors in Home Assistant are virtual sensors. They are not physical devices but are computed based on templates, often combining data from multiple entities or transforming raw data into a more meaningful format.

Creating Template Sensors

Basic Structure

A Template Sensor is defined in the configuration.yaml file under the template: key. Below is the basic structure:

template:
  - sensor:
      - name: "Template Sensor Name"
        unique_id: "unique_id_for_this_sensor"
        state: "{{ states('sensor.existing_sensor') }}"
        attributes:
          custom_attribute: "{{ states('sensor.another_sensor') }}"
        unit_of_measurement: "°C"
        state_class: "measurement"

Adding to configuration.yaml

  1. Open your configuration.yaml file.
  2. Add the template: key if it doesn’t exist.
  3. Add your Template Sensor configuration under the template: section.

Examples of Template Sensors

Combining Two Sensors

template:
  - sensor:
      - name: "Total Power Consumption"
        unique_id: "total_power_consumption"
        state: "{{ states('sensor.power_meter_1') | float + states('sensor.power_meter_2') | float }}"
        unit_of_measurement: "W"

Calculating a Value

template:
  - sensor:
      - name: "Room Temperature in Fahrenheit"
        unique_id: "room_temp_fahrenheit"
        state: "{{ (states('sensor.room_temp_celsius') | float * 9/5) + 32 }}"
        unit_of_measurement: "°F"

Formatting Time or Date

template:
  - sensor:
      - name: "Current Time"
        unique_id: "current_time"
        state: "{{ now().strftime('%H:%M:%S') }}"

Testing and Validating Configuration

After adding your Template Sensor:

  1. Run a configuration check in Home Assistant:
  • Go to Settings > System > Check Configuration.
  • Fix any errors that appear.
  1. If no errors are found, restart Home Assistant to apply the changes.

Restarting Home Assistant

  1. Go to Settings > System > Restart.
  2. Wait for Home Assistant to restart and then check if the new Template Sensor appears under Developer Tools > States.

Advanced Use Cases

Adding Multiple Attributes

You can add custom attributes to your Template Sensors:

template:
  - sensor:
      - name: "Weather Overview"
        unique_id: "weather_overview"
        state: "{{ states('sensor.weather_condition') }}"
        attributes:
          temperature: "{{ states('sensor.outdoor_temp') }}"
          humidity: "{{ states('sensor.outdoor_humidity') }}"
          wind_speed: "{{ states('sensor.wind_speed') }}"

Using Conditions in Templates

Use Jinja2 conditionals to create dynamic sensor values:

template:
  - sensor:
      - name: "Weather Status"
        unique_id: "weather_status"
        state: >
          {% if states('sensor.temperature') | float > 30 %}
            Hot
          {% elif states('sensor.temperature') | float > 20 %}
            Warm
          {% else %}
            Cold
          {% endif %}

Troubleshooting

  • Error in Configuration Check: Verify the indentation and syntax in your configuration.yaml.
  • Sensor Not Updating: Check the state or availability of the referenced entities.
  • Template Syntax Errors: Test your template in Developer Tools > Templates in the Home Assistant interface.
  • Sensor Not Showing in UI: Ensure the unique_id is unique and correctly configured.

That’s it! You now have the knowledge to create and customize Template Sensors in Home Assistant. Use this feature to expand the functionality of your smart home system!

Related posts