Nerd-Time³: Schreibtischlampen-Display mit ESP8266, MQTT und Home Assistant

Manche Projekte entstehen nicht, weil man unbedingt etwas Neues braucht, sondern weil man etwas Vorhandenes anschaut und sich denkt: Da geht doch deutlich mehr.

Genau so ging es mir mit einer Schreibtischlampe, die bereits ein kleines Display eingebaut hatte. Das konnte Uhrzeit, Datum und Temperatur anzeigen – funktionierte also grundsätzlich, war technisch aber ziemlich langweilig.

Aus dem ursprünglichen Display wurde deshalb Nerd-Time³: drei 1,69-Zoll-Farbdisplays, ein ESP8266 D1 mini, MQTT, Home Assistant, OTA-Updates und eine kleine Weboberfläche – weiterhin im ursprünglichen Lampengehäuse.

In diesem Artikel zeige ich den Umbau, die Verkabelung und wie die drei Displays heute mit Home Assistant zusammenarbeiten.

Veröffentlicht am 25. September 2026

Kurz zusammengefasst

Nerd-Time³ ersetzt das ursprüngliche Lampendisplay durch drei ST7789V2-TFTs mit jeweils 240 × 280 Pixeln. Ein ESP8266 D1 mini steuert Uhrzeit, Energiedaten und frei konfigurierbare MQTT-Anzeigen.

Home Assistant liefert die Werte per MQTT. Zusätzlich unterstützt die Firmware Warnmeldungen, MQTT Discovery, eine Weboberfläche sowie OTA-Updates. Der Quellcode liegt auf GitHub.

Das Wichtigste in Kürze

  • 3× ST7789V2 mit 240 × 280 Pixeln
  • ESP8266 D1 mini als Controller
  • Display 1: Uhrzeit und Datum
  • Display 2: PV-Erzeugung, Hausverbrauch und Netzbezug
  • Display 3: sechs freie MQTT-Slots und Warnmeldungen
  • Home Assistant, MQTT Discovery, WebUI und OTA

Schnellnavigation


Die ursprüngliche Schreibtischlampe

Die Lampe hatte ab Werk bereits ein Display für Uhrzeit, Datum und Temperatur. Praktisch war das durchaus, interessant aber nur bedingt. Spannender fand ich die vorhandene dunkle Abdeckung, hinter der sich neue Technik sehr unauffällig unterbringen ließ.

Originales Display der Schreibtischlampe mit Uhrzeit, Datum und Temperatur
Das ursprüngliche Display vor dem Umbau zu Nerd-Time³.

Mein Ziel war deshalb nicht, außen ein weiteres Smart-Home-Display anzubauen. Die Lampe sollte möglichst serienmäßig aussehen, während die alte Anzeige vollständig ersetzt wird.


Die Idee hinter Nerd-Time³

Drei kleine Farbdisplays passten gut in die vorhandene Fläche und ermöglichten eine klare Trennung der Funktionen. Daher kommt auch der Name Nerd-Time³: Die hochgestellte Drei steht schlicht für die drei Displays.

Für technische Namen verwende ich die ASCII-Variante Nerd-Time Trio. Das vermeidet Probleme mit Dateinamen, Hostnamen und MQTT-Topics.

  • Anzeigename: Nerd-Time³
  • GitHub-Projekt: Nerd-Time-Trio
  • OTA-Hostname: nerd-time-trio
  • MQTT-Basis: zebra/nerd-time-trio

Hardware und Verkabelung

Der Umbau braucht nur wenige zusätzliche Komponenten:

Der ESP8266 reicht dafür problemlos aus. Er übernimmt WLAN, MQTT, NTP, Weboberfläche, OTA-Updates und die Ausgabe auf allen drei Displays.

Verkabelung von drei ST7789-Displays mit einem ESP8266 D1 mini
Verkabelung der drei ST7789-Displays mit dem ESP8266.
ESP8266 D1 mini mit angeschlossenen Leitungen zu drei ST7789-Farbdisplays
Detailansicht der Verkabelung im Inneren der Lampe.

Alle drei TFTs teilen sich SPI, DC und Reset. Lediglich Chip Select ist pro Display getrennt:

