KiwiHC16 / Abeille

Abeille pour Jeedom (Gateway ZiGate)
GNU Affero General Public License v3.0
60 stars 52 forks source link

Ajout bouton remove from zigbee #1770

Closed KiwiHC16 closed 3 years ago

KiwiHC16 commented 3 years ago

Ajouter un bouton pour retirer un equipement du reseau zigbee (sans touché a son existance dans Abeille).

La commande existe déjà. Accessible depuis la ruche.

Objectif, more user friendly.

tcharp38 commented 3 years ago

Il y a deja un point sur le sujet. Le #1273 Je clos le + vieux

mickadam29 commented 3 years ago

@KiwiHC16 @tcharp38

Preneur des infos et des tests. J'ai un routeur qui est présent dans Abeille et donc Zigate alors qu'il est HS. J'aimerai le supprimer car j'ai encore son IEEE mais visiblement la commande 0026 ne le vire pas de la Zigate. A moins que je ne m'y prenne mal.

tcharp38 commented 3 years ago

C est un sujet que j'avais démarré il y a un moment mais que j'ai arrété en cours par manque de reponses. Mais en résumé la ou j'en etais

mickadam29 commented 3 years ago

Je me suis pas penché énormément sur le sujet mais c'est curieux comme principe. Je vois pas l'intérêt pour la norme d'exclure la possibilité de virer de force un équipement. Je ferai avec évidemment. Lorsque qq1 se sera penché sur la mémoire d'un coordinateur il y aura certainement une façon de faire. D'ailleurs si on efface la PDM, ca revient en partie à la même chose non ?

tcharp38 commented 3 years ago

Si on efface la PDM oui le coordinateur ne connait plus personne. Mais aujourd hui on ne sait pas enlever juste un eq de la PDM.

mickadam29 commented 3 years ago

Y a plus qu'à mettre le doigt sur la façon de faire. Même si c'est pas très Zigbee Alliance

KiwiHC16 commented 3 years ago

En fait il y a 3 commandes au moins comprises par la zigate:

0026 permet d'effacer de la zigate les infos d'un device. Je l'utilise quand un équipement 'disparait' ou quand j'ai du mal a faire une nouvelle inclusion car la zigate n'envoie pas deux fois la clef réseau.

Il faudrait que je teste les 3 pour voir les messages sur le zigbee.

mickadam29 commented 3 years ago

@KiwiHC16 Tu utilises la commande Remove avec l'adresse IEE de l'équipement à virer ? Sans action sur la Zigate

image

La commande passe dans les logs

image

Un refresh LQI interroge toujours 14 objets. Seulement 13 sur le réseau. Le dernier étant celui que je veux virer.

C'est peut-être parce qu'il n'est pas directement rattaché à la Zigate ?

image

KiwiHC16 commented 3 years ago

Remove pour moi retire l equipement de la base zigate. Mais personne sur le réseau n'est informé. Donc sur un LQI le routeur vont continuer à rapporter des infos pendant un certain temps.

Pour faire ce que tu veux il faut certainement utiliser:

tcharp38 commented 3 years ago

Je dirais que pour les eq sur batterie, inutile de perdre du temps a "reveiler" le device. Lui faire un reset et c'est bon il quitte tout seul sans compliquer la procedure et Abeille est au courant.

Pour moi la question ne se pose que pour les eq sur secteur.

Non ?

KiwiHC16 commented 3 years ago

Sur remplacement d'equipement je fais un remove:

self::publishMosquitto(queueKeyAbeilleToCmd, priorityNeWokeUp, "Cmd" . $destGhost . "/Ruche/Remove", "IEEE=" . $IEEE);
KiwiHC16 commented 3 years ago

@tcharp38, faisons des tests avant de conclure.

mickadam29 commented 3 years ago

Celui que j'aimerais retirer n'est pas sur batterie. Et effectivement ta fonction remove sur Remplacement devrait opérer de la même façon. A priori.

tcharp38 commented 3 years ago

@tcharp38, faisons des tests avant de conclure.

Bien sur :)

KiwiHC16 commented 3 years ago

J'ai le detail des specifications et les tests sont en lignes. Reste à savoir ce que l on fait dans Abeille.

mickadam29 commented 3 years ago

