Skip to content

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Nerd-Display (ESP8266 + MD_Parola + MQTT + WebUI)

Zeigt Texte/Werte auf einer MAX7219-Matrix (FC16) mit konfigurierbarer Modulanzahl an. Konfiguration per WebUI (LittleFS) und MQTT. Unterstützt globale und per-Message Ein-/Ausblendeffekte sowie individuelle Anzeigedauer (dwell) je Nachricht.

✨ Features

  • MD_Parola Effekte (global oder pro Nachricht einzeln)

  • Individuelle dwell-Zeiten pro Nachricht (ms)

  • MQTT:

    • set/* (Kommandos)
    • state/* (retained States)
    • meta/* (Bootstrapping-Infos)
  • Home Assistant MQTT Discovery: Das Display wird automatisch als MQTT-Gerät angelegt

  • Bootstrapping: Setzt beim ersten Connect alle Defaultwerte

  • WebUI (LittleFS) für Konfiguration

  • Konfigurierbare Anzahl verketteter MAX7219-Module (1..32) via WebUI

  • Mehrere Nachrichten in einer Schleife rotierend anzeigen

🏠 Home Assistant

Wenn Home Assistant mit demselben MQTT-Broker verbunden ist, veröffentlicht das Nerd-Display beim Verbinden automatisch retained MQTT-Discovery-Konfigurationen unter homeassistant/.../config.

In Home Assistant werden dabei folgende Entitäten angelegt:

  • Text (text) – angezeigten Text setzen
  • Anzeige leeren (button) – aktuelle Animation und Nachrichtenliste löschen
  • Helligkeit (number) – 0 bis 15
  • Geschwindigkeit (number) – 1 bis 65535
  • Anzeigedauer (number) – 0 bis 600000 ms
  • Einblendeffekt (select)
  • Ausblendeffekt (select)
  • Diagnose-Sensoren für IP-Adresse, mDNS und Status

Alle Instanzen erhalten anhand der Geräte-ID eigene unique_id-Werte und erscheinen gemeinsam unter einem MQTT-Gerät. Die bestehenden Nerd-Display MQTT-Topics bleiben unverändert; Home Assistant Discovery kommt nur zusätzlich dazu.

📂 Ordnerstruktur

NerdDisplay.ino
app.h / app.cpp
config_store.h / config_store.cpp
display_service.h / display_service.cpp
mqtt_service.h / mqtt_service.cpp
mqtt_topics.h
home_assistant_discovery.h / home_assistant_discovery.cpp
web_handlers.h / web_handlers.cpp
webui.h

📦 Abhängige Libraries

📡 MQTT Beispiele

Einzelner Text (globaler Effekt + dwell)

  • Topic: <baseTopic>/set/text

  • Payload:

    "Hallo"

    oder

    {"text":"Hallo"}

Mehrere Texte (globaler Effekt + dwell)

["Hallo", "Zebra"]

oder

{"messages":["Hallo", "Zebra"]}

Per-Message Effekte und dwell

[
  {"text":"Hallo","in":"SCROLL_LEFT","out":"OPENING","dwell":1000},
  {"text":"Zebra","in":"PRINT","out":"CLOSING","dwell":3000},
  "Eintrag ohne Objekt nutzt globale Defaults"
]
  • in = MD_Parola Effektname für Einblenden (optional, leer = globaler Effekt)
  • out = MD_Parola Effektname für Ausblenden (optional, leer = globaler Effekt)
  • dwell = Anzeigedauer in Millisekunden (optional, -1 oder leer = globaler dwell)

Objektform mit messages-Array

{"messages":[
  {"text":"A","dwell":500},
  {"text":"B","in":"SCROLL_RIGHT","dwell":2000}
]}

⚙ Globale Parameter per MQTT setzen

  • <baseTopic>/set/brightness → 0..15
  • <baseTopic>/set/speed → Parola Geschwindigkeit (1..65535)
  • <baseTopic>/set/dwell → globaler dwell in ms
  • <baseTopic>/set/effect_in → globaler Einblendeffekt
  • <baseTopic>/set/effect_out → globaler Ausblendeffekt
  • <baseTopic>/set/effect → beide Effekte gleichzeitig setzen (Legacy)

📜 MD_Parola Effektliste

Folgende Werte sind für in und out gültig (Großschreibung beachten):

  • PRINT
  • SLICE
  • WIPE
  • WIPE_CURSOR
  • OPENING
  • OPENING_CURSOR
  • CLOSING
  • CLOSING_CURSOR
  • BLINDS
  • DISSOLVE
  • SCROLL_UP
  • SCROLL_DOWN
  • SCROLL_LEFT
  • SCROLL_RIGHT
  • SCROLL_UP_LEFT
  • SCROLL_UP_RIGHT
  • SCROLL_DOWN_LEFT
  • SCROLL_DOWN_RIGHT
  • SCAN_HORIZ
  • SCAN_VERT
  • GROW_UP
  • GROW_DOWN

(Die genaue Wirkung dieser Effekte ist in der MD_Parola Dokumentation beschrieben.)

📜 Lizenz

MIT (siehe LICENSE)

OTA-Updates

In der WebUI unter OTA-Update ein Passwort setzen und speichern. Nach dem Neustart erscheint das ESP8266 im Arduino-IDE-Netzwerkport als nerd-display-<mdnsName>.local (Port 8266). Den ersten Sketch mit OTA-Unterstützung einmal per USB flashen; danach lassen sich neue Sketches per WLAN mit dem gesetzten Passwort hochladen. OTA funktioniert auch ohne konfigurierten MQTT-Broker. Beim Flashen eine Flash-Layout-Option mit ausreichend freiem Platz für ein zweites Firmware-Image wählen.

Display per MQTT leeren

An <baseTopic>/set/clear eine Nachricht mit beliebiger Payload senden, ohne Retain. Die aktuelle Animation wird beendet und alle gespeicherten Nachrichten werden entfernt; state/text wird als leerer String veröffentlicht. Ein neuer Text an <baseTopic>/set/text startet die Anzeige wieder. In Home Assistant erscheint nach dem Firmware-Update und der nächsten MQTT-Verbindung die Schaltfläche Anzeige leeren beim Nerd-Display. Retained set/text-Nachrichten vom Broker können beim erneuten Verbinden die Anzeige wieder befüllen; für dauerhaft leere Anzeige auch diese retained Nachricht entfernen.