Bouton pour réinitialiser l'intégration Zigbee2Mqtt

L’intégration Zigbee2mqtt dispose d’un bouton « Activer/Désactiver » qui arrête les containers, mais ne nettoie ni les variables en base ni les fichiers sur disque. Il n’existe aucun moyen de repartir de zéro sans intervention manuelle. L’idée est d’ajouter un bouton « Réinitialiser » sur la page setup, avec confirmation (comme sur matterbridge/node-red), qui effectue un reset complet : déconnexion, suppression des variables, suppression des fichiers et containers.

Procédure de reset :

  1. Appeller this.disconnect() (arrêt containers + déconnexion MQTT)
  2. Supprimer toutes les variables de config en base via this.gladys.variable.destroy(key, this.serviceId) pour chaque clé de CONFIGURATION dans constants.js :
  • 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. Supprimer le dossier zigbee2mqtt/ sur disque
  2. Réinitialiser l’état (discoveredDevices, usbConfigured, flags de status, etc.)
  3. Émettre un status event via this.emitStatusEvent()

:warning: Uniquement disponible dans le mode “Installation depuis Gladys”

Proposition de design + messages

Avec confirmation

Pour les devices Gladys liées à cette intégration, je pense qu’il faut les laisser (sinon, on risque de casser des scènes ?)

Pour ce que ça vaut, ça me semble nickel. C’est très clair !

Au niveau backup Gladys +, si on restaure une version avec un ancien dongle, ça ne risque rien? Ou au contraire, c’est une sécurité supplémentaire car on pourrait restaurer en cas de mauvaise manipulation ?

Pour le coup à tester, je ne sais pas comment ça réagit. Dans les cas qu’on a vu sur le forum, c’était un autre cas : changement de dongle avec des fichiers déjà sur le disque.

Dans le cas de la restauration Gladys Plus, on ne restaure pas les fichiers Zigbee2mqtt, on fournit juste à Zigbee2mqtt de quoi recommencer avec la même configuration, c’est pas exactement pareil

1 « J'aime »

Pour moi, on sauvegarde tout le contenu du dossier zigbee2mqtt (donc configuration.yaml, database.db et coordinator_backup.json).

Mais la restauration teste si une nouvelle configuration est là. Si on restaure un backup fait avec un ancien dongle (alors qu’un nouveau dongle est branché et z2m pas initialisé), il faudra aussi utiliser ce bouton.

Ok, j’ai fait une implémentation ce matin !

J’en ai profité pour renforcer la robustesse de l’intégration, car il y avait des instabilités qui devenaient encore plus visibles avec cette nouvelle fonctionnalité.

Notamment le bug du conteneur stoppé : jusque-là, dans Gladys, si le conteneur Zigbee2mqtt était déjà arrêté, une erreur 304 était émise et on ne passait jamais à la suppression du conteneur. C’est corrigé pour toutes les intégrations :white_check_mark:

J’ai testé dans plein de cas en local sur un mini-PC, et ça marche trop bien !

Les écrans :

La PR :

L’image Docker :

gladysassistant/gladys:zigbee2mqtt-reset-button

(Déjà buildée sur x64, en cours de build pour arm64)

Je fais une release dans l’après-midi, si vous voulez tester d’ici là c’est possible :wink:

1 « J'aime »

Testé sur une instance avec un dongle mais pas d’appareils appairés. Ca fonctionne bien, les états sont bons après et les dossiers/variables/conteneurs sont bien supprimés :check_box_with_check:

1 « J'aime »

Merci pour le test rapide @cicoub13 ! Je fais une nouvelle version de Gladys cet aprèm

Le nouveau bouton est disponible dans Gladys Assistant v4.70 :