[Modul] Zigbee2MQTT Beta Version 5.x

Zigbee2MQTT Version 5.0 [Testing]

Hier jetzt die versprochene offene Beta der neuen Modul Version 5.x für die Zigbee2MQTT Integration von @KaiS , @Burki24 und @Nall-chan.

Vor dem Update des Moduls lest bitte die folgende Migrations-Anleitung.
Neuinstallation können direkt gemäß der Dokumentation #Neuinstallation erfolgen.


Update von Modul Version 4.5 (aktuelle Stable aus dem Store) auf 5.x (aktuelle Beta aus dem Store)

Achtung

Bitte diese Migrationsanleitung genau lesen und beachten, ein downgrade auf eine alte Modul Version ist nur mit einem Symcon-Backup möglich!

I. Vorbereitung

  • Bevor das Update über den Modul-Store durchgeführt werden kann, ist sicherzustellen das zuvor mindestens die Version 4.6 der Extension in Zigbee2MQTT installiert ist.
  • Diese wird automatisch ab Modul-Version 4.5 durch die Bridge-Instanz installiert, sofern diese Instanz angelegt wurde.
  • Alternativ muss die benötigte Extension in Zigbee2MQTT manuell ein Update auf Version 4.6 erhalten.

Ohne aktuelle Extension wird das Modul Update mit Fehlermeldungen durchgeführt, welche zu unerwarteten Fehlverhalten führen kann
Das bedeutet auch, dass das Modul-Update vor dem Update der Zigbee2MQTT Version auf 2.0 erfolgen muss.


II. Modul-Update

  • Während des Updates wird empfohlen das Fenster Meldungen geöffnet zu lassen um eventuelle Fehlermeldungen nachvollziehen zu können.
  • Das Update anschließend über den Modul-Store durchführen.

geänderte Variablen-Profile

  • Die Variablen welche bei Helligkeit vorher einen Wertebereich von 0 - 254 hatten, werden auf das Profil ~Intensity.100 angepasst. Das Modul rechnet ab sofort automatisch den Wertebereich aus Z2M in Prozent um.
  • Entsprechende Aktion auf oder Auswertungen des Rohwertes der Variablen sind zu prüfen und gglfs. anzupassen.

geänderte Variablen-Idents

  • Die Version 5.0 ändert beim Update alle Ident aller Variablen welche zu einer ZigbeeMQTT-Instanz gehören.
  • Diese Änderung betrifft nur User welche mit Scripten auf Variablen per Ident (z.B. Z2M_Brightness) und nicht per ObjektID (z.B. 12345) zugreifen.
  • Die Variablen selbst bleiben dabei erhalten, so das sich hier keine ObjektIDs ändern, und entsprechend auch keine Änderungen an Ereignissen, Links, Automationen etc… ergeben (Außnahmen siehe nächster Punkt).

geänderte Variablentypen

Folgende Liste enthält alle Variablen wo zuvor eine Variable vom falschen Typ genutzt wurde. Diese werden nicht migriert, sondern bleiben erhalten. Es werden die neuen Variablen zusätzlich angelegt, so das hier anschließend manuell z.B. Links oder Ereignisse, angepasst werden müssen.

Name Ident Alt Type Alt Ident Neu Typ neu
Aktion Übergangszeit Z2M_ActionTransTime int action_transition_time float
Aktion Transaktion Z2M_ActionTransaction float action_transaction int
X Achse Z2M_XAxis float x_axis int
Y Achse Z2M_YAxis float y_axis int
Z Achse Z2M_ZAxis float Z_axis int

III. Zigbee2MQTT Version

  • Ein Update auf Zigbee2MQTT Version 2.0 oder neuer kann nach dem Update des Moduls durchgeführt werden.
  • Hierzu sind die Anleitungen unter zigbee2mqtt.io zu beachten.
  • In Symcon sollte eine Bridge-Instanz eingerichtet sein, damit beim Update automatisch die korrekte Extension in Zigbee2MQTT installiert wird.

FAQ:

  • Ich habe schon Z2M Version 2.0 installiert, muss ich jetzt ein Downgrade machen?
    • Nein, aber vor dem Update des Moduls muss per Hand die passende Extension in Z2M installiert werden. Diese ist für Z2M 2.x hier zu finden → Extension für Z2M 2.x