SignalD1 miniGPIOVerwendung
SCK / SCLD5GPIO14SPI-Takt für alle Displays
MOSI / SDAD7GPIO13SPI-Daten für alle Displays
DCD2GPIO4gemeinsam
RESETD0GPIO16gemeinsam
CS Display 1D3GPIO0Uhr und Datum
CS Display 2D4GPIO2Energie
CS Display 3D1GPIO5Status und Warnungen
VCC3V3–Versorgung
GNDGND–gemeinsame Masse
BLK3V3–Hintergrundbeleuchtung

Achtung bei D3 beziehungsweise GPIO0: GPIO0 ist ein Boot-Strapping-Pin des ESP8266. Die angeschlossene Hardware darf ihn beim Einschalten nicht dauerhaft auf LOW ziehen. Für einen festen Aufbau kann ein 10-kΩ-Pull-up nach 3,3 Volt sinnvoll sein.


Einbau in das vorhandene Gehäuse

Die drei TFTs sitzen direkt hinter der vorhandenen getönten Scheibe. Dadurch verschwinden Rahmen und Elektronik optisch weitgehend und der Umbau wirkt weiterhin wie ein Bestandteil der Lampe.

Fertig umgebaute Schreibtischlampe mit drei Farbdisplays für Uhrzeit, Energie und Raumwerte
Nerd-Time³ nach dem Umbau mit drei ST7789-Farbdisplays.
Drei aktive TFT-Displays von Nerd-Time³ hinter der dunklen Frontscheibe der Schreibtischlampe
Die drei Displays von Nerd-Time³ im laufenden Betrieb.

Display 1: Uhrzeit und Datum

Das erste Display bleibt der ursprünglichen Funktion am nächsten. Es zeigt groß die Uhrzeit sowie Wochentag, Datum und Jahr. Die Zeit kommt per NTP aus dem Netzwerk; Sommer- und Winterzeit werden automatisch berücksichtigt.

Die Anzeige wird nur einmal pro Minute aktualisiert. Eine Sekundenanzeige hätte hier kaum Mehrwert und würde lediglich häufiger neu zeichnen.


Display 2: PV-Erzeugung und Stromverbrauch

Das zweite Display zeigt bewusst nur drei große Tageswerte:

  • Sonne: heutige PV-Erzeugung
  • Haus: heutiger Hausverbrauch
  • Stromnetz: heutiger Netzbezug

Die Werte werden in kWh dargestellt. In meinem Aufbau stammen die Messdaten von einem Shelly Pro 3EM und einem Anker-SOLIX-System. Home Assistant bildet daraus Tageswerte und sendet sie alle 15 Minuten per MQTT:

{
  "pv": 3.42,
  "grid": 1.18,
  "consumption": 4.31
}
zebra/nerd-time-trio/energy

Eine häufigere Aktualisierung ist für Tagesenergie kaum sinnvoll und würde nur unnötig oft sichtbare Display-Redraws erzeugen.


Display 3: Raumwerte und freie MQTT-Slots

Das dritte Display ist am flexibelsten. Es besitzt sechs horizontale Slots, die unabhängig per MQTT beschrieben werden können. Aktuell nutze ich sie paarweise für Temperatur, Luftfeuchtigkeit und Luftqualität.

Überschriften und Werte können getrennt formatiert werden. Farben und Schriftgrößen lassen sich ebenfalls per JSON setzen:

{
  "value": "22.4",
  "unit": "C",
  "color": "green",
  "size": 3
}

Die Topics reichen von:

zebra/nerd-time-trio/slot/1
...
zebra/nerd-time-trio/slot/6

Dadurch ist Display 3 nicht an Raumklima gebunden. Es könnte genauso gut Netzwerkstatus, Serverwerte, Termine oder andere Informationen anzeigen.


Vollbild-Warnungen über MQTT

Über einen separaten Topic kann Display 3 vollständig auf eine Warnansicht umgeschaltet werden:

zebra/nerd-time-trio/alert
{
  "active": true,
  "title": "WASSERLECK",
  "text": "Keller",
  "color": "#FF0000"
}

Nach dem Löschen der Warnung erscheint wieder die normale Slot-Anzeige. So lassen sich beispielsweise Wasser-, Rauch-, Fenster- oder Türsensoren aus Home Assistant anbinden.

{"active": false}

Home Assistant und MQTT

Home Assistant liefert die Daten per MQTT. Die Firmware unterstützt außerdem MQTT Discovery, sodass verschiedene Entities automatisch angelegt werden können.

