KiwiHC16 / Abeille

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

[KiwiHC16] Refresh network ne recupere pas les routeurs inconnus de Jeedom db: regression du code. #2659

Closed KiwiHC16 closed 1 year ago

KiwiHC16 commented 1 year ago

Continuation du cas: #2642

KiwiHC16 commented 1 year ago

Master:

commit 98ef62d1664fa5fb7e06d3d21b2f7903736b768e (HEAD -> master, origin/master, origin/HEAD)
Author: Tcharp38 <tcharp38@laposte.net>
Date:   Wed Nov 15 10:41:16 2023 +0100

    TS0205__TZ3210_up3pngle

Situation de départ: Juste une prise Capture d’écran 2023-11-15 à 14 56 46

Refresh du reseau donne:

Capture d’écran 2023-11-15 à 15 01 04

Et la prise à bien été interrogée: Capture d’écran 2023-11-15 à 15 01 38

Je supprime la prise avec bouton rouge en haut à droite: Capture d’écran 2023-11-15 à 15 02 16

Plus de prise: Capture d’écran 2023-11-15 à 15 02 47

Refresh reseau, bouton orange:

Capture d’écran 2023-11-15 à 15 03 13

Message pendant operation: Capture d’écran 2023-11-15 à 15 03 29

La prise est bien interrogée sur zigbee:

Capture d’écran 2023-11-15 à 15 04 18

J ai bien les infos mais pas de nom d eq car n existe pas dans jeedom: Capture d’écran 2023-11-15 à 15 04 31

Mais je n ai pas de prise créée dans Jeedom à la suite du refresh.

Capture d’écran 2023-11-15 à 15 05 28

Pour moi, il y a une regression dans le code.

KiwiHC16 commented 1 year ago

Une des raisons principales d'avoir développé le refresh réseau était de récupérer les équipements inconnus de Jeedom qui existent dans le réseau zigbee sur la base des listes de voisines.

Dans la version d'abeille actuelle, il semble que la creation d'eq ne se produit "que" sur la base des messages d'annonce.

Si pendant un refresh réseau, on a un equipement, comme la prise ici, qui remonte mais n'est pas dans jeedom il faut aller l'interroger pour le recuperer.

Je me souviens avoir eu l approche suivante: faire une liste de toutes les informations connues et récupérées et interooge tout le monde pour créer les eq manquants:

Interroge tous le monde pour decouvrir les équipements manquant et les créer dans Jeedom.

KiwiHC16 commented 1 year ago

L'idée est bien de recréer le reseau sans intervention utilisateur sur les équipements et le plus vite possible. Dans le cas de la prise, je dois débrancher/branche pour provoquer l annonce (A eviter au maximum) et ou attendre en esperant qu'elle fasse une annonce un jour ou l'autre, mais quand ? jamais ?

tcharp38 commented 1 year ago

Pour moi un device

doit entrainer dans la foulée la requete pour chaque info manquante jusqu'a pouvoir identifier son modele et le creer proprement.

C'est du coup aussi le cas des qu'on fait une requete LQI et qu'Abeille decouvre une nouvelle adresse.

Si je ne suis pas encore totalement satisfait, ca marche plutot pile poil pour moi. Du coup.. je réitère.. je veux bien ton package de logs complet. Meme par email (tcharp38@laposte.net) si tu ne veux pas le laisser ici. Mais il ne contient aucune info critique à mon sens. J'avais déja filtré des choses en fonction de retours utilisateurs.

KiwiHC16 commented 1 year ago

C'est du coup aussi le cas des qu'on fait une requete LQI et qu'Abeille decouvre une nouvelle adresse.

Dans ce cas il y a un bug car cela ne fonctionne pas pour moi.

Ok je te fais un log dans la soirée.

KiwiHC16 commented 1 year ago

Test quper rapide car je dois y aller:

AbeilleLogs-231114.tar.gz

Manip, suppression prise, refresh network, et pas de prise crée, tout ca j espere est dans le logs que je n ai pas eu le temps de regarder. A ce soir.

tcharp38 commented 1 year ago

Tres etrange mais il doit y avoir un effet de bord qq part que je ne vois pas pour l'instant.

Tu as vidé une partie de l'historique du parser en particulier et je ne vois pas comment cet equipement qui apparait via LQI (adr 92D3) est connu ou non du parser. Et du coup je ne vois pas quand le parser recoit l'info "equipement supprimé".

En gros

Bref, je veux bien un package + complet sinon tu as qq billes. Je continue de creuser.

Question.. tu l'as supprimé comment exactement ?

KiwiHC16 commented 1 year ago

Tu as vidé une partie de l'historique du parser

Oui j ai vidé les logs avant de faire les manips pour faciliter la lecture.

Toujours avec ce bouton Supprimer.

Je vais entrer dans le code pour essayer de t'amener des billes plus précises.

tcharp38 commented 1 year ago

Tu peux déja suivre la sequence que j'ai indiqué. 1/ s assurer que le parser est au courant de la suppression 2/ voir un deviceUpdates() puis newDevice() suite à un refresh reseau