Changelog:

  • Kompatibilität mit Zigbee2MQTT Version 2.0 hergestellt
  • Geräte erkennen automatisch die Features und Exposes und erstellen die benötigten Variablen mit den entsprechenden Profilen eigenständig
    • Somit keine missing exposes Debugs mehr nötig!
  • Nutzung von Standard-Symcon Profilen, soweit möglich
  • Presets und Effekte als Variablen verfügbar
  • Geräte speichern die IEEE um umbenannte Geräte (= geändertes Topic) zu erkennen
  • Z2M Prefix bei VariablenIdents entfernt
  • Konfigurator übernimmt die MQTT Topic-Struktur beim Anlegen von Geräten als Kategorien
  • Konfigurator erkennt fehlende Bridge-Instanz
  • Konfigurator erkennt falsche Topics (anhand der IEEE Adresse der Geräte)
  • Bridge installiert die Extension nicht mehrfach
  • Bridge installiert automatisch die benötigte Extension
  • Komplettes Code-Rework für Geräte und Gruppen von Bruki24
  • Diverse Aktionen für die Instanzen der Geräte und Gruppen:
    • Relatives Dimmen der Helligkeit
    • Schrittweises Dimmen der Helligkeit
    • Relatives Dimmen der Farbtemperatur
    • Schrittweises Dimmen der Farbtemperatur
    • Ein-/Ausschaltverzögerung
1 „Gefällt mir“

geänderte Variablentypen

Folgende Liste enthält alle Variablen wo zuvor eine Variable vom falschen Typ genutzt wurde. Diese werden nicht migriert, sondern bleiben erhalten. Es werden die neuen Variablen zusätzlich angelegt, so das hier anschließend manuell z.B. Links oder Ereignisse, angepasst werden müssen.

Name Ident Alt Type Alt Ident Neu Typ neu
Aktion Übergangszeit Z2M_ActionTransTime int action_transition_time float
Aktion Transaktion Z2M_ActionTransaction float action_transaction int
X Achse Z2M_XAxis float x_axis int
Y Achse Z2M_YAxis float y_axis int
Z Achse Z2M_ZAxis float Z_axis int

Bitte an die Tester:

Wir wollen so viele Symcon-eigene Profile nutzen, wie möglich. Von daher bitte auch darauf ein Augenmerk legen, ob eine Variable mit einem standard-Profile versehen werden sollte und hier melden.
DANKE!

LG
Burkhard

Moin,
ich hatte dank meiner Dummheit leichtes Startproblem. Im Prinzip läuft es jetzt wohl größenteils.

Getestet hatte ich beide Richtungen indem ich eine Steckdose geschaltet habe und ein Netzwerkgerät dran hing das ich mit dem Device Monitor überwachte. Auch eine Lampe konnte ich schalten.

Probleme die ich habe:

  1. Konfigurator startet nicht
Warning: Undefined array key "friendly_name" in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 421

Warning: Undefined array key "friendly_name" in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 435

Fatal error: Uncaught TypeError: explode(): Argument #2 ($string) must be of type string, null given in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php:435
Stack trace:
#0 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php(435): explode('/', NULL)
#1 /-(3): Zigbee2MQTTConfigurator->GetConfigurationForm()
#2 {main}
  thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 435 (Code: -32603)
  1. Bei einer Steckdosenleiste von UseLink wurden die Idents statel1…5 nicht in state_l1…5 geändert sondern neue Instanzen angelegt.

  2. Meine Air Quality Sensoren melden sich zwar mit der LinkQuality aber die Daten kommen nicht

Soweit meine ersten Erfahrungen. Bis auf vermeintliche Kleinigkeiten geht es soweit. Gute Arbeit. Danke euch 3.

Nachtrag der Tipp mit Meldungen war nicht schlecht. Kannte ich noch nicht. Er lieferte wohl auch eine Erklärung für der AirQuality Sensor:

