LED uhr mit ho­mie und mqtt

felix schwenzel in artikel

vor kur­zem habe ich mir bei ama­zon die­sen LED-bild­schirm für 12 euro ge­kauft um mal zu schau­en, was man da­mit ma­chen kann.

nach ei­nem abend goo­geln und fri­ckeln, zeig­te sich: ich kann da­mit die uhr­zeit an­zei­gen und nach­rich­ten da­drauf schi­cken.





ich woll­te den bild­schirm un­be­dingt per mqtt an­steu­ern. mqtt des­halb, weil ich den bild­schirm da­mit ein­fach, ma­nu­ell oder au­to­ma­tisch vom ho­me­as­sistant aus be­schi­cken könn­te. vie­le bei­spiel­sket­che die den an­schluss des dis­plays an ei­nen ar­dui­no-kom­pa­ti­blen con­trol­ler de­mons­trie­ren sol­len, ma­chen das per http-ser­ver-in­ter­face oder eine ein­ga­be­mas­ke die auf dem ar­dui­no oder nodem­cu lau­fen. ei­nen funk­tio­nie­ren­den sketch der per mqtt steu­er­bar ist, habe ich dann hier ge­fun­den.

den zum lau­fen zu brin­gen war aus meh­re­ren grün­den nicht ganz ein­fach. ei­ner­seits hat der sketch sehr vie­le ab­hän­gig­kei­ten, also bi­blio­the­ken die er be­nutzt. ei­ner­seits eine bi­blio­thek um den dis­play an­zu­steu­ern, eine um die ani­ma­tio­nen zu steu­ern und schliess­lich eine soft­ware die sich im die mqtt-kom­mu­ni­ka­ti­on küm­mert. in die­sem fall hat sich der au­tor für ho­mie ent­schie­den, eine soft­ware um die ich bis­her ei­nen bo­gen ge­macht habe, weil die lern­kur­ve mir ein biss­chen zu hoch war.

grund­sätz­lich sind bi­blio­the­ken wie ho­mie eine su­per sa­che. statt in ei­nen ar­dui­no-sketch die mqtt-kom­mu­ni­ka­ti­on und den hard­wa­re­set­up selbst um­zu­set­zen, küm­mern sich sol­che bi­blio­the­ken um alle grund­ein­stel­lun­gen und die grund­kon­fi­gu­ra­ti­on. bis­her habe ich als grund­la­ge im­mer ger­ne esp easy be­nutzt. das ist wirk­lich idio­ten­si­cher und steu­ert mitt­ler­wei­le 80% mei­ner elek­tro­ni­schen hein­zel­männ­chen in der woh­nung (für alle selbst­ge­bau­ten sen­so­ren und ak­to­ren).

aber weil ich nur die­sen ei­nen sketch ge­fun­den hat­te, muss­te ich mich dann wohl mit ho­mie aus­ein­an­der­set­zen. nach­dem alle ab­hän­gig­kei­ten in­stal­liert wa­ren (man­che woll­te der ar­dui­no-IDE-ma­na­ger nicht in­stal­lie­ren und ich muss­te sie di­rekt aus git­hub ho­len), flutsch­te der sketch auf den esp8266. nach ei­nem neu­start wie üb­lich mit dem hot­spot des esp8266 ver­bin­den und oh schreck, an­ders als esp easy hat ho­mie gar kein idio­ten­si­che­res web­front­end zur kon­fi­gu­ra­ti­on. ho­mie möch­te eine json-kon­fi­gu­ra­ti­ons­da­tei per curl ge­füt­tert be­kom­men. das ist zwar hier er­klärt, aber, naja, eben nicht tri­vi­al.

mit

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

hab ich die da­tei dann auf den esp be­kom­men.

das nächs­te pro­blem war dann: der dis­play zeig­te le­dig­lich hie­ro­gly­phen an. ich muss­te ei­ni­ge zeit goog­len, bis ich her­aus­fand, dass ich in der ein­ge­bun­de­nen MD_MAX72XX-bi­blio­thek, in der da­tei mein dis­play-mo­dul kon­fi­gu­rie­ren muss­te. das teil das ich ge­kauft habe ist ein FC16-mo­dul, also muss­te ich

#define	USE_FC16_HW	1

de­fi­nie­ren. da­mit konn­te das mo­dul dann or­dent­lich an­ge­steu­ert wer­den.


was mir an dem vor­la­ge-sketch fehl­te war aber noch fol­gen­des: ich woll­te nicht nur lauf­text an­zei­gen kön­nen, son­dern auch fest­ste­hen­de buch­sta­ben, auch wenn nicht viel mehr als 5 buch­sta­ben auf das dis­play pas­sen. aus­ser­dem woll­te ich das dis­play auch aus­schal­ten kön­nen und auf an­re­gung von tho­mas prauss auch die hel­lig­keit re­geln. den sketch der bei mei­nen be­mü­hun­gen raus­ge­kom­men ist, habe ich als gist hier hin­ge­stellt.

das dis­play lässt sich dann über den mqtt-pu­blish-ser­vice in home-as­sistant mit nach­rich­ten be­schi­cken, aus au­to­ma­tio­nen her­aus oder, zum bei­spiel, mit ei­nem te­le­gram-bot. aus­ser­dem lässt es sich als mqtt-switch oder mqtt-light ein­bin­den, die home-as­sistant-kon­fi­gu­ra­ti­on steht auch im gist.

mqtt-nach­rich­ten an das to­pic zei­gen den pay­load als lauf­schrift an, nach­rich­ten an , zei­gen den text für ein paar se­kun­den zen­triert auf dem dis­play an.


was der sketch in der jetz­ti­gen form nicht kann: um­lau­te oder son­der­zei­chen oder gar emo­jis dar­stel­len. wie das geht, ist ir­gend­wo in der MD-pa­ro­la-do­ku­men­ta­ti­on oder den bei­spie­len dort zu fin­den, aber das ist eine auf­ga­be für ei­nen an­de­ren tag.


mon­tiert habe ich das gan­ze hin­ter ein (frü­hes) bild vom kind. die LED schei­nen auch durch die lein­wand mit dunk­ler far­be durch — wenn sie voll auf­ge­dreht sind.