Home Assistant Timer mit WLED und Alexa

led timer

Ich habe mir letzten dieses Video angeschaut und fand die Idee super, ein LED-Strip als visuellen Timer zu verwenden. In dem Video sagt Paul, dass es ewig gedauert hat, dies einzustellen. Außerdem hat er nur fest vorgegebene Timer und es sieht so aus, als ob das über eine Alexa Routine gemacht wird. In diesem Artikel möchte ich euch zeigen, wie ihr einen Alexa Timer visuell mit Home Assistant und WLED erstellen könnt.

Ich bin kein Fan von Alexa Routinen, da ich finde, dass die Möglichkeiten dort recht begrenzt sind und wollte daher eine Möglichkeit haben, alles direkt in Home Assistant zu steuern.

Was man dafür benötigt, ist:

Ich konzentriere mich hier nur auf den Home Assistant Automation teil. Wie WLED eingerichtet wird, findet man überall auf YouTube.

Meine Voraussetzungen waren:

  • Soll per Alexa steuerbar sein
  • Keine vordefinierten Timer
  • Komplett über Home Assistant gesteuert
  • Die letzten 10 Sekunden sollen gesondert angezeigt werden
  • Wenn Timer beendet ist, soll ein Effekt angezeigt werden

Vorbereitungen in Home Assistant

Als erstes benötigt man 5 Helfer. Klickt also in Home Assistant auf „Einstellungen – Geräte & Dienste – Helfer – Helfer erstellen“ und erstellt 5x den Helfer „Zahlenwert-Eingabe“

1. Helfer für die Prozentzahl

  • Name: Timer Progress
  • Minimalwert: 0
  • Maximalwert: 100
  • Schrittweite 1
  • Maßeinheit: %

2. Helfer für verbleibende Zeit

  • Name: Timer Remaining
  • Minimalwert: 0
  • Maximalwert: 3600
  • Schrittweite: 1
  • Maßeinheit: s

3. Helfer für verbleibende Zeit (Minus 10 Sekunden – optional)

  • Name: Timer Remaining Offset
  • Minimalwert: 0
  • Maximalwert: 3600
  • Schrittweite: 1
  • Maßeinheit: s

4. Helfer für die Gesamtzeit

  • Name: Timer Starter
  • Minimalwert: 0
  • Maximalwert: 3600
  • Schrittweite: 1
  • Maßeinheit: s

5. Helfer für Anzahl der LEDs

  • Name: Timer LEDs
  • Minimalwert: 0
  • Maximalwert: 28 (tragt hier die Anzahl eurer LEDs ein)
  • Schrittweite: 1
  • Maßeinheit: s

Ich verwende den Maximalwert von 3600 Sekunden, weil ich meistens keine Timer setze, die über eine Stunde sind. Ist das bei euch der Fall, passt den Wert gerne an.

Öffnet nun den Home Assistant File Editor eures Vertrauens in fügt in der Datei configuration.yaml folgende Zeilen hinzu (Github)

Ersetzt bei der URL die IP durch die IP eures WLED Controllers. Falls ihr keine weißen LEDs habt, könnt ihr den letzten Abschnitt weglassen. Speichert die Datei und startet Home Assistant neu.

Erstellt in WLED ein Preset mit einem Solid Effekt in beliebiger Farbe. Außerdem ein Preset mit dem Effekt, den Ihr anzeigen lassen wollt, wenn der Timer abgelaufen ist.

Home Assistant Automation für Alexa Timer

Nun erstellt ihr eine neue Automation. Die Automation starten dann, wenn die Entität sensor.echo_show_next_timer vom Status „Unbekannt“ zu einem beliebigen Zustand wechselt. Also: Sobald der Timer gestartet wird. Achtung: Manchmal dauert es einige Sekunden, bis dies getriggert wird. Dieser Verzögerung wirkt sich auch auf die gesetzte Gesamtdauer aus, ist aber in meinem Fall nicht schlimm.

Diese Punkte werden in der Automation durchgeführt:

  • Helfer „Timer LEDs“ auf 1 setzen (kann man auch auf 0 setzen, aber ich möchte eine LED eingeschaltet haben, sobald der Timer anfängt)
  • Helfer „Timer Progress“ auf 0 setzen
  • Zahlenwert „Red“ (dieser wurde aus dem Code, den wir in die configuration.yaml kopiert haben, erzeugt) auf 255 setzen, um einen roten Fortschrittsbalken zu erhalten
  • Zahlenwert „Green“ auf 0 setzen
  • Zahlenwert „Blue“ auf 0 setzen
  • Wählt euer oben definiertes Preset aus (das ist notwendig, um ein ggf. noch aktiven Effekt zu deaktivieren)
  • Sendet die Informationen per REST Befehl an WLED
  • Die Gesamtdauer des Timers wird in den Helfer „Timer Starter“ geschrieben
  • Die LED Leiste wird eingeschaltet

Die nächsten Schritte führen wir so oft aus, bis der Wert „Timer Remaining Offset“ unter 1 ist, also die Zeit abgelaufen ist:

  • Wandle den aktuellen Wert des Timers in Sekunden um und setze diesen Wert in den Helfer „Timer Remaining“
  • Berechne daraus den Wert für „Timer Remaining Offset“ und schreibe ihn in den Helfer (optional)
  • Berechne anhand der Gesamtzeit und dem aktuellen Wert des Timers, den aktuellen Prozentwert und wie viel der Zeit bereits abgelaufen ist. Schreibe diese Werte in „Timer Remaining“ und „Timer Progress“
  • Berechne anhand der Prozentzahl und der Anzahl meiner LEDs, wie viele LEDs eingeschaltet werden müssen
  • Warte 1 Sekunde
  • Sende einen API-Befehl an WLED, um die entsprechende Anzahl an LEDs einzuschalten

Automation „Last Seconds“ (Optional)

Meine letzten 10 Sekunden sollen statt mit einem roten Streifen, mit einem grünen Streifen angezeigt werden. Hierfür wird im Endeffekt das Gleiche gemacht, wie in der oberen Automation. Einziger Unterschied ist, dass der Trigger ausgelöst wird, wenn der Helfer „Timer Remaining“ unter 11 ist, also die letzten 10 Sekunden laufen. Außerdem wird der Helfer „Timer Starter“ auf 10 gesetzt.

Die sich wiederholende Bedingung wird so lange durchlaufen, bis der Helfer „Timer Progress“ über 100 ist, also der Timer abgelaufen ist.

Automation „Timer Finished“

Wenn der Helfer „Timer Remaining“ unter 1 ist, also der Timer abgelaufen ist, wird das Preset für den gewünschten Effekt gestartet und nach 5 Sekunden wieder ausgeschaltet.

Hier findet ihr ein Video, wie es am Ende aussieht

Den Code zu den 3 Automationen findet ihr auf meiner Patreon Seite

Post Comment

Das könnte dich auch interessieren...