Template Sensoren von der alten “Sensor-Integration” auf die neue “Template-Integration” umstellen

Amazon Echo Spot, Smarter Wecker mit Alexa - Schwarz
Amazon Echo Spot, Smarter Wecker mit Alexa - Schwarz
--

Was sind Template Sensoren?

In der Regel binden wir Sensoren in Home Assistant inzwischen über das UI ein. Eine Ausnahme hier sind vor allem die Template-Sensoren. Bei Template-Sensoren handelt es sich um eine Sensor-Art, bei der über eine frei definierbare Logik der Sensorwert ermittelt wird. So lassen sich Werte anderer Sensoren aufsummieren, umrechnen oder in Abhängigkeit selbst definierter Bedingungen verschiedene Werte ausgeben.

Alte Template-Sensor Variante (Sensor Integration)

Ursprünglich wurden Template-Sensoren als Sensor- bzw. Binary-Sensor-Integration in der configuration.yaml angelegt.
Ein Beispiel für einen solchen Sensor sah wie folgt aus:

sensor:
  - platform: template
    sensors:
      solar_angle:
        friendly_name: "Sun angle"
        unit_of_measurement: "degrees"
        value_template: "{{ state_attr('sun.sun', 'elevation') }}"

Ein Beispiel für einen alten Binary-Template-Sensor ist eigentlich identisch, bis auf dass er eben unter der binary_sensor Integration eingereiht wird.

binary_sensor:
  - platform: template
    sensors:
      sun_up:
        friendly_name: "Sun is up"
        value_template: {{ state_attr('sun.sun', 'elevation') > 0 }}

Alle Informationen zu der veralteten Template-Sensor Variante findet Ihr unter folgendem Link:
https://www.home-assistant.io/integrations/template#legacy-sensor-configuration-format

Neue Template-Sensor Variante (Template Integration)

Inzwischen gibt es für Templates in Home Assistant eine eigene Integration. Dadurch ändert sich die Art der Template-Sensor Definition ein wenig. Das Grundprinzip bleibt aber das gleiche. Auch können die bestehenden Jinja Templates weiterhin verwendet werden.
Die neuen Sensoren werden somit also nicht mehr unter sensor und binary_sensor, sondern unter der template-Integration eingetragen werden. Zusätzlich heißen die zur Verfügung stehenden Parameter teilweise jetzt anders.

Ein Beispiel für die neue Art der Sensor-Deklaration sieht wie folgt aus:

template:
  - sensor:
      - name: "Temperature"
        unit_of_measurement: "°C"
        state: >
          {% set bedroom = states('sensor.bedroom_temperature') | float %}
          {% set kitchen = states('sensor.kitchen_temperature') | float %}
          {{ ((bedroom + kitchen) / 2) | round(1, default=0) }}

Alle Informationen zu den aktuellen Template Sensoren sind in der offiziellen Dokumentation unter folgendem Link zusammengefasst:
https://www.home-assistant.io/integrations/template

Umstellen alter Sensoren auf die neue Template-Integration

Die Umstellung der Template-Sensoren auf die neue Template-Integration ist wie man erkennen kann recht einfach.
Da es sich um die Template-Integration handelt beginnt der Eintrag mit “template:”.
Darunter folgt mit einer Einrückung von zwei Leertasten die Angabe der Sensor-Art, also “sensor:” und/oder “binary_sensor:”. Bei diesen Angaben handelt es sich jeweils um eine Liste. Heist hier können jeweils beliebig viele Sensor-Einträge hinterlegt werden.

Das heist die Zeile “sensor:” bzw. “binary_sensor” wird nur einmalig benötigt. Darauf folgen die weiteren Sensoren beginnend mit ” – name: xyz” aus “icon_template” wird “icon” aus ” value_template” wird “state” aus “attribute_templates” wird ” attributes”. Den Parameter “friendly_name” gibt es nicht mehr. Stattdessen wird nun mit “name” der angezeigte Namen als auch der Entity-Name definiert.
Die Angabe einer “unique_id” ist nicht zwingend notwendig. Gibt man sie an, sorgt das jedoch dafür, die Konfiguration des Sensors später auch über die grafische Oberfläche vornehmen zu können.

Die beiden Sensor-Beispiele von oben würden als Template-Integration also wie folgt aussehen:

template:
  - sensor:
      - name: "Sun angle"
        unit_of_measurement: "degrees"
        state: "{{ state_attr('sun.sun', 'elevation') }}"  
  - binary_sensor:
      - name: "Sun is up"
        state: {{ state_attr('sun.sun', 'elevation') > 0 }}

Hinweis für aufgeteilte configuration.yaml Dateien

Wie man die Konfiguration in einzelne Dateien aufteilen kann habe ich in einem Video bereits erklärt.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Alle die Ihre configuration.yaml nach diesem Prinzip aufgeteilt haben müssen darauf achten, dass die Einträge nach der Umstellung nicht mehr in den Dateien “sensors.yaml” und “binary_sensors.yaml” stehen dürfen. Ihr müsst falls noch nicht geschehen eine neue Datei “templates.yaml” anlegen und diese mit “template: !include templates.yaml” in eurer configuration.yaml einbinden.
Darin können dann alle Template-Sensoren angelegt werden. Natürlich wie auch in allen anderen eingebundenen Dateien ohne die Zeile der Integration. Also in diesem Fall ohne die Zeile “template:”.


Solltet Ihr noch Fragen haben, schaut gerne einfach auf unserem Discord vorbei. Dort kann euch sicher schnell bei eurem Problem geholfen werden!
https://smarthomeyourself.de/discord

Ansonsten findet Ihr auch weitere Informationen, Tipps und Tricks zum Thema Home Assistant in unserem Home Assistant Bereich:

https://smarthomeyourself.de/tutorial-serien/home-assistant-hilfe-tipps-und-tricks/


Ich wünsche euch viel Spaß beim umbauen Eurer Sensoren.