Bastelprojekt: Wie man eine per ESP-gesteuerte Lampe fĂĽr Verliebte baut
Im Projekt "LoversLamp" synchronisieren sich ESP-gesteuerte Lampen ĂĽbers Internet per MQTT miteinander, um einer Person zu zeigen, dass man an sie denkt.
- Daniel Schwabe
Mittlerweile ist es klar: Die Make-Redaktion besteht aus unverbesserlichen Romantikern. Mit dem Flirt-Amulett, und mit dem Herzschrittnehmer ist der Fall eindeutig: Wir lieben nicht nur Technik, sondern auch unsere Mitmenschen.
Für all die Leute, die über unsere Flirt-Amulette ihre bessere Hälfte gefunden haben, aber noch nicht zusammengezogen sind oder in einer Liebes- oder Freundesbeziehung über große Entfernung leben, haben wir nun die DIY-LoversLamp entwickelt.
- Synchronisierung ĂĽber MQTT
- Steuerung ĂĽber Touchfunktion des ESP32
- Verbindung zum Internet ĂĽber TLS/SSL
Mit dieser Lampe könnt ihr jederzeit sehen, ob eure Liebsten an euch denken. Wenn eine Person ihre Lampe einschaltet, geht die andere synchron an – egal, wo auf der Welt sie sich befindet.
Zeitaufwand: 3 Stunden
Kosten: 60 Euro
Material
- ESP32
- LED-Streifen Typ WS2812b
- Plastikrohr Durchmesser 27 Millimeter
- LampenfuĂź
- Lampenschirm
- Kabel
Werkzeug
- Dremel
- Rohrzange
Die Idee hinter der LoversLamp
Die LoversLamp ist eine smarte Lampe, die mit anderen identischen Lampen ĂĽber das Internet verbunden ist. Wenn eine Person ihre Lampe einschaltet, wird diese Information an alle verknĂĽpften Lampen gesendet, die dann ebenfalls angehen.
Technisch basiert jede Lampe auf einem ESP32-Mikrocontroller, der als Steuerungseinheit fĂĽr die jeweilige Lampe dient. Die Kommunikation erfolgt ĂĽber das MQTT-Protokoll, das speziell fĂĽr die SignalĂĽbertragung in IoT-Netzwerken entwickelt wurde.
Videos by heise
MQTT
MQTT ist ein besonders leichtgewichtiges Kommunikationsprotokoll, das speziell für den Datenaustausch zwischen Geräten mit geringer Leistung und instabilen Netzwerken bzw. Netzwerken mit geringer Bandbreite entwickelt wurde. Es basiert auf dem Prinzip des Publish-Subscribe-Systems. Geräte können Nachrichten zu einer bestimmten Topic (Überschrift) auf einem Server veröffentlichen und auch bestimmte Topics abonnieren, um direkt die neuesten Nachrichten zu diesem Thema angezeigt zu bekommen. Durch seinen geringen Ressourcenverbrauch eignet sich MQTT ideal für Anwendungen im Internet der Dinge (IoT), bei denen Sensoren, Maschinen oder smarte Geräte miteinander kommunizieren müssen.
Je nachdem, wie wichtig sie sind, kann man gesendete MQTT-Nachrichten in drei Kategorien einteilen:
- QoS 0 bis 1. Bei Level 0 wird eine Nachricht einmal gesendet und es findet keine ĂśberprĂĽfung statt, ob sie angekommen ist.
- Stufe 1 überprüft den Eingang einer Nachricht beim Empfänger und sorgt dafür, dass sie bei Bedarf noch einmal gesendet wird, falls der Empfänger nicht antwortet.
- Und Stufe 2 stellt sicher, dass die Nachricht genau einmal ankommt, indem es einen Handshake zwischen Sender und Empfänger gibt. Im Gegensatz zu Level 1 kann hier eine Nachricht nicht zufällig mehrfach gesendet werden.
Das Publish-Subscribe-Prinzip, kurz Pub/Sub, ist ein Kommunikationsmodell, bei dem Sender und Empfänger nicht direkt miteinander verbunden sind, sondern über eine zentrale Instanz, den Broker (hier HiveMQ), Nachrichten austauschen. Dabei gibt es zwei Hauptakteure: den Publisher, der Nachrichten veröffentlicht, und den Subscriber, der diese Nachrichten empfängt. Ein Publisher sendet seine Nachrichten an ein bestimmtes Thema, die sogenannte Topic, während ein Subscriber sich für ein oder mehrere Topics anmelden kann, um entsprechende Nachrichten zu erhalten. Der Broker übernimmt die Vermittlung, indem er eingehende Nachrichten an alle Subscriber verteilt, die die entsprechende Topic abonniert haben.
Ein wesentlicher Vorteil dieses Modells ist die vollständige Entkopplung von Publishern und Subscribern. Der Publisher muss nicht wissen, wer die Nachrichten empfängt, und der Subscriber muss nicht wissen, von wem sie gesendet werden. Durch diese Trennung kann man problemlos weitere Geräte in ein Netzwerk einbauen, das über MQTT kommuniziert.
Im Falle der Lampe funktioniert das Ganze wie folgt: Die Lampe überprüft "Wurde ich lokal ein- / ausgeschaltet?". Ist das der Fall, schaltet sich die Lampe ein und sendet an den MQTT-Broker (HiveMQ) die Nachricht "ON". Danach überprüft die Lampe "Wie ist der letzte Status auf HiveMQ?". Wenn sich der vom lokalen Status unterscheidet, schaltet die Lampe auf den aktuell online gestellten um.
Keine der Lampen kommuniziert selbst mit einer anderen oder verwaltet den Status des Lampen-Netzwerks. Dadurch können beliebig viele LoversLamps miteinander verbunden werden. Diese können dann natürlich auch verschiedene Formen annehmen.