Pixelclock als Statusanzeige für smart home

Neulich bin ich wieder auf die die Ulanzi TC001 Pixelclock gestoßen und beschreibe im folgenden Beitrag, wie sich mit dem Display eigene Werte über Node-Red von beliebigen Smart Home Systemen darstellen lassen.

Ich habe die Pixelclock direkt bei Ulanzi bestellt. Innerhalb kurzer Zeit wurde sie geliefert. Sie besitzt ein Matrixdisplay aus 256 LEDs und versprüht damit einen gewissen Retro Charme. Sie ist mit einem Akku ausgestattet und über einen USB-C Anschluss kann man das Gerät aufladen oder auch mit einem Netzteil betreiben. Ich verwende dazu ein Netzteil, welches ich normalerweise für einen Raspberry PI benutze (5V, 1A).

Auf der Oberseite befinden sich neben einem Lichtsensor drei Tasten, die zur Bedienung der internen Einstellungen dienen. Die Pixelclock zeigt bereits fünf eigene Apps an, zu denen ein Kalender oder die Akkuanzeige gehören.

Neue Firmware aufspielen

Um eigene Werte auf der Pixelclock anzeigen zu können, muss eine andere Firmware aufgespielt werden. Diese wird der blueforcer AWTRIX LIGHT Gruppe gepflegt und über diese Webseite mit einem Online-Flasher bereitgstellt. Nach dem Anschluss des Gerätes über das mitgelieferte USB-C-Kabel kann das Gerät über die Webseite geflasht werden.  Während dieses Vorgangs piept das Gerät kontinuierlich.

ACHTUNG: Der Online Flasher funktioniert lt. Hersteller nur mit Google Chrome und Microsoft Edge. Bei mir hat nur Google Chrome unter OSX funktioniert.

Nach erfolgreicher Installation meldet sich die Pixelclock mit einer bunten Anzeige, auf der "AWTRIX sowie die Versionsnummer der Firmware und "AP MODE" angezeigt werden. Dies bedeutet, dass die Pixelclock noch keine Verbindung ins WLAN hat. Da sie in diesem Modus ein eigene WLAN aufspannt kann man sich mit einem beliebigen Gerät mit diesem WLAN verbinden (Name i.d.R. "awtrix....").

Nach Eingabe der SSID und der Passwortes startet das System neu und sollte nun nach dem Versionsschriftzug eine IP-Adresse anzeigen. Unter dieser IP-Adresse ist das AWTRIX-Webinterface ab sofort erreichbar.

TIPP: Wer später eine aktuellere Firmware aufspielen möchte kann diese unter folgendem Link herunterladen und auf dem Webinterface der Pixelclock über den Menüpunkt "Update" installieren.

AWTRIX konfigurieren

Zur Anzeige eigener Werte ist ein MQTT-Broker erforderlich. In meinem Beitrag MQTT-Broker Mosquitto als Docker Image auf einem NAS installieren ist beschrieben, wie man diesen installieren kann.

Ich empfehle, folgende Einstellungen vorzunehmen:

  • Unter "MQTT" die IP-Adresse des MQTT-Brokers (der Port kann i.d.R. auf 1883 bleiben, wenn man den nicht geändert hat)
  • Unter "Prefix" den Namen, unter dem Daten für das Gerät zu finden sein sollen. In meinem Beispiel verwende ich "awtrix_test"
  • (optional) Unter "Auth" einen Usernamen und ein Passwort für den Zugriff auf das Webinterface.

Nach Änderungen ist es sinnvoll, diese zu sichern.  Das kann man über den Menüpunkt "Backup" erledigen und kann somit später Konfigurationen einfach wiederherstellen.

Auf dem Gerät sollte man darüber hinaus alle Applikationen deaktivieren, die man nicht braucht. Bei mir ist nur der Kalender übrig geblieben. Dazu drückt man etwas länger die mittlere Taste und wählt über die links- oder rechts-Taste das Menü "APPS"  aus. Ein erneutes Drücken der mittleren Taste bietet anschließend die Möglichkeit, mit den Pfeiltasten die vorinstallierten Apps anzuwählen. Diese können über die mittlere Taste auf "ON" oder "OFF" gestellt werden.  Das jeweilige Untermenü verlässt man über das längere Drücken der mittleren Taste.

HINWEIS: Man kann auf dem Gerät nur die vorinstallierten Apps aktivieren oder deaktivieren. Eigene Apps werden hier nicht angezeigt, sondern werden nur über die MQTT-Nachrichten gesteuert. 

Icons installieren

Eigene Daten kann man mit vorangestellten Icons anzeigen lassen. Hierzu gibt es bereits eine riesige Auswahl auf der Seite Lametric. Wunderschön sind insbesondere die animierten Icons z.B. für Stromverbrauch oder Stromerzeugung. Wer hier nichts findet, kann sogar selber eigene Icons erstellen. Ich wähle für mein Beispiel das Icon mit der Nummer 21256 aus.

Nach dem Wechsel in das AWRTIX-Webinterface kann man unter dem Menüpunkt "Icons" durch die Angabe der Icon-Nummer von der Lametric-Seite ein oder mehrere Icons auf die Pixelclock laden.

Eigene Werte anzeigen lassen

Ich möchte auf der Pixelclock den aktuellen Stromverbrauch meines Smartmeters anzeigen lassen. Wie man diesen ausliest, habe ich in dem Beitrag SmartMeter mit Tasmota auslesen beschrieben.

In Node-Red baue ich dazu einen Flow, der aus folgenden Komponenten besteht:

Von einer CCU hole ich mir die Variable, in der der aktuelle Stromverbrauch gespeichert ist (das könnte natürlich auch der Wert von einem MQTT-Broker sein). Diesem Wert übermittle ich an einen Change-Node, in der die Nachricht zusammengestellt wird, die an einen MQTT-out-Node weitergegeben wird. Die Nachricht wird als json-String in einer Payload zusammengesetzt und besteht aus folgenden Bestandteilen:

Regel Erläuterung
Change Zuerst wird die "alte" Payload in msg.stromverbrauch gesichert. Diese Vorgehensweise führt dazu, dass das vorhandene payload-Objekt genutzt werden kann und kein neues erzeugt werden muss.
Setze In msg.payload.text wird nun der Text "VEBRAUCH W" gespeichert.
Ändere Hiermit wird der Text "VEBRAUCH" durch den Wert ausgetauscht, der in msg.stromverbrauch zwischengespeichert wurde.
Setze Die Text-Farbe setze ich mit msg.payload.color auf den Wert grün (HEX-Wert)
Setze Durch msg.payload.repeat gebe ich an, dass der Text zweimal hintereinander auf dem Display angezeigt werden soll
Setze Mit msg.payload.icon gebe ich an, dass das zuvor geladene Icon mit der Nummer 21256 vor dem Text angezeigt werden soll.

In Node-Red sieht der Change-Node wie folgt aus:

TIPP: Es gibt eine große Zahl von Konfigurationsmöglichkeiten für eine Anzeige. Diese sind in der sehr guten Dokumentation unter folgendem Link zu finden.

Diese Informationen leite ich anschließend an den MQTT-out-Node weiter. Hier ist darauf zu achten, dass das Topic richtig eingetragen wird. Dieses besteht aus dem in AWTRIX festgelegten Topic (hier "awtrix_test"), gefolgt von dem Text "/custom" sowie einer eigenen Applikationsbezeichnung. In meinem Beispiel lautet das topic "awtrix_test/custom/stromverbrauch". Der letzte Name kann frei gewählt werden ist aber wichtig, damit man die verschiedenen Werte, die man an die Uhr übermittelt, eindeutig unterscheiden kann.

Sobald man den Flow in Node-Red deployed hat, sollte nach kurzer Zeit auf der Pixelclock der definierte Wert angezeigt und ständig aktualisiert werden. Es kann am Anfang ein paar Sekunden dauern, bis die Nachrichten vom Broker empfangen wurden.

Senken des Stromverbrauchs

Bei Messungen habe ich festgestellt, dass die Pixelclock bis zu 8 Watt im Betrieb braucht. Das erschien mir ziemlich viel, so dass ich zwei Maßnahmen empfehle, wie der Verbrauch gesenkt werden kann.

Zuerst sollte die Helligkeit des Displays heruntergestellt werden. Dazu wählt man im Menü der Pixelclock (langes Drücken auf die mittlere Taste) den Menüpunkt "BRIGHTNESS". Nach Drücken der mittleren Taste kann man hier einen eigenen Wert einstellen. Bei mir sind aktuell 10% eingestellt, was auch bei Tageslicht vollkommen ausreicht. Dadurch sank mein Stromverbrauch bereits auf weniger als 5 Watt.

Zusätzlich stelle ich ich die Anzeige z.B. nachts aus. Hierzu wird der Pixelclock einfach ein Befehl geschickt, der diese für eine bestimmte Zeit schlafen legt (Deep Sleep Modus des ESP).

Dazu wird in einem Change-Node die Eigenschaft "sleep" auf die Sekundenzahl gesetzt, die das Gerät im Schlafmodus verbringen soll. In meinem Beispiel sind das 12 Stunden oder 43.200 Sekunden:

Diese Information wird anschließend als Push-Nachricht über einen mqtt-out-Node an den MQTT-Server gesendet, wobei das Topic wie folgt lautet "awtrix_test/sleep".