Suis partant pour mettre en oeuvre. Y compris une routine php avant d'intégrer. J'ai ce routeur à virer et si j'ajoute la fonction routeur aux modules DIY, j'aimerai être certain de pas les accumuler au fur et à mesure de mes essais

KiwiHC16 commented 3 years ago

@mickadam29 sur github et Mick... A... sur Slack est la meme personne ?

tcharp38 commented 3 years ago

@KiwiHC16 Tu peux resumer ce que tu sais fonctionnel ?

mickadam29 commented 3 years ago

Oui. Une seule et même personne

Le 17 févr. 2021 à 09:23, Ben notifications@github.com a écrit :

@mickadam29 sur github et Mick... A... sur Slack est la meme personne ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

KiwiHC16 commented 3 years ago

1 - Remove qui est la command 0x0026. (Celle de ce sujet initialement) Fait le remove au niveau NWK. Typiquement utilisé par le controleur de reseau (TC, ici zigate) pour virer des équipement qu il ne veut pas/plus. Probablement pas optionnel car dans la couche Security.

2 - Mgt Leave Request qui est la commande 0x0047 Typiquement utilisé par un Gestionnaire de réseau (ici Abeille) Norme dit Optionnel.

3 - Leave Request Cmd 0x004C Typiquement utilisé par un equipement qui veut en sortir un autre. Par exemple un routeur qui dit à son child, quitte et revient / ou pas. Radius = 1 (Pas de routage)

Donc trois facons de faire decritent dans la norme qui font en gros la même chose.

Je dirai que si j ai bien compris, celui qui doit fonctionner à tous les coups et repond à nos besoins est le premier.

Les trois sont implementés dans des commandes de la ruche.

KiwiHC16 commented 3 years ago

@tcharp, tu nous fais un beau bouton sur la base de la commande 1 ?

Commande dispo dans la ruche:

Capture d’écran 2021-02-17 à 12 22 03

KiwiHC16 commented 3 years ago

@mickadam29, quand tu fais tes essais, si tu effaces la memoire du chipset, il faut faire un Remove depuis la ruche (cf commande ci dessus) sinon tu ne pourras pas re-inclure ton equipement.

KiwiHC16 commented 3 years ago

Je pense qu'il faut aussi modifier les parametres et passer de: IEEE=#title# à ParentAddressIEEE=#title#&ChildAddressIEEE=#message#

Je vais faire ca.

mickadam29 commented 3 years ago

@mickadam29, quand tu fais tes essais, si tu effaces la memoire du chipset, il faut faire un Remove depuis la ruche (cf commande ci dessus) sinon tu ne pourras pas re-inclure ton equipement.

Je ne souhaite pas faire le reset. Sinon encore une fois, il faudra tout réinclure

mickadam29 commented 3 years ago

Je pense qu'il faut aussi modifier les parametres et passer de: IEEE=#title# à ParentAddressIEEE=#title#&ChildAddressIEEE=#message#

Je vais faire ca.

J'ai tenté avec ZGUI de NXP, ca n'a visiblement pas marché non plus. Je te laisse poursuivre. Dans ce cas, Parent j'ai mis Zigate, et Child, mon routeur à sortir

mickadam29 commented 3 years ago

Et la commande de la ruche je l'ai testée aussi. Sans succès.

image

image

Avec l'IEEE de mon routeur à virer

KiwiHC16 commented 3 years ago

Sur quelle information tu te bases pour dire que cela ne fonctionne pas ?

KiwiHC16 commented 3 years ago

@mickadam29, quand tu fais tes essais, si tu effaces la memoire du chipset, il faut faire un Remove depuis la ruche (cf commande ci dessus) sinon tu ne pourras pas re-inclure ton equipement.

Je ne souhaite pas faire le reset. Sinon encore une fois, il faudra tout réinclure

Reset Zigate ne fait rien. Erase PDM et tu dois tout re-inclure Remove eneleve juste celui que tu veux. C est cette commande que tu dois utiliser.

Note que rien ne change dans Abeille, c est juste Zigbee.

mickadam29 commented 3 years ago

@KiwiHC16

C'est tout à fait ça que je veux. Juste le remove. Mais rien ne se passe, je vais vérifier à nouveau.

KiwiHC16 commented 3 years ago

Capture d’écran 2021-02-17 à 13 57 23

