Zur Weihnachtszeit kann man mit Home Assistant beindruckende Sachen machen, beispielsweise die Weihnachtsbeleuchtung nach Sonnenuntergang automatisch ein- und um 01:00 Uhr wieder auszuschalten.
Ich hatte das schon letztes Jahr programmiert und war dann im Sommer verwundert, warum immer Abends die Dekoleuchte im Wohnzimmer „mysteriös“ anging… Des Rätsels Lösung war, dass eben an der Steckdose über Weihnachten die Christbaum Beleuchtung hing und die Automatisierung noch immer Griff.
Besser wäre es also diese Automatisierung noch auf einen gewissen Zeitraum einzuschränken.
Home Assistant hält mit dem templating zwei Möglichkeiten dafür bereit.
Inhalt
Zeitraum direkt in der Aktion als Bedingung einbinden
Dafür editiert man die entsprechende Automatisierung und trägt als Bedingung einen Zustand ein.
Darin definiert man dann die folgenden zwei Zeilen:
{% set today = now() %}
{{ today.month == 12 or ( today.month == 1 and ( 1 <= today.day <= 6 )) }}
Nach dem Speichern wird diese Automatisierung beim Sonnenuntergang nur noch dann starten, wenn es Entweder Dezember- oder Januar, aber vor dem 7. ist.
Zeitraum als binären Sensor zur Wiederverwendung konfigurieren
Man hat in dem Szenario schon mal zwei Aktionen und muss die template Zeilen zweimal hinzufügen.
Und möglicherweise möchte man auch noch andere Aktionen auf einen bestimmten Zeitraum einschränken.
Damit bietet es sich an ein binary_sensor
Template in Home Assistant zu erstellen, auf welchen man dann in den Aktionen referenzieren kann.
Als erstes bindet man für die Templates am besten eine include Datei in ~/config/configuration.yaml ein:
default_config:
# [...]
template: !include templates.yaml
# [...]
Und dann noch die Datei mit den Templates ~/config/templates.yaml:
- binary_sensor:
- name: "Christmas Time"
state: >
{% set today = now() %}
{{ today.month == 12 or ( today.month == 1 and ( 1 <= today.day <= 6 )) }}
Nachdem man die Dateien dann gespeichert- und in Home Assistant Entwicklerwerkzeuge -> TEMPLATE-ENTITÄTEN
neu geladen hat, kann man diese in der Aktion als Bedingung die Entität des Sensors Angeben:
Grundsätzlich kann das auf mehrere Arten gemacht werden, auch z.B: mit der (externen) scheduler Komponente.
Die folgenden Referenzen liefern noch weitere Inputs:
- Home Assistant: Template
- community.home-assistant.io: Automation During Date Range
- community.home-assistant.io: Template for Christmas Season
- community.home-assistant.io: Holiday Lights
- community.home-assistant.io: Custom Holiday Sensor
- github.com: scheduler-component und scheduler-card
Wunderschönen guten Abend,
die configuration.yaml hab ich vorbereitet und den Sensor bekomme ich auch angelegt. Jedoch bekomme ich es nicht hin, dass die Weihnachtszeit zB. von Ende November 23.11- 15.01 festgelegt wird. Könnten Sie mir hiermit helfen?
MfG
Sven
In dem Fall müsste man die Bedingung wahrscheinlich mit zwei AND Direktiven verknüpfen:
{{ (today.month >= 11 and today.day >= 23) or ( today.month == 1 and ( 1 <= today.day <= 15 )) }}
Vielen lieben Dank
Tatsächlich hab ich, mir heut über Tag, diese Lösung erarbeitet.
{% set today = now() %}
{{ today.month >= 11 and ( 25 >= today.day ) or ( today.month <= 1 and ( today.day <= 10 )) }}
Echt vielen lieben Dank. Diese Lösung hab ich auch nur durch ihren Beitrag erarbeiten können. 👍
Schön, dass es euch gibt, die ihr euch um uns Nichtwissende kümmert. 🤣🤣🤣
Mit freundlichen Grüßen
Sven Flaßhaar
Gern geschehen. 😊