16.01.2025, 09:55:20 | FlowHandler          | Kann Daten nicht zur Instanz #15588 weiterleiten: 
Fatal error: Uncaught Exception: Variable profile type does not match for profile Z2M.co2 in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/VariableProfileHelper.php:188
Stack trace:
#0 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/VariableProfileHelper.php(122): Zigbee2MQTT\ModulBase->RegisterProfile(2, 'Z2M.co2', '', '', ' ppm', 0.0, 0.0, 1.0, 2)
#1 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(2797): Zigbee2MQTT\ModulBase->RegisterProfileFloat('Z2M.co2', '', '', ' ppm', 0.0, 0.0, 1.0, 2)
#2 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(2574): Zigbee2MQTT\ModulBase->registerNumericProfile(Array)
#3 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(2344): Zigbee2MQTT\ModulBase->handleProfileType('numeric', Array, 'Z2M.co2')
#4 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(3253): Zigbee2MQTT\ModulBase->registerVariableProfile(Array)
#5 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(1411): Zigbee2MQTT\ModulBase->registerVariable(Array, NULL)
#6 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(1489): Zigbee2MQTT\ModulBase->getOrRegisterVariable('co2', Array)
#7 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(1373): Zigbee2MQTT\ModulBase->processVariable('co2', 362)
#8 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/ModulBase.php(560): Zigbee2MQTT\ModulBase->processPayload(Array)
#9 /-(3): Zigbee2MQTT\ModulBase->ReceiveData('{"DataID":"{7F7...')
#10 {main}
  thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/VariableProfileHelper.php on line 188

Ralf

Fangen wir damit an.
Welche Z2M Version? → Kannst du bitte prüfen ob die Extension in Z2M installiert ist , und welche Version?

Ich schätze mal du meinst es wurden neue Variablen angelegt. @Burki24 schaust du da bitte nach?

Da passt was nicht. Kannst du bitte nochmal ein Screenshot mit den Variablen machen, wo der VariablenTyp mit drauf ist?
Michael

Moin,

  1. Z2M 2.0.0, Extension 5.01

  2. Stimmt Ich wollte Ident schreiben. Dazu aber noch bei der Lidl Steckdosenleiste sind auch die statel1…3 geblieben hier aber keine state_l1…3 angelegt.

Zusätzlich bisher:
Alten aquara BWMs liefern kein Beleuchtungsstärke Lux (Ident illuminace_lux) mehr. Lux wird anscheinen gar nicht mehr aktualisiert. Bei den 5GHz Präsenszsensoren wird so gar keine Lichtstärke mehr geliefert.

edit: Für mich habe ich ein Script geschrieben das statel1…5 komplett in state_l1…5 umändert und falls vorhanden die neuen state_l1…5 löscht. Falls jemand Interesse hat melden.

Ralf

Beim Konfigurator habe ich noch gar keine Idee… Gibt es eine Fehlermeldung in Z2M wenn du ihn in Symcon öffnest? Es betrifft bei dir die Gruppen. Hat da eine keinen Namen? (geht das überhaupt ohne Namen?)

Ist ein Bug der Migration. Dürfte bei BrightnessL1 / L2 auch so sein.
Danke fürs finden.

Ist ein Problem mit dem VaribalenProfil für ppm. Lösung folgt. Da muss @Burki24 noch mal über meinen Fix schauen.

