Hallo zusammen,
dieses Home-Assistant-Package schaltet montags bis donnerstags um 23:30 Uhr automatisch alle eingeschalteten Lichter aus. In Räumen mit erkannter Bewegung/Präsenz bleibt das Licht an.
Wenn wir an einem Werktag mal länger wach bleiben aktivieren wir eine Option hiervon, damit das Licht sich nicht automatisch ausschaltet:
-
einen Button im Home-Assistant-Dashboard
-
ein Home-Assistant-Widget auf dem Smartphone
-
einen Sprachbefehl in Google Home
Um 06:00 Uhr wird die Ausnahme automatisch zurückgesetzt.
Google Home und natürliche Sprachbefehle
Dafür muss input_boolean.stay_up_late_tonight für Google Home freigegeben werden (z.B. via einer Matter Bridge). Im Anschluss kann man eine Automation mit normalen Sprachbefehlen als Starter in Google Home erstellen, z.B.:
-
„Wir bleiben heute länger wach.“
-
„Heute wird es später.“
-
„Ich gehe heute später ins Bett.“
Als Aktion wird „Heute länger wach“ eingeschaltet.
Für das Ausschalten kann man eine zweite Automation mit Sätzen wie „Wir gehen jetzt schlafen“ anlegen. Normalerweise ist das aber nicht nötig, da sich der Schalter morgens automatisch zurücksetzt.
YAML des Packages
Die verwendeten Entitäten sind Platzhalter und müssen durch die eigenen Bewegungsmelder und Lichter ersetzt werden.
# packages/bedtime_routine.yaml
input_boolean:
stay_up_late_tonight:
name: Heute länger wach
icon: mdi:weather-night
automation:
- id: bedtime_turn_off_lights
alias: "Schlafenszeit: Lichter ausschalten"
description: >-
Schaltet montags bis donnerstags um 23:30 Uhr alle Lichter aus.
Bei aktivierter Ausnahme wird die Abschaltung übersprungen.
mode: single
triggers:
- trigger: time
at: "23:30:00"
conditions:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- condition: state
entity_id: input_boolean.stay_up_late_tonight
state: "off"
actions:
- variables:
protected_motion_lights: >-
{% set ns = namespace(lights=[]) %}
{# Raum 1: Entitäten ersetzen #}
{% if is_state('binary_sensor.bewegungsmelder_raum_1', 'on') %}
{% set ns.lights = ns.lights + ['light.licht_raum_1'] %}
{% endif %}
{# Raum 2: Entitäten ersetzen #}
{% if is_state('binary_sensor.bewegungsmelder_raum_2', 'on') %}
{% set ns.lights = ns.lights + ['light.licht_raum_2'] %}
{% endif %}
{# Raum 3: Entitäten ersetzen #}
{% if is_state('binary_sensor.bewegungsmelder_raum_3', 'on') %}
{% set ns.lights = ns.lights + ['light.licht_raum_3'] %}
{% endif %}
{{ ns.lights }}
lights_to_turn_off: >-
{{ states.light
| selectattr('state', 'eq', 'on')
| map(attribute='entity_id')
| reject('in', protected_motion_lights)
| list }}
- action: light.turn_off
target:
entity_id: "{{ lights_to_turn_off }}"
- id: bedtime_reset_stay_up_late
alias: "Schlafenszeit: Ausnahme zurücksetzen"
description: Setzt die Ausnahme jeden Morgen automatisch zurück.
mode: single
triggers:
- trigger: time
at: "06:00:00"
actions:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.stay_up_late_tonight
Optionaler Dashboard-Button
type: button
entity: input_boolean.stay_up_late_tonight
name: Heute länger wach
icon: mdi:weather-night
show_state: true
tap_action:
action: toggle
Für das Smartphone-Widget wird in der Home-Assistant-App dieselbe Entität ausgewählt:
input_boolean.stay_up_late_tonight
Falls Packages noch nicht aktiviert sind, kommt diese Einstellung in die configuration.yaml:
homeassistant:
packages: !include_dir_named packages
Anschließend die Package-Datei als packages/bedtime_routine.yaml speichern, die Konfiguration prüfen und Home Assistant neu starten.