Du willst Statusmeldungen aus deinem Smart Home nicht nur sehen, sondern stilvoll und individuell animiert anzeigen? Willkommen beim Nerd-Display – unserer eigenen Interpretation einer MQTT LED Matrix, gebaut auf einem ESP8266 mit MD_Parola und einer 4-teiligen MAX7219-Matrix im FC16-Format.
Im Gegensatz zu vielen Bastelprojekten, die nur starr einen Text anzeigen, bietet das Nerd-Display:
- vollständige MQTT-Anbindung (
set/*,state/*,meta/*) - konfigurierbare Weboberfläche (LittleFS)
- Anzeige mehrerer Nachrichten mit eigenen Ein- und Ausblendeffekten
- individuelle Anzeigedauer (dwell) je Nachricht
Damit kannst du z. B. wichtige Statusmeldungen länger anzeigen und kurze Infos schneller durchlaufen lassen.
tl;dr
Willst du dein eigenes Nerd-Display bauen?
Du brauchst einen D1 Mini* (oder kompatiblen ESP8266-Clone), ein 4-teiliges MAX7219-LED-Matrix (bezahlter Link) (Hardware-SPI) und ein paar Kabel.
Verdrahtung:
| Matrix-Pin | ESP8266-Pin | Funktion |
|---|---|---|
| VCC | 5V | Stromversorgung |
| GND | GND | Masse |
| DIN | D7 (MOSI) | Datenleitung SPI |
| CS | D8 | Chip Select |
| CLK | D5 (SCK) | SPI-Taktleitung |
Quellcode & Anleitung: GitHub – Nerd-Display
Hardware und Anschlussbelegung
Das Nerd-Display basiert auf dem ESP8266 D1 mini (z. B. AZDelivery D1 Mini (bezahlter Link)), der direkt an eine MAX7219-LED-Matrix angeschlossen ist. Wir nutzen bewusst die Hardware-SPI-Pins des ESP8266, weil diese deutlich schneller sind als eine Software-Implementierung – wichtig für flüssige Animationen bei mehreren Modulen.
Anschlussplan:
| Matrix-Pin | ESP8266-Pin | Funktion |
|---|---|---|
| VCC | 5V | Stromversorgung |
| GND | G | Masse |
| DIN | D7 (MOSI) | Datenleitung SPI |
| CS | D2 | Chip Select |
| CLK | D5 (SCK) | SPI-Taktleitung |
Software-Architektur
Der komplette Quelltext liegt auf GitHub – Nerd-Display. Damit der Beitrag lesbar bleibt, beschränken wir uns hier auf Auszüge und eine Funktionsbeschreibung:
1) app.* – Globale Struktur
Zentrale Objekte (Display, MQTT‑Client, Webserver) und Konfigurationen. Änderungen (z. B. Helligkeit) wirken sofort systemweit.
2) config_store.* – Konfiguration speichern & laden
MQTT‑Daten und mDNS‑Namen im LittleFS speichern. Änderungen per WebUI oder MQTT (/set/...).
3) display_service.* – LED‑Matrix‑Steuerung
Steuert alle Parola‑Animationen, Anzeigewechsel und Effekte – jetzt auch pro Nachricht individuell (Effekte + dwell).
4) mqtt_service.* – MQTT‑Handling
Abonniert Befehle, verarbeitet Payloads (String, JSON, Array) und veröffentlicht Status‑Snapshots.
5) web_handlers.* – Weboberfläche
Konfigurationsseite direkt auf dem Gerät.

MQTT-Steuerung – Beispiele
Unterschiede zu anderen Projekten
Viele DIY-MQTT LED Matrix-Projekte:
- nutzen nur hartcodierte Nachrichten
- benötigen Neustarts für Änderungen
- verzichten auf Webinterface
Das Nerd-Display:
- vollständige MQTT-API (set, state, meta)
- Konfiguration per WebUI
- Effekte, Geschwindigkeit, Anzeigedauer live einstellbar
- Mehrfach-Nachrichten mit automatischer Rotation
- Hardware-SPI für maximale Performance
- Benutzername/Passwort für MQTT
MQTT-Steuerung – Beispiele
Einzelner Text
<baseTopic>/set/text → "Tür offen"
Oder als Objekt mit Effekten und individueller Dauer:
{"text":"Hallo Welt","in":"SCROLL_UP","out":"CLOSING","dwell":5000}
Mehrere Texte im Wechsel
[
{"text":"Willkommen","in":"OPENING","out":"CLOSING","dwell":8000},
{"text":"Fenster zu?","in":"SCROLL_LEFT","out":"SCROLL_RIGHT","dwell":3000}
]
Oder kurz ohne Effekte (nutzt globale Defaults):
["Willkommen","Gute Fahrt","Fenster zu?"]
Helligkeit, Geschwindigkeit, globale Effekte
<baseTopic>/set/brightness → 10 (0..15)
<baseTopic>/set/speed → 80 (1..65535)
<baseTopic>/set/dwell → 2500 (ms, global)
<baseTopic>/set/effect_in → SCROLL_UP
<baseTopic>/set/effect_out → CLOSING
Tipp: Pro Nachricht gesetzte
in/out/dwellüberschreiben die globalen Werte nur für diese Nachricht.
Unterstützte MD_Parola-Effekte (Auswahl)
Eingang (in):
PRINTSCROLL_DOWN,SCROLL_UP,SCROLL_LEFT,SCROLL_RIGHTOPENING,OPENING_CURSOR- (weitere je nach Library-Version verfügbar)
Ausgang (out):
NO_EFFECTSCROLL_DOWN,SCROLL_UP,SCROLL_LEFT,SCROLL_RIGHTCLOSING,CLOSING_CURSOR- (weitere je nach Library-Version verfügbar)
Unterschiede zu anderen Projekten
Viele DIY‑LED‑Matrix‑Projekte:
- nutzen nur hartcodierte Nachrichten
- erfordern Neustarts für Änderungen
- verzichten auf ein Webinterface
Das Nerd-Display:
- vollständige MQTT‑API (set, state, meta)
- Konfiguration per WebUI
- individuelle Effekte & Dwell je Nachricht
- Mehrfach‑Nachrichten mit Rotation
- Hardware‑SPI für maximale Performance
- MQTT mit Benutzername/Passwort
Integration ins Smart Home
Universell einsetzbar:
- ioBroker: MQTT-Adapter → einfache Datenpunkte
- Home Assistant: MQTT-Light oder Sensor
- Node-RED: Texte aus Automationen einspeisen
Links & Ressourcen
- GitHub – Nerd-Display
- MAX7219-LED-Matrix (bezahlter Link)
- AZDelivery D1 Mini (bezahlter Link)
- MD_Parola Library (Arduino)
Fazit
Das Nerd-Display bringt deine MQTT LED Matrix-Anzeigen auf das nächste Level: einfache Konfiguration, volle MQTT-Steuerung, schnelle Hardware-SPI-Ansteuerung und jede Menge Animationen. Durch die offene Architektur kannst du es leicht in bestehende Smart-Home-Setups einbinden und jederzeit erweitern.
GrayTheZebra ist Entwickler und Betreiber von prokrastinerd.de mit Fokus auf Smart Home ohne Cloud, ESP32 und MQTT-basierte Systeme. Alle Projekte basieren auf praktischer Umsetzung und eigener Hardwareentwicklung.
Autorprofil und Hintergrund:
Über GrayTheZebra


Moin!
Tolle Sache dein Nerd-Display! Hatte jetzt mehrere Jahre eine andere – deutlich umständlichere Variante im Betrieb…Eine Frage treibt mich aber noch um: Wie bekomme ich Sonderzeichen (Umlaute wie Ü oder ö oder das ° (Grad) dargestellt?
Vielen Dank für deine Bemühungen und das zur Verfügung stellen!
Gruß,
Oliver
Moin Oliver,
vielen Dank für dein Feedback, freut mich wirklich sehr, dass dir das Nerd-Display gefällt!
Aktuell werden Umlaute und Sonderzeichen wie das Grad-Symbol noch nicht unterstützt. Das ist ein bekannter Punkt, und ich habe die Erweiterung des Nerd-Displays bereits auf der internen To-do-Liste. Es wird also definitiv kommen – allerdings kann ich aktuell noch keinen konkreten Zeitpunkt nennen, da die Weiterentwicklung insgesamt noch etwas dauern wird.
Danke dir für den Hinweis und dein Interesse!
Viele Grüße
Gray
Moin Oliver,
kurzes Update dazu: Umlaute (ä ö ü / Ä Ö Ü) und auch das Grad-Symbol (°) werden inzwischen unterstützt 👍
Ich habe das Nerd-Display entsprechend erweitert und die Änderungen bereits auf GitHub hochgeladen.
Wenn du das Projekt aktualisierst und den aktuellen Stand verwendest, sollten diese Zeichen jetzt korrekt dargestellt werden. Im Repository findest du auch den angepassten Code, der das UTF-8-Mapping und die Glyphen enthält.
Danke dir nochmal für den Hinweis – genau solche Rückmeldungen helfen enorm bei der Weiterentwicklung.
Viele Grüße
Gray