Ab der Home Assistant Version 2023.4 gibt es nun auch die Möglichkeit Macros zu schreiben die in den Templates verwenden werden können.
Dies ermöglicht es, immer wieder kehrende template Inhalte, nur ein mal zentral als Macro abzulegen und dann in Templates darauf zuzugreifen.
Siehe auch Release Notes
Ein schönes Bsp. ist z.B die Individuelle Formatierung des Zeitstempels, welches ich im Bereich Template Sammlungen vorgestellt habe.
Dieses Template lässt sich nun als Macro erstellen. Die Macros werden in /config/custom_templates/tools.jinja abgelegt.
Falls der Ordner custom_templates noch nicht existent ist, diese erstellen sowie die Datei tools.jinja
Die erstellten Macros kommen dann in die tools.jinja Datei
Code: Alles auswählen
{% macro user_datum(datum) %}
{% set wochentag = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"] %}
{% set monat = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] %}
{% set wochentag = wochentag[datum.weekday()] %}
{% set monat = monat[datum.month - 1] %}
{{ wochentag }}, der {{ datum.day }} {{ monat }} {{datum.year}}
{% endmacro %}
Das Macro heisst in diesem Bsp. user_datum, übergeben wird dann die Variable datum
Diese Macro lässt sich nun überall im Template verarbeiten.
Code: Alles auswählen
{% from 'tools.jinja' import user_datum %}
{{ user_datum(now()) }}
Damit wird das Macro user_datum importiert und now() als Zeitstempel übergeben.
Das Template
Code: Alles auswählen
{{ now() }}
hat als Ergebnis
2023-04-05 19:45:35.427707+02:00
Die Verwendung der macros im Template dagegen:
Mittwoch, der 5 April 2023
Für Alle die gern und viel mit Templates arbeiten, ist es sicher eine sinnvolle Erweiterung.
Ein wenig vergleichbar mit den Blueprints. Ändert man einen Blueprint, hat das Auswirkungen auf alle Automatisierungen, die den Blueprint verwenden.
So verhält es sich auch bei den Template Macros.
Viel Spaß mit den Template Marcos ab Home Assistant 2023.4
Gruß
Osorkon