Button zum Zurücksetzen der Zigbee2Mqtt-Integration

Der Zigbee2mqtt-Integration verfügt über einen „Aktivieren/Deaktivieren“-Button, der die Container stoppt, aber weder die Datenbankvariablen noch die Dateien auf der Festplatte bereinigt. Es gibt keine Möglichkeit, ohne manuellen Eingriff von vorne zu beginnen. Die Idee ist, einen „Zurücksetzen“-Button auf der Setup-Seite hinzuzufügen, mit Bestätigung (wie bei matterbridge/node-red), der ein vollständiges Zurücksetzen durchführt: Abmelden, Löschen der Variablen, Löschen der Dateien und Container.

Zurücksetzungsvorgang:

  1. this.disconnect() aufrufen (Container stoppen + MQTT-Abmelden)
  2. Alle Konfigurationsvariablen in der Datenbank über this.gladys.variable.destroy(key, this.serviceId) für jeden Schlüssel in constants.js löschen:
  • ZIGBEE2MQTT_DRIVER_PATH, Z2M_BACKUP, ZIGBEE_DONGLE_NAME, Z2M_MQTT_MODE, Z2M_TCP_POR, Z2M_MQTT_URL
  • Z2M_MQTT_USERNAME_KEY, Z2M_MQTT_PASSWORD_KEY
  • GLADYS_MQTT_USERNAME_KEY, GLADYS_MQTT_PASSWORD_KEY
  • DOCKER_MQTT_VERSION, DOCKER_Z2M_VERSION
  1. Das Verzeichnis zigbee2mqtt/ auf der Festplatte löschen
  2. Status zurücksetzen (discoveredDevices, usbConfigured, Statusflags usw.)
  3. Status-Event über this.emitStatusEvent() auslösen

:warning: Nur im Modus „Installation von Gladys aus“ verfügbar

Designvorschlag + Nachrichten

Mit Bestätigung

Für die mit dieser Integration verknüpften Gladys-Geräte denke ich, dass sie belassen werden sollten (sonst riskieren wir, Szenen zu brechen?).

Für das, was es wert ist, sieht das für mich gut aus. Es ist sehr klar!

Bei der Gladys±Sicherung: Wenn wir eine Version mit einem alten Dongle wiederherstellen, besteht dann ein Risiko? Oder ist es im Gegenteil ein zusätzlicher Sicherheitsfaktor, weil wir im Falle einer Fehlbedienung wiederherstellen könnten?

Das müsste man testen, ich weiß nicht, wie es reagiert. In den Fällen, die wir im Forum gesehen haben, war es ein anderer Fall: Wechsel des Dongles mit bereits auf der Festplatte vorhandenen Dateien.

Bei der Wiederherstellung von Gladys Plus werden die Zigbee2mqtt-Dateien nicht wiederhergestellt, es wird nur sichergestellt, dass Zigbee2mqtt mit der gleichen Konfiguration neu starten kann, das ist nicht genau dasselbe.

Für mich sichert man den gesamten Inhalt des Ordners zigbee2mqtt (also configuration.yaml, database.db und coordinator_backup.json).

Aber die Wiederherstellung prüft, ob eine neue Konfiguration vorhanden ist. Wenn man ein Backup mit einem alten Dongle wiederherstellt (während ein neuer Dongle angeschlossen ist und z2m nicht initialisiert wurde), muss man auch diesen Button verwenden.

Ok, ich habe heute Morgen eine Implementierung gemacht!

Ich habe die Gelegenheit genutzt, um die Robustheit der Integration zu verbessern, denn es gab Instabilitäten, die mit dieser neuen Funktion noch sichtbarer wurden.

Insbesondere der Bug mit dem gestoppten Container: Bisher gab es in Gladys, wenn der Zigbee2mqtt-Container bereits gestoppt war, einen Fehler 304 und es wurde nie zur Löschung des Containers übergegangen. Das ist jetzt für alle Integrationen korrigiert :white_check_mark:

Ich habe es lokal auf einem Mini-PC in vielen Fällen getestet, und es funktioniert super gut!

Die Screenshots:

Der Pull Request:

Das Docker-Image:

gladysassistant/gladys:zigbee2mqtt-reset-button

(Already built for x64, in progress for arm64)

Ich mache heute Nachmittag ein Release, wenn ihr bis dahin testen wollt, ist das möglich :wink:

Getestet auf einer Instanz mit einem Dongle, aber ohne gepaarte Geräte. Es funktioniert gut, die Zustände sind danach korrekt und die Ordner/Variablen/Container werden ordnungsgemäß gelöscht :check_box_with_check:

Danke für den schnellen Test @cicoub13! Ich mache heute Nachmittag eine neue Version von Gladys.

Der neue Button ist in Gladys Assistant v4.70 verfügbar: