2015-12-15 08:22:25 +01:00

2.6 KiB

layout, title, description, date, sidebar, comments, sharing, footer
layout title description date sidebar comments sharing footer
page Templating Instructions how to use the templating feature of Home Assistant. 2015-12-12 12:00 false false true true

The template helper enables one to mathematically manipulate values and use variables to extract values from JSON. If the entity has template support then the value_template key can be set in the configuration.yaml file.

value_template: '{% raw %}{{ value.x }}{% endraw %}'

For a complete overview, check the Jinja2 documentation.

{% linkable_title Accessing variables %}

The variables are handled the same way as in Python.

Method description
{% raw %}{{ value.x }}{% endraw %} or {% raw %}{{ value.['x'] }}{% endraw %} Normal value
{% raw %}{{ value_json.x }}{% endraw %} JSON value

The evaluation leads to an empty string if it's unsuccessful and printed or iterated over.

{% linkable_title The states variable %}

The template support has a special states variable:

  • Iterating states will yield each state sorted alphabetically by entity id
  • Iterating states.domain will yield each state of that domain sorted alphabetically by entity id
  • states.sensor.temperature returns state object for sensor.temperature

Example templates and what they could result in:

Template Output
{% raw %}{{ states.device_tracker.paulus.state }}{% endraw %} home
{% raw %}{% for state in states.sensor %}{{ state.entity_id }}={{ state.state }}, {% endfor %}{% endraw %} senor.thermostat=24, sensor.humidity=40,

{% linkable_title Mathematical functions %}

The mathematical methods convert strings to numbers automatically before they are doing their job. This could be useful if you recieve data in the wrong unit of measurement and want to convert it. They are used like the standard Jinja2 filters.

Method description
multiply(x) Multiplies the value with x
round(x) Maximal number x of decimal places for the value

A sample sensor entry for your configuration.yaml file could look like this:

# Example configuration.yaml entry
sensor:
  platform: dweet
  device: temp-sensor012
  value_template: '{% raw %}{{ value_json.temperature | multiply(1.02) | round(2) }}{% endraw %}'
  unit_of_measurement: "°C"