Einen Lichtwecker mit Home Assistant realisieren

von 09.03.2024Smart Home0 Kommentare

Mit einem normalen Wecker wird man unsanft aus dem Schlaf gerissen. Mit dem langsamen hochdimmen einer Lichtquelle wird man ggf. schon etwas aus dem Tiefschlaf geholt und vielleicht sogar aufgeweckt, wenn das Licht entsprechend hell ist. So einen Lichtwecker kann man natürlich fertig kaufen. Allerdings sind die Geräte überteuert und meist von der Lichtleistung zu gering, so dass es nicht wirklich den Effekt erzielt. Mit Home Assistant und einer LED RGB Lichtleiste, die sich bei mir auf meinem Kleiderschrank befindet, habe ich mir einen sehr effizienten und hellen Lichtwecker gebaut. Mit diesem wird ein Sonnenaufgang simuliert, der sogar die entsprechenden Farben wiedergibt. Erst Rot, dann Orange und Gelb bis hin zu Weiß. Prinzipiell kann man jede LED Lichtquelle verwenden, die dimmbar ist und die Farbe wechseln kann. Ich habe einen Philipps Hue LED Strip (Amazon Affiliate Link), der prima funktioniert. Bei manchen LED Lichtern kann die Transition, d.h. der weiche Übergang zu Helligkeit und Farben ggf. nicht funktionieren, weshalb ich die Phillips Hue Kompenten (Amazon Affiliate Link) empfehle.

Über eine Home Assistant Kachel wird der Wecker gesteuert. Einstellbar ist die Weckzeit und die Fade-in-Dauer, d.h. wie lange der Dimmvorgang bis zur vollen Helligkeit und Lichtfarbe dauern soll. In der Regel machen 10 bis 20 Minuten Sinn. Weiterhin kann eingestellt werden, ob der Wecker gernerell aktiv sein soll, bzw. auch am Wochenende.

 

 

 

 

 

 

 

 

 

Zunächst müssen in der Home Assistant „configuration.yaml“ folgende Sensoren und Input Values definiert werden. Die Input Values können in den aktuellen Home Assistant Versionen auch über Helper per GUI angelegt werden. Danach folgt die Definition der Home Assistant Kachel. Weiterhin wird eine Automatisierung für den Trigger des Alarms angelegt und der eigentliche Fade-In-Lichtwecker wird per Skript gesteuert, welches von der Automatisierung aufgerufen wird. Nachfolgend findet Ihr den gesamten Code.

Home Assistant Sensoren und Input Values in der "configuration.yaml"

sensor:
  - platform: time_date
  - platform: template
    sensors:
      wakeup_alarm_time:
        friendly_name: 'Weckzeit'
        value_template: '{% if states.input_number.wakeup_hour.state|length == 3 %}0{% endif %}{{ states.input_number.wakeup_hour.state | int }}:{% if states.input_number.wakeup_minutes.state|length == 3 %}0{% endif %}{{ states.input_number.wakeup_minutes.state | int }}'

  - platform: template
    sensors:
      wakeup_start_time_lights:
        friendly_name: 'Fade-in Start'
        value_template: >
          {% if states.sensor.wakeup_alarm_time and states.input_number.wakeup_duration %}
          {% set alarmtime = states.sensor.wakeup_alarm_time.state %}
          {% set alarm_hour = alarmtime.split(":")[0] | int %}
          {% set alarm_min = alarmtime.split(":")[1] | int %}
          {% set light_dur = states.input_number.wakeup_duration.state | int %}
          {% set alarm_min_light = alarm_min - light_dur %}
          {% if alarm_min_light  < 0 %}
          {% set alarm_min_light = alarm_min_light + 60 %}
          {% set alarm_hour_light = alarm_hour - 1 %}
          {% if alarm_hour_light < 0 %}{% set alarm_hour_light = 23 %}{% endif %}
          {% if alarm_hour_light < 10 %}0{% endif %}{{ alarm_hour_light}}:{% if alarm_min_light < 10 %}0{% endif %}{{ alarm_min_light }}
          {% else %}
          {% if alarm_hour < 10 %}0{% endif %}{{ alarm_hour }}:{% if alarm_min_light < 10 %}0{% endif %}{{ alarm_min_light }}
          {% endif %}
          {% endif %}

  - platform: template
    sensors:
      wakeup_fadein_duration:
        friendly_name: 'Fade-in Dauer'
        value_template: '{{ states.input_number.wakeup_duration.state | int }}'
        unit_of_measurement: 'min'

input_number:
  wakeup_hour:
    name: 'Stunde'
    icon: mdi:clock-in
    min: 0
    max: 23
    step: 1

  wakeup_minutes:
    name: 'Minute'
    icon: mdi:clock-in
    min: 0
    max: 55
    step: 5

  wakeup_duration:
    name: 'Fade-in Dauer'
    icon: mdi:clock-in
    min: 5
    max: 60
    step: 5