Für die Raumwerte sendet meine Automation alle 15 Minuten sechs Nachrichten direkt hintereinander. Damit Display 3 dabei nicht sechsmal sichtbar neu zeichnet, sammelt die Firmware aufeinanderfolgende Slot-Updates für etwa 350 Millisekunden und aktualisiert die Anzeige anschließend nur einmal.

Retained MQTT-Nachrichten sind hier praktisch: Nach einem Neustart kann der Broker die zuletzt gesetzten Werte erneut ausliefern, ohne dass Home Assistant auf die nächste reguläre Aktualisierung warten muss.


Weboberfläche, WiFiManager und OTA

Beim ersten Start öffnet Nerd-Time³ den Access Point Nerd-Time-Trio-Setup. Darüber werden zunächst die WLAN-Daten eingerichtet.

Anschließend steht eine kleine Weboberfläche für die MQTT-Konfiguration zur Verfügung. Firmware-Updates sind sowohl über ArduinoOTA als auch über den Browser möglich. Der OTA-Hostname lautet nerd-time-trio.

Sicherheit: Die aktuelle Weboberfläche ist für ein vertrauenswürdiges internes Netzwerk gedacht und besitzt keine eigene Anmeldung.


Nerd-Time Trio auf GitHub

Firmware, Verkabelung und Home-Assistant-Beispiele liegen im öffentlichen Repository:

GrayTheZebra/Nerd-Time-Trio auf GitHub

Für die Arduino IDE werden Adafruit GFX, Adafruit ST7735/ST7789, WiFiManager, PubSubClient und ArduinoJson benötigt. LittleFS, ESP8266WebServer und ArduinoOTA stammen aus dem ESP8266-Arduino-Core.


Welche Probleme gab es beim Umbau?

Chip Select und Boot-Pins

Für drei Displays werden drei CS-Leitungen benötigt. In meinem Aufbau funktioniert D3, D4 und D1 zuverlässig. Beim ESP8266 muss man dabei berücksichtigen, dass einige GPIOs gleichzeitig den Bootvorgang beeinflussen.

Die erste Energieanzeige war zu klein

Eine detaillierte Energieübersicht sah auf dem Rechner zunächst gut aus, war hinter der dunklen Scheibe aber schlecht lesbar. Die endgültige Version ist deshalb deutlich minimalistischer: großes Symbol, großer Wert, fertig.

Das Gradzeichen wurde nicht sauber dargestellt

Die verwendete Standardschrift stellte das Gradzeichen nicht zuverlässig dar. Deshalb verwende ich aktuell schlicht 22.4 C statt 22.4 °C.

Mehrere MQTT-Nachrichten sorgten für sichtbare Zwischenstände

Home Assistant schickt die sechs Slot-Werte direkt hintereinander. Ursprünglich wurde Display 3 nach jeder Nachricht komplett neu gezeichnet. Das führte zu sichtbarem Flackern. Der 350-ms-Puffer fasst diese Aktualisierungen inzwischen zu einem einzigen Redraw zusammen.


FAQ: Nerd-Time³

Brauche ich zwingend Home Assistant?

Nein. Nerd-Time³ kommuniziert per MQTT. Home Assistant ist in meinem Aufbau die Datenquelle und Automatisierungsplattform, grundsätzlich kann aber jedes System passende MQTT-Nachrichten senden.

Kann ich andere Werte anzeigen?

Ja. Besonders Display 3 ist bewusst flexibel gehalten. Seine sechs Slots lassen sich mit eigenen Texten, Einheiten, Farben und Schriftgrößen belegen.

Kann ich die Firmware drahtlos aktualisieren?

Ja. Unterstützt werden ArduinoOTA und Firmware-Updates über die Weboberfläche.


Fazit: Aus einer simplen Lampenuhr wurde Nerd-Time³

Die Lampe selbst war völlig in Ordnung – nur ihr ursprüngliches Display war sehr begrenzt. Mit drei kleinen TFTs und einem ESP8266 ist daraus jetzt eine Anzeige geworden, die sich direkt in mein Smart Home integriert.

Besonders gefällt mir, dass die Technik hinter der vorhandenen dunklen Abdeckung verschwindet. Der Umbau wirkt dadurch weiterhin wie ein Bestandteil der Lampe und nicht wie ein zusätzlich aufgesetztes Smart-Home-Modul.

Und vermutlich ist Nerd-Time³ damit noch nicht wirklich fertig. Sechs frei beschreibbare MQTT-Slots sind schließlich eine ziemlich gute Grundlage für die nächste unnötig praktische Idee.

Schreibe einen Kommentar