LED uhr mit homie und mqtt

felix schwenzel, , in artikel    

vor kurzem habe ich mir bei amazon diesen LED-bildschirm für 12 euro gekauft um mal zu schauen, was man damit machen kann.

nach einem abend googeln und frickeln, zeigte sich: ich kann damit die uhrzeit anzeigen und nachrichten dadrauf schicken.

* * *

ich wollte den bildschirm unbedingt per mqtt ansteuern. mqtt deshalb, weil ich den bildschirm damit einfach, manuell oder automatisch vom homeassistant aus beschicken könnte. viele beispielsketche die den anschluss des displays an einen arduino-kompatiblen controller demonstrieren sollen, machen das per http-server-interface oder eine eingabemaske die auf dem arduino oder nodemcu laufen. einen funktionierenden sketch der per mqtt steuerbar ist, habe ich dann hier gefunden.

den zum laufen zu bringen war aus mehreren gründen nicht ganz einfach. einerseits hat der sketch sehr viele abhängigkeiten, also bibliotheken die er benutzt. einerseits eine bibliothek um den display anzusteuern, eine um die animationen zu steuern und schliesslich eine software die sich im die mqtt-kommunikation kümmert. in diesem fall hat sich der autor für homie entschieden, eine software um die ich bisher einen bogen gemacht habe, weil die lernkurve mir ein bisschen zu hoch war.

grundsätzlich sind bibliotheken wie homie eine super sache. statt in einen arduino-sketch die mqtt-kommunikation und den hardwaresetup selbst umzusetzen, kümmern sich solche bibliotheken um alle grundeinstellungen und die grundkonfiguration. bisher habe ich als grundlage immer gerne esp easy benutzt. das ist wirklich idiotensicher und steuert mittlerweile 80% meiner elektronischen heinzelmännchen in der wohnung (für alle selbstgebauten sensoren und aktoren).

aber weil ich nur diesen einen sketch gefunden hatte, musste ich mich dann wohl mit homie auseinandersetzen. nachdem alle abhängigkeiten installiert waren (manche wollte der arduino-IDE-manager nicht installieren und ich musste sie direkt aus github holen), flutschte der sketch auf den esp8266. nach einem neustart wie üblich mit dem hotspot des esp8266 verbinden und oh schreck, anders als esp easy hat homie gar kein idiotensicheres webfrontend zur konfiguration. homie möchte eine json-konfigurationsdatei per curl gefüttert bekommen. das ist zwar hier erklärt, aber, naja, eben nicht trivial.

mit

curl -X PUT http://192.168.123.1/config --header "Content-Type: application/json" -d @config.json

hab ich die datei dann auf den esp bekommen.

das nächste problem war dann: der display zeigte lediglich hieroglyphen an. ich musste einige zeit googlen, bis ich herausfand, dass ich in der eingebundenen MD_MAX72XX-bibliothek, in der datei MD_MAX72xx.h mein display-modul konfigurieren musste. das teil das ich gekauft habe ist ein FC16-modul, also musste ich

#define	USE_FC16_HW	1

definieren. damit konnte das modul dann ordentlich angesteuert werden.

* * *

was mir an dem vorlage-sketch fehlte war aber noch folgendes: ich wollte nicht nur lauftext anzeigen können, sondern auch feststehende buchstaben, auch wenn nicht viel mehr als 5 buchstaben auf das display passen. ausserdem wollte ich das display auch ausschalten können und auf anregung von thomas prauss auch die helligkeit regeln. den sketch der bei meinen bemühungen rausgekommen ist, habe ich als gist hier hingestellt.

das display lässt sich dann über den mqtt-publish-service in home-assistant mit nachrichten beschicken, aus automationen heraus oder, zum beispiel, mit einem telegram-bot. ausserdem lässt es sich als mqtt-switch oder mqtt-light einbinden, die home-assistant-konfiguration steht auch im gist.

mqtt-nachrichten an das topic devices/led-matrix/text/on/set zeigen den payload als laufschrift an, nachrichten an devices/led-matrix/print/on/set, zeigen den text für ein paar sekunden zentriert auf dem display an.

* * *

was der sketch in der jetztigen form nicht kann: umlaute oder sonderzeichen oder gar emojis darstellen. wie das geht, ist irgendwo in der MD-parola-dokumentation oder den beispielen dort zu finden, aber das ist eine aufgabe für einen anderen tag.

* * *

LED uhr mit homie und mqtt

montiert habe ich das ganze hinter ein (frühes) bild vom kind. die LED scheinen auch durch die leinwand mit dunkler farbe durch — wenn sie voll aufgedreht sind.