Home Assistant Timer mit WLED und Alexa
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:
- Alexa Media Player Integration
- LED Leiste (LEDs müssen einzeln steuerbar sein)
- WLED Controller
- Netzteil
- Aluprofil mit Diffusor (optional)
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