Prends le master, supprimes la ruche, redemarre le daemon pour recreer la ruche, affiche la commade Remove, mets l IEEE de ton device/routeur dans les deux champs (Routeur et equipement).

mickadam29 commented 3 years ago

Ca marche, je teste ça

mickadam29 commented 3 years ago

La commande est passée. Je vérifie le résultat sur 00124B0021080DCD

image

KiwiHC16 commented 3 years ago

"Je vérifie le résultat" -> Comment fais tu ?

mickadam29 commented 3 years ago

Il faut que l'équipement soit sur le réseau ? Car Abeille interroge autant de routeurs dans refresh_Lqi.

mickadam29 commented 3 years ago

C'est peut-être pas révélateur ce nombre de routeurs ?

KiwiHC16 commented 3 years ago

"Car Abeille interroge autant de routeurs dans refresh_Lqi" Il faut que je regarde si le refresh_lqi prend bien en compte le fait que e routeur a ete desactivé dans Abeille car viré du réseau.

mickadam29 commented 3 years ago

ok. Mais j'ai encore l'objet dans Abeille. Il faut peut-être que je le retire non ? gardé pour avoir son adresse courte et IEEE

KiwiHC16 commented 3 years ago

refresh_lqi ne prend pas en compte la desactivation de l equipement et je ne vais pas le faire car je veux refresh_lqi brute pour recuperer tout ce que l on peut.

KiwiHC16 commented 3 years ago

Mais j'ai encore l'objet dans Abeille. Il faut peut-être que je le retire non ? gardé pour avoir son adresse courte et IEEE

Remove enleve que du reseau zigbee et ne touche pas a abeille. Si tu le re-inclus il sera de nouveau dans la bon equipement Abeille avec la meme adresse IEEE et peut etre une adresse courte differente.

KiwiHC16 commented 3 years ago

@tcharp38 si tu peux faire un beau bouton pour exclure avec cette nouvelle version de la version Remove. Elle fonctionne pour les routeur en fournissant 2 fois l adresse IEEE du routeur en paramètre.

Par contre pour les equipements terminaux cela va etre un peut plus difficile. Il faudrait recuperer lors d un refresh LQI le parent de l equipement et le conserver dans les parametres de l equipement.

KiwiHC16 commented 3 years ago

@mickadam29 je voudrais garder cet issue sur le sujet dans le titre. Pour ton sujet ouvres une issue specifique.

mickadam29 commented 3 years ago

Ca marche.

tcharp38 commented 3 years ago

@tcharp38 si tu peux faire un beau bouton pour exclure avec cette nouvelle version de la version Remove. Elle fonctionne pour les routeur en fournissant 2 fois l adresse IEEE du routeur en paramètre.

Par contre pour les equipements terminaux cela va etre un peut plus difficile. Il faudrait recuperer lors d un refresh LQI le parent de l equipement et le conserver dans les parametres de l equipement.

Ok je vais regarder ca. Mais vu que tu parles d'un equipement parent, quelle doc ferais tu pour expliquer la procedure ? Pour moi ca reste pas clair.

KiwiHC16 commented 3 years ago

Je te contact sur slack pour les details.

tcharp38 commented 3 years ago

J'ai pu verifier l'exclusion avec un capteur Xiaomi de temp. Apres demande d'exclusion, un p'tit coup de reveil via l'appuis sur son bouton est le message "a quitté le réseau" est apparu. Mais ca n'a pas fonctionné pour le Xiaomi lumi Et je n'arrive pas à reinclure le temp Xiaomi.

mickadam29 commented 3 years ago

De mon côté j'ai réussi à virer mon routeur grâce à la fonction Remove de la Ruche Adresse IEEE du parent qui le connaissait Adresse IEEE de mon routeur à virer. Heureusement que j'avais son IEEE

Merci à vous

tcharp38 commented 3 years ago

Pas propre. Voir #1906

tcharp38 commented 3 years ago

Nouvelle version dispo sur la beta du moment. Utilisation de la cmde 004C au lieu de 0026. Semble ok. Mode dev uniquement jusqu'a confirmation que ca fonctionne tout le temps

tcharp38 commented 3 years ago

Bon j'ai rendu le bouton accessible à tous. image

Je clos. A reouvrir si besoin