Smarte LED-Lichterkette mit programmierbarem Timer

Ziel

Mir gingen diese 6h Timer immer auf den Sack, weil das in unseren Breitengraden einfach zuwenig ist. Um 14/15 Uhr wird es schon dunkel und ich hätte gern Weihnachtsstimmung bis mind. 00:00 Uhr. Perfekt wäre sogar eine Lichtabhängige, also nicht zeitgesteuerte Aktivierung, also „schalte nach einer bestimmten Zeit ein wenn es dunkel wird“ und „schalte aus wenn es 00:10 Uhr ist).

Die Hardware

Die Funktionen

Dabei möchte ich mit der Firmware folgende funktionen erreichen: 1. durch druck auf den BOOT button möchte ich zwischen den Betriebsmodus „aus“, „an“, „timer start/ende“ umschalten können. 2. hält man im „an“ modus die BOOT taste länger als 2 Sekunden gedrückt, erfolgt keine modus-weiterschaltung sondern der dimmer wird aktiviert. Dieser steuert die Helligkeit der LED mittels PWM nach fast ganz unter oder nach ganz oben, je nachdem welche Richtung zuletzt gefahren wurde. Am oberen oder unteren Maximalwert kehrt sich die Richtung nach 2 sekunden wartezeit um. Beim loslassen der taste soll die eingestellte Helligkeit und Dimm-Richtung permanent gespeichert werden und auch einen Stromausfall/Batterietausch überleben. 3. nach dem booten des ESP (z.b. nach Austausch der Batterie) soll der zuletzt eingestellte Helligkeitswert wieder eingenommen werden. 4. im „timer“ modus bewirkt das drücken der boot-taste für mehr als 2 Sekunden wird der bisher gespeicherte wert für die einschaltdauer zurückgesetzt. Dieser Speicher zählt nun die Sekunden in denen die LED eingeschaltet bleibt. Drückt man in diesem modus ebenfalls länger als 2 Sekunden die boot taste, so beginnt die Licht-Dimmung wie im „an“ modus. Drückt man die Taste aber nur kurz, wird der einschaltdauer-zähler gestoppt und die LED geht aus, der „timer“ modus ist aber immer noch aktiv. ohne weiteren tastendruck soll das programm nun die ausschaltdauer berechnen (24h*60m*60s - einschaltdauer) und fortan nach ablauf der ausschaltdauer die LED für die programmierte einschaltdauer einschalten und anschließend auschalten. Dieser Rhytmus wiederholt sich also alle 24h.

Die Entwicklungsumgebung

Das Programm soll mit der Espressif-IDF 5.5 und VS Code geschrieben sein und besonderen wert auf Energiesparfunktionen legen. Solange keine Taste gedrückt wird, oder die einschalt/ausschaltzeitpunkte nicht erreicht sind, sollte der ESP möglichst wenig strom verbrauchen. Es muss aber sichergestellt sein das die PWM für die LED helligkeit zu jeder zeit erzeugt wird.