KiwiHC16 commented 1 year ago

Je retombe sur un scenarion similaire au precedent cas: 1) Suppression, refresh network, rien 2) Suppression, restart Abeille, refresh network, Prise créée.

KiwiHC16 commented 1 year ago
/* Called from decode8002() to decode "Mgmt_lqi_rsp" message */
function decode8002_MgmtLqiRsp($dest, $srcAddr, $pl, &$toMon) {
  ....
  foreach ($nList as $N) {
    ...
    $this->deviceUpdates($dest, $N['addr'], '', $updates);
KiwiHC16 commented 1 year ago

Apres restart Abeille:

[2023-11-14 10:30:12]   Management LQI response: SQN=CD, Status=00, NTableEntries=01, StartIdx=00, NTableListCount=01
[2023-11-14 10:30:12]   NExtPANId=76D888B1B30664F5, NExtAddr=84182600000E857B, NAddr=92D3, NBitMap=0225 => ?/Sibling/RxONWhenIdle/Router, NDepth=00, NLQI=9F
[2023-11-14 10:30:12]   BEN Calling deviceUpdates() with Dest: Abeille1 and aadr: 92D3 and ?: (rien) and update: {"ieee":"84182600000E857B"}
[2023-11-14 10:30:12]   92D3/84182600000E857B is a new device.
[2023-11-14 10:30:12]   deviceUpdates('ieee', '84182600000E857B'): Status=identifying
[2023-11-14 10:30:12]   Requesting active endpoints list

Sans Restart Abeille

[2023-11-14 10:31:41]   Management LQI response: SQN=D3, Status=00, NTableEntries=01, StartIdx=00, NTableListCount=01
[2023-11-14 10:31:41]   NExtPANId=76D888B1B30664F5, NExtAddr=84182600000E857B, NAddr=92D3, NBitMap=0225 => ?/Sibling/RxONWhenIdle/Router, NDepth=00, NLQI=93
[2023-11-14 10:31:41]   BEN Calling deviceUpdates() with Dest: Abeille1 and aadr: 92D3 and ?: (rien) and update: {"ieee":"84182600000E857B"}
tcharp38 commented 1 year ago

Ok donc ca ressemble à fait que le parser ne sait pas que l'equipement a été supprimé. Peux tu juste refaire la meme suppression et regarder le log parser ? Tu dois voir un truc du style

[2023-11-15 20:54:10] Some equipments removed from Jeedom
[2023-11-15 20:54:10]   Device Abeille1/67A4 (ieee=5C0272FFFE2857A3) removed from Jeedom
KiwiHC16 commented 1 year ago

La prise a été créée. Je supprime la prise et je log AbeilleParser. Aucune trace, aucun message.

tcharp38 commented 1 year ago

Shi.. Tu es sur le master ou sur un merge ? Si merge, peux tu verifier qu'il n'y a pas de diff ? Attention j'ai poussé encore plein d'updates sur le master mais ca doit pas toucher ce sujet

tcharp38 commented 1 year ago

Hoo.. sinon j'ai une autre idée. Une diff entre ta version de Jeedom et la mienne.

KiwiHC16 commented 1 year ago

Et si je fais pas la facon : Supprimer de Jeedom Capture d’écran 2023-11-15 à 21 00 36

J ai :

[2023-11-14 10:38:28] Some equipments removed from Jeedom
[2023-11-14 10:38:28]   Device Abeille1/92D3 (ieee=84182600000E857B) removed from Jeedom
KiwiHC16 commented 1 year ago

J ai

commit 98ef62d1664fa5fb7e06d3d21b2f7903736b768e (HEAD -> master, origin/master, origin/HEAD)
Author: Tcharp38 <tcharp38@laposte.net>
Date:   Wed Nov 15 10:41:16 2023 +0100

    TS0205__TZ3210_up3pngle
KiwiHC16 commented 1 year ago

a) Supprimer de Jeedom, n informe pas le parser b) Supprimer de Abeille, informe le parser

Est ce le soucis ?

tcharp38 commented 1 year ago

Je vais supposer que tes merges se sont bien passés et donc tu es parfaitement aligné. Ta version de Jeedom c'est quoi ?

KiwiHC16 commented 1 year ago

Pour ces tests: Capture d’écran 2023-11-15 à 21 05 21

tcharp38 commented 1 year ago

Je suis en 4.4 Il faut que je trouve comment revenir en arriere du coup. Je soupconne une difference de comportement de jeedom à ce niveau.

tcharp38 commented 1 year ago

Yessssss. Arrete de chercher. Je reproduis le souci en 4.3.19. Je dois creuser du coup pour comprendre la difference. Jeedom ne fait pas la meme chose :(

KiwiHC16 commented 1 year ago

Ok, je te laisse la main.

tcharp38 commented 1 year ago

J'ai poussé dans le master qqch qui semble compatible avec le core 4.3.19 et le 4.4.0. Je te laisse te realigner et verifier.

KiwiHC16 commented 1 year ago

Super. 5 tests et tous ok. Je clos.