Skip to main content Skip to page footer

Der clevere Regenbogen

eine smarte Nachtlampe

04. Oktober 2024

Das Projekt

Ein weiteres Kapitel aus dem Buch „Dinge die die Welt nicht unbedingt braucht“. Unser kleiner Sohn hat eine Lese-/Nachtlampe in Form einer aus Holz ausgesägten Wolke. Diese ist mit einem LED Streifen hintergrundbeleuchtet, so dass es zum Lesen ein schönes, indirektes Licht gibt. Das taugte mit einem einfachen mechanischen Schalter auch eine ganze Zeit lang gut. Bis ich die WS2812B RGB – LED-Streifen entdeckte. Das ganze garniert mit einem ESP8266 sollte dem Nachtlicht doch ein wenig Intelligenz einhauchen. Der Plan: zur Bettgehzeit sollen die Rollläden herunterfahren und sich getriggert über einen MQTT Befehl das Leselicht in Regenbogenfarben einschalten. Der vorhandene Knopf schaltet weiter zu einem hellen Leselicht. Erneuter Druck schaltet das Licht wieder aus. Diese Modi können selbstverständlich auch über MQTT gesteuert werden. 

Die Teileliste

D1 Mini Node ECULinkFertiges Modul auf Basis eines ESP8266
SchalterLinkgibt es in den verschiedensten Farben
NetzteilLinkje nach Länge des LED Strips ist ein stärkeres Netzteil notwendig!
WS2812B LEDstripLinkGibt es in verschiedenen Längen, beliebig teilbar
Diverse Kleinteile Jumperkabel, DC-Einbaubuchse, Lochrasterplatine, Silberdraht

Die Schaltung

Der Schaltplan, gezeichnet in KiCAD (kommt in Kürze).

Die Platine

Bei diesem Projekt kam eine klassische Lochrasterplatine zum Einsatz. Die Schaltung an sich habe ich mit Silberdraht und Litze aufgebaut. Dank bescheidener Löt-Erfahrung und einigem bezahlten Lehrgeld in meinem Leben durch zu viel Hitze gegrillter Bauteile habe ich mir angewöhnt mit Federleisten zu arbeiten. Erst löten, dann die Bauteile stecken. Der Blutdruck freut sich und eine spätere Umrüstung ist auch einfacher möglich.

Der Code

Der Code ist relativ schnell erklärt. Auch hier wieder der Hinweis, dass ich Autodidakt bin. Er ist funktional, nicht schön und hat sicher noch an der ein oder anderen Stelle Luft nach oben. Zum Beispiel im Design der MQTT-„API“. Da gibt es bessere best practices wie ich mittlerweile weiß. Aber wie gesagt, für mich tut es und wenn es dem ein oder anderen als Grundlage dient, freut mich das.

Du findest den Code zum Download auf github unter

https://github.com/servus-technik/nightlight

Geschrieben, getestet und auf den D1 MINI geflashed habe ich den Code mit der Arduino IDE. Die Einbindung in mein WiFi erfolgt über die ESP8266Wifi.h Bibliothek. PubSubClient kümmert sich um MQTT und Adafruit_NeoPixel schließlich steuert den LED Strip an. Es folgt die notwendige Initialisierung der Clients für WiFi und MQTT. Danach gilt es im Code vor dem Flashen noch einiges anzupassen: die SSID Eures WiFi Netzwerkes nebst zugehörigem Passwort. Das gleiche für den MQTT Broker in Form dessen IP (z.B. 192.168.178.222), einem Usernamen und Passwort. Prinzipiell kann man den Broker auch offen betreiben, ich empfehle Euch allerdings dringend einen User/Passwortpaar anzulegen, damit ein Gast im Netzwerk keinen Unsinn mit Euren MQTT Strecken anstellen kann.

Weiter geht es mit dem LED Strip: bitte stellt ein wie viele RGB LEDs dieser umfasst. Bei der Wolke von Sohnemann sind es 78 Stück. Die initiale Helligkeit habe ich mit 200/255 angegeben.

PSTATE beschreibt den Status der Statemachine, vanim die Dauer zwischen zwei Animationsschritten in ms Wenn es Euch also zu kurz oder lange ist, könnt ihr es hier zentral ändern.

Danach startet das Setup des Programms. Dabei gibt es Debug/Statusmeldungen sowohl über den seriellen Port als auch MQTT. Kann selbstverständlich beliebig erweitert oder geändert werden.

Da ich den iobroker in Ergänzung mit einer Homematic Installation fahre, habe ich mir in MQTT den Status „ON_ACTUAL“ gebaut. Dieser findet sich auch in der Homematic Welt wieder und so habe ich eine nahtlose Verbindung der Statusmeldungen im Kontext der bei mir eingesetzten Lichter. 

Weitere Beschreibung und vor allem Bilder in Kürze.

Suche

Suchformular
Erweiterte Suche