input_boolean:
  wakeup:
    name: 'Wecker einschalten'
    icon: mdi:power
  wakeup_weekends:
    name: 'Auch am Wochenende'
    icon: mdi:power

Home Assistant Kachel zur Steuerung des Lichtweckers

entities:
  - entity: Euer LED Licht
  - entity: sensor.wakeup_alarm_time
  - entity: sensor.wakeup_start_time_lights
  - entity: sensor.wakeup_fadein_duration
  - entity: input_number.wakeup_hour
  - entity: input_number.wakeup_minutes
  - entity: input_number.wakeup_duration
  - entity: input_boolean.wakeup
  - entity: input_boolean.wakeup_weekends
show_header_toggle: false
title: Schlafzimmer
type: entities

Home Assistant Automatisierung, um den Lichtwecker zu triggern

alias: WakeUp Light Bedroom
trigger:
  - platform: template
    value_template: >-
      {{ states.sensor.time.state ==
      states.sensor.wakeup_start_time_lights.state }}
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: input_boolean.wakeup
        state: "on"
      - condition: or
        conditions:
          - condition: state
            entity_id: input_boolean.wakeup_weekends
            state: "on"
          - condition: time
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
action:
  - service: script.wakeup_bedroom
    data: {}

Home Assistant Skript zum Ablauf des Lichtweckers (Helligkeit und Lichtfarbe)

alias: Wakeup lighting
sequence:
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 0
      rgb_color:
        - 128
        - 0
        - 0
  - delay:
      seconds: 1
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 1
      rgb_color:
        - 128
        - 0
        - 0
  - delay:
      seconds: 1
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 35
      rgb_color:
        - 128
        - 0
        - 0
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 -1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 70
      rgb_color:
        - 192
        - 64
        - 0
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 105
      rgb_color:
        - 224
        - 128
        - 32
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 140
      rgb_color:
        - 255
        - 176
        - 96
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 175
      rgb_color:
        - 255
        - 224
        - 160
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 210
      rgb_color:
        - 255
        - 255
        - 224
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
  - delay: >-
      00:00:{{ (( states.input_number.wakeup_duration.state | float * 60 / 7 ) |
      round ) | int }}
  - service: light.turn_on
    data_template:
      entity_id: Euer LED Licht
      brightness: 255
      rgb_color:
        - 240
        - 255
        - 255
      transition: >-
        {{ (( states.input_number.wakeup_duration.state | float * 60 / 7 - 1 ) |
        round ) | int }}
mode: single

Home Assistant Automation zum Beenden des Skripts wenn man wach ist, d.h. das Licht ausschaltet

alias: Schlafzimmer WakeUp abbrechen
trigger:
  - platform: state
    entity_id:
      - Euer LED Licht
    from: "on"
    to: "off"
condition:
  - condition: state
    entity_id: script.wakeup_bedroom
    state: "on"
action:
  - service: script.turn_off
    data_template:
      entity_id: script.wakeup_bedroom
mode: single

Die perfekte Basis für Euer Home Assistant System ist kein Raspberry Pi, sondern ein Mini PC, der kaum mehr Strom braucht dafür aber viel mehr Leistung hat. Nach meiner Erfahrung läuft Home Assistant dort viel flüssiger. Bei mir sogar mit Proxmox VE als Basis zusammen mit vielen anderen Anwendungen. Weiterhin gibt es eine Vielzahl spannender ZigBee Komponenten, sich prima mit Home Assistant und ZigBee2MQTT verwenden lassen. Für die Kommunikation zwischen ZigBee2MQTT und den ZigBee Geräten wird noch eine Bridge, hier ein günstiger Sonoff USB-Stick, benötigt. Alles könnt Ihr nachfolgend günstig bestellen.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Weitere relevante Beiträge:

NFC Musikbox für Kinder mit Home Assistant und Google Nest Mini

NFC Musikbox für Kinder mit Home Assistant und Google Nest Mini

Kleinkinder können mit einem Smarten Lautsprecher wie dem Google Nest Mini nicht umgehen. Mit der Heimautomatisierung Home Assistant und ein wenig Elektronik lässt sich ein NFC Kartenleser bauen, der mit Home Assistant kommuniziert. Home Assistant wiederum spielt ausgehend von den aufgelegten NFC Karten die zugewiesene Musik ab. Ein Riesenspaß für Kinder!

Bafang BBS01 E-Bike Motor programmieren

Bafang BBS01 E-Bike Motor programmieren

Der Bafang BBS01 ist ein E-Bike Mittelmotor zum Nachrüsten eines normalen Fahrrads. Mit der richtigen Programmierung macht der Motor noch mehr Spaß. Hier findet Ihr mein bevorzugtes Setup inkl. kleiner Anleitung.