Nerd-Display – die MQTT LED Matrix für’s Smart Home

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-PinESP8266-PinFunktion
VCC5VStromversorgung
GNDGNDMasse
DIND7 (MOSI)Datenleitung SPI
CSD8Chip Select
CLKD5 (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-PinESP8266-PinFunktion
VCC5VStromversorgung
GNDGMasse
DIND7 (MOSI)Datenleitung SPI
CSD2Chip Select
CLKD5 (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 LED Matrix des Nerd-Displays mit ESP8266, zeigt den Text ‚Hello‘ in roten LEDs auf vier MAX7219-Modulen.

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):

  • PRINT
  • SCROLL_DOWN, SCROLL_UP, SCROLL_LEFT, SCROLL_RIGHT
  • OPENING, OPENING_CURSOR
  • (weitere je nach Library-Version verfügbar)

Ausgang (out):

  • NO_EFFECT
  • SCROLL_DOWN, SCROLL_UP, SCROLL_LEFT, SCROLL_RIGHT
  • CLOSING, 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


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.

2 Gedanken zu „Nerd-Display – die MQTT LED Matrix für’s Smart Home“

  1. 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

    Antworten
    • 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

      Antworten

Schreibe einen Kommentar