Projekte

DoorDisplay

ESP8266 Ampel für das Homeoffice

DoorDisplay

DoorDisplay ist ein Projekt, welches nicht nur die Software-Seite beinhaltet sondern auch eine Harware-Komponente hat.

Eine Ampel für dein Homeoffice

Die Idee für dieses Projekt kam während der Coronazeit, als wir glücklicherweise aus dem Homeoffice arbeiten durften.

Mein Sohn war damals noch jünger und hat das Konzept “Arbeiten” und “wichtiges Meeting” noch nicht so ganz verinnerlicht gehabt. Ich brauchte also einen Weg um einfach zu zeigen: Bitte nicht stören, kannst reinkommen aber leise sein oder komm einfach rein.

Was liegt da näher als eine Ampel für die Tür, die einem direkt und einfach anzeigt ob man rein kann oder nicht.

Die Hardware

Das Herz des ganzen ist ein ESP8266, ganz einfach aus dem Grund weil ich davon ein paar auf AliExpress bestellt und herumliegen hatte. Es handelt sich dabei um kleine Mikrocontroller mit WLAN und auf einem D1 Mini Board auch mit USB für Stromversorgung und Datenübertragung.

Für den ESP gibt es verschiedene “Shields”, das sind Boards mit zusätzlicher Funktionalität die direkt auf den Pin-Headern des ESP aufsetzen. Hier hatte ich ein LED Display zur Hand, welches einige Pixel einfarbig darstellen kann.

Die Ampel selbst sind ganz normale LEDs mit entsprechendem Widerstand, die an die Pin-Header des ESP angeschlossen sind.

Wichtig war mir, dass das Gerät nicht an die Steckdose angeschlossen werden muss, sondern mit Batterie laufen kann. Dafür benutze ich eine kleine Powerbank, die ich mal als Werbegeschenk bekommen habe. Damit die Powerbank nicht direkt leer gesaugt wird, geht der ESP nach kurzer Zeit in den Ruhezustand und kann dann über einen kleinen Knopf wieder geweckt werden.

Damit das ganze nicht so nackt daher kommt wie auf dem Bild oben, habe ich in Fusion360 ein einfaches Gehäuse dafür designed und es mit dem 3D Drucker gedruckt.

Foto des DoorDisplays in seinem Gehäuse
Mit meinem alten Drucker gedrucktes Gehäuse, deswegen nicht so hübsch.

Die Software

Die Software auf dem ESP muss aus Resourcengründen sehr schlank gehalten sein, großartige Verarbeitung oder Datenhaltung macht auf dem Gerät keinen Sinn. Auch soll der Microcontroller möglichst keinen State selbst speichern, da er jederzeit neu gestartet werden kann.

Die Lösung ist dabei ein Protokoll, welches sehr verbreitet in der Heimautomatisierung ist: MQTT. Es handelt sich dabei um ein PubSub Protokoll, wobei kleine Nachrichten über verschiedene Channels gesendet werden. Der ESP subscribed sich zu einem Channel und bekommt dort den aktuellen Termin sowie den benötigten Ampelstatus in einem winzigen JSON Objekt geliefert.

Das Befüllen der MQTT Nachrichten passiert an anderer Stelle, die auch mehr Power hat.

Ich habe dafür eine kleine React Webseite gemacht, auf der man Termine von Hand eintragen kann. Das Backend der Webseite speichert diese in eine Datenbank und aktualisiert zur richtigen Zeit die MQTT Nachrichten.

Was noch fehlt, um das ganze wirklich nützlich zu machen, ist eine Integration in den Kalender des Nutzers. Hierfür habe ich ein Plugin-System geplant, an welches man verschiedene Kalenderanbieter andocken kann. Zum Beispiel Office, Google, oder Webdav. Das existiert aber noch nicht und wäre damit der nächste Schritt bei diesem Projekt.

Tech Stack
nodejsmqttesp8266C