Gibt es da was im Meldungslog? Sonst gerne ein Debug der Instanz hier einstellen. Achtung, Limit von 100 Zeilen vorher abschalten und warten bis Werte reinkommen mit (AppendVariableTypes :: Line 969 :: Eingehendes Payload

Michael

Mahlzeit,

  1. Isch habe gar keine Gruppe. In Z2M ist aber die Gruppe „default_bind_group“ mit ID 901 angelegt aber ohne Mitglieder oder Szenen.

  2. Ist nicht so tragisch außer das mein Log ziemlich aufgebläht wird.

  3. Hat sich geklärt. Bei dem Präsenzsensor (5GHz und bei einem batteriebetriebenen Präsenzsensor) wurden die Geräteinformationen bei der Migration nicht abgerufen deswegen gab es keine illuminace Variable. Dazu aber noch was. Bei Sensoren die schon beide Variablen besitzen, also mit/ohne _Lux, wurde das Variablenprofil nicht auf ~illuminace gesetzt so das kein lx als Einheit hinter den Werten stand. Auch hier habe ich mir ein Script geschrieben das die alten Lux-Variablen einen neuen Ident verpasst damit meine Steuerung gehen sollte.

Ralf

bei mir läuft nach den Update-Schwierigkeiten auf die 2.0 soweit alles.
Meine bisher „nur“ 11 zigbee-Geräte wurden erfolgreich migriert

Konfigurator startet nicht, habe ich auch.

Konnte Konfigurationsform nicht laden
Warning: Undefined array key "friendly_name" in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 421

Warning: Undefined array key "friendly_name" in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 435

Fatal error: Uncaught TypeError: explode(): Argument #2 ($string) must be of type string, null given in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php:435
Stack trace:
#0 /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php(435): explode('/', NULL)
#1 /-(3): Zigbee2MQTTConfigurator->GetConfigurationForm()
#2 {main}
  thrown in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Configurator/module.php on line 435 (Code: -32603)

Erweiterung Version 5.01
Version 2.0.0-dev

im z2m log :

info 2025-01-16 16:46:11z2m: Symcon: lists/request/getDevices
info 2025-01-16 16:46:11z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/SymconExtension/lists/response/getDevices', payload '{"list":[{"ieeeAddr":"0xe0798dfffeb2c55c","type":"Coordinator","networkAddress":0,"model":"Unknown Model","vendor":"Unknown Vendor","description":"No description","friendly_name":"Coordinator"},{"ieeeAddr":"0x000b57fffea391d5","type":"Router","networkAddress":21596,"model":"ICPSHC24-30EU-IL-1/ICPSHC24-10EU-  usw...................................

info 2025-01-16 16:46:11z2m: Symcon: lists/request/getGroups
info 2025-01-16 16:46:11z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/SymconExtension/lists/response/getGroups', payload '{"list":[{"devices":[],"ID":901},{"devices":[],"friendly_name":"kueche","ID":902},{"devices":["0x000d6ffffe7c27a5"],"friendly_name":"Ikea Kueche","ID":65289}],"transaction":7622}'

Also dort keine Fehler.

Könnt ihr mal bitte einen Screenshot von dem Gruppen in Z2M machen?
Michael

Bitte :

Ich habe nur die 1. Gruppe die @tomgr auch hat.

Ralf

Die habe ich z.b. gar nicht.
Ich glaube ich setze nachher mal eine ganz alte Version frisch auf und schau mal wo das her kommt.
Wenn ihr diese Gruppe nicht braucht; ist der Fehler weg wenn ihr sie löscht?
Michael

geht da nicht.

Super… Bestimmt irgendein Überbleibsel aus ewig alten Versionen.
Michael

Genau meine Vermutung , ich such schon.

Wenn ich die Gruppe löschen will sagt z2m das es sie nicht gibt😂

Ist hier auch so Ralf,
901 scheint ne Standard Gruppe zu sein.
Hab alles ander gelöscht, geht immer noch nicht.
Bis auf den Zigbee2MQTT Konfigurator läuft ja alles, also halb so wild.
Ich such mal weiter, wnn Zeit ist.

Für versierte Nutzer:

Schaut bitte mal in folgende Dateien nd löscht dort die Gruppen raus und schaut, ob es dann läuft:

/opt/zigbee2mqtt/data/configuration.yaml:

groups:
  '1':
    friendly_name: Badezimmer/Heizung/Gruppe

/opt/zigbee2mqtt/data/database.db:
{"id":240,"type":"Group","groupID":1,"members":[{"deviceIeeeAddr":"0x30e8e40000d34d48","endpointID":1},{"deviceIeeeAddr":"0x18fc2600000a9ab4","endpointID":1}],"meta":{}}

/opt/zigbee2mqtt/data/state.json:

    "1": {},
    "2": {
        "state": "OFF",
        "brightness": 254
    },
    "3": {
        "state": "OFF",
        "brightness": 254,
        "color_temp": 366,
        "color_mode": "color_temp"
    },

LG
Burkhard

1 „Gefällt mir“