Noch ein Admin-Panel für zigbee2mqtt

Inhalt

Mit dem „Zigbee2mqtt Amin Panel” und „z2m Admin” gibt es schon zwei Node-RED-Flows zur Admi­nis­tra­ti­on der Zig­bee-zu-MQTT-Bridge zigbee2mqtt (kurz: z2m). Lei­der wer­den bei­de seit eini­ger Zeit nicht mehr weiterentwickelt.

Die Gerä­te­lis­te von z2m Admin funk­tio­niert daher gar nicht mehr, und das Admin Panel hat ande­re Pro­ble­me wie z.B. den enor­men MQTT-Ver­kehr durch häu­fi­ge Bridge-Abfragen.

Bevor ich mich in die teils recht kom­pli­zier­ten Flows der Vor­la­gen ein­ar­bei­te, habe ich einen mög­lichst ein­fa­chen eige­nen Admin Flow zusam­men­ge­baut, der nur die (für mich) essen­ti­el­len Funk­tio­nen enthält.

Die Gerä­te­lis­te

Die zigbee2mqtt Bridge ver­rät ihre kom­plet­te Gerä­te­lis­te nach einer Abfra­ge durch eine MQTT-Mes­sa­ge mit dem Topic

zigbee2mqtt/bridge/config/devices/get

Die Lis­te sen­det z2m an das Topic

zigbee2mqtt/bridge/config/devices

Die json- Struk­tur ent­hält u.a. Name, Her­stel­ler, Beschrei­bung, Modell und Netz­werk-Adres­se der Gerä­te. Im Flow wird die Lis­te nicht regel­mä­ßig abge­fragt - das wür­de nur unnö­tig Ver­kehr und Last ver­ur­sa­chen - son­dern nur auf Anfor­de­rung oder nach Änderungen.

Ein Funk­ti­ons­block arbei­tet die Daten für eine ui-List auf. Für bekann­te Gerä­te kön­nen spe­zi­el­le Icons ange­zeigt wer­den, ansons­ten gibt es Stan­dard-Icons für Coör­di­na­tor, Rou­ter und Endgeräte.

Klickt man auf eine Zei­le in der Lis­te, wer­den Fel­der in den Rena­me- und Send-Funk­tio­nen mit Name und Topic des Geräts vor­be­legt (das läuft über die Ver­bin­der rechts).

Die Gerä­te­lis­te

Gerä­te umbenennen

Wenn ein Gerät neu mit z2m gepaart wird, ist sein Name zunächst sei­ne ieee-Adres­se. Da sich nie­mand etwas wie „0xbc33acfffe90d3d1” mer­ken kann, benennt man die Gerä­te auf „fri­end­ly names” um. Das MQTT-Topic dafür ist

zigbee2mqtt/bridge/config/rename

In der Pay­load ste­hen in „old” und „new” der alte und der neue Name des Geräts. Der alte Name kann durch Klick auf die Gerä­te­lis­te belegt wer­den, der neue wird in einem Text-Input ein­ge­tra­gen. Beim Start des Flows wird der Input mit einem ein­ma­li­gen Inject geleert.

Ein But­ton sen­det die Mes­sa­ge an MQTT. Nach einer Ver­zö­ge­rung von einer Sekun­de wird die Gerä­te­lis­te neu abge­fragt. Sie zeigt dann schon den neu­en Namen an.

Gerät umben­nen­nen

Pai­ring zulassen

Nor­ma­ler­wei­se will man nicht, dass jeder­zeit neue Gerä­te in das eige­ne Zig­bee-Netz kom­men. Dafür exis­tiert das Topic

zigbee2mqtt/bridge/config/permit_join

In der Pay­load kann man das Paring mit „Per­mit” oder „Deny” ein- oder aus­schal­ten. Den jewei­li­gen Zustand mer­ken wir uns im Flow-Context.

Mes­sa­ges anzei­gen und senden

Damit man nicht immer zusätz­lich einen MQTT-Cli­ent wie MQTT­fx bemü­hen muss, kann man mit dem Flow auch MQTT-Mes­sa­ges sen­den und anzei­gen lassen.

Zwei Text-Inputs neh­men Pay­load und Topic der Mes­sa­ge auf. Das Topic wird beim Start mit dem Pre­fix zigbee2mqtt/ vor­be­legt. Beim Klick auf die Gerä­te­lis­te wird das Topic des ent­spre­chen­den Geräts über­nom­men. Bei­de Anga­ben wer­den im Flow Con­text zwischengespeichert.

Ein But­ton trig­gert einen Funk­ti­ons­block, der die zwi­schen­ge­spei­cher­ten Wer­te zu einer Mes­sa­ge zusam­men­setzt und an den MQTT-Bro­ker absendet.

Beim Emp­fang wer­den ein­fach alle Mes­sa­ges an Topics, die mit zigbee2mqtt/ begin­nen, in einem Tem­p­la­te als Tabel­le ange­zeigt. Die Anzei­ge ist auf 10 Mes­sa­ges begrenzt.

Als Zwi­schen­spei­cher dient pro Zei­le eine Con­text-Varia­ble. Der Funk­ti­ons­block sorgt für die For­ma­tie­rung der Tabel­le und das Durch­rol­len der Zeilen.

Das Dash­board sieht dann so aus:

Zig­bee Admin Dashboard

Den kom­plet­ten Flow könnt ihr gern her­un­ter­la­den und nach belie­ben nut­zen oder verändern.

Veröffentlicht am
Kategorisiert in SmartHome

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

6 − eins =