KiwiHC16 / Abeille

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

Adresse inconnue de Jeedom, j'essaie d'interroger l'equipement pour le creer ... à éviter #1476

Closed tcharp38 closed 3 years ago

tcharp38 commented 3 years ago

@KiwiHC16 Je reviens sur ce point. Tu m'avais dit que ca permettait de "rattraper" une inclusion mal passée par ex.

Ma suggestion reste toujours la meme, surtout plus faire ca mais bosser l'amelioration de l'inclusion car ce genre de "rattrapage" est hyper couteux en messages et pousse abeille dans une situation qu'il ne sait pas gerer.

Mon log Abeille est saturé des messages suivants

[2020-11-29 09:53:17][DEBUG] : L equipement Abeille1/3C24 n existe pas dans Jeedom, je ne process pas la commande, j'essaye d interroger l equipement pour le créer. [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/AnnonceManufacturer payload: 01 vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/AnnonceManufacturer","payload":"01"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/Annonce payload: Default vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/Annonce","payload":"Default"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/AnnonceProfalux payload: Default vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/AnnonceProfalux","payload":"Default"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/AnnonceManufacturer payload: 0B vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/AnnonceManufacturer","payload":"0B"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/Annonce payload: Hue vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/Annonce","payload":"Hue"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/AnnonceManufacturer payload: 03 vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/AnnonceManufacturer","payload":"03"}} on queue: 123 [2020-11-29 09:53:17][DEBUG] : Envoi du message topic: CmdAbeille1/3C24/Annonce payload: OSRAM vers 123 [2020-11-29 09:53:17][DEBUG] : Could not send Msg: {"topic":null,"payload":null,"priority":null,"message":{"topic":"CmdAbeille1\/3C24\/Annonce","payload":"OSRAM"}} on queue: 123

Du coup evidement le log AbeilleCmd lui dit

[2020-11-29 10:09:21][debug] sendCmdToZigate(Dest=Abeille1, cmd=0100, len=000e, datas=023C240103000000000000010004) [2020-11-29 10:09:21][debug] Envoi de la commande a la zigate: /dev/ttyUSB0-0100-000e-023C240103000000000000010004 [2020-11-29 10:09:21][debug] J'ai 9739 commande(s) pour la zigate a envoyer. [2020-11-29 10:09:21][debug] sendCmdToZigate(Dest=Abeille1, cmd=0100, len=000e, datas=023C240103000000000000010005) [2020-11-29 10:09:21][debug] Envoi de la commande a la zigate: /dev/ttyUSB0-0100-000e-023C240103000000000000010005 [2020-11-29 10:09:22][debug] J'ai 9738 commande(s) pour la zigate a envoyer. [2020-11-29 10:09:22][debug] sendCmdToZigate(Dest=Abeille1, cmd=0100, len=000e, datas=023C240101000000000000010004) [2020-11-29 10:09:22][debug] Envoi de la commande a la zigate: /dev/ttyUSB0-0100-000e-023C240101000000000000010004 [2020-11-29 10:09:22][debug] J'ai 9737 commande(s) pour la zigate a envoyer. [2020-11-29 10:09:22][debug] sendCmdToZigate(Dest=Abeille1, cmd=0100, len=000e, datas=023C240101000000000000010005) [2020-11-29 10:09:22][debug] Envoi de la commande a la zigate: /dev/ttyUSB0-0100-000e-023C240101000000000000010005 [2020-11-29 10:09:24][debug] Je n'ai pas de Ack (Status) depuis 1 secondes avec now = 1606640964 et timeLastAck = 1606640963 donc je considère la zigate dispo..... [2020-11-29 10:09:24][debug] J'ai 9737 commande(s) pour la zigate a envoyer. [2020-11-29 10:09:24][debug] sendCmdToZigate(Dest=Abeille1, cmd=0100, len=000e, datas=023C240101000000000000010005) [2020-11-29 10:09:24][debug] Envoi de la commande a la zigate: /dev/ttyUSB0-0100-000e-023C240101000000000000010005 [2020-11-29 10:09:24][debug] Message from queueKeyCmdToCmd: CmdAbeille1/Ruche/getVersion -> Version [2020-11-29 10:09:24][debug] L2 - procmsg({"topic":"CmdAbeille1\/Ruche\/getVersion","payload":"Version","priority":4,"message":null}) [2020-11-29 10:09:24][debug] L2 - procmsg("CmdAbeille1\/Ruche\/getVersion" , "Version" , 4) [2020-11-29 10:09:24][debug] L2 - 1 argument command [2020-11-29 10:09:24][debug] L1 - processCmd({"getVersion":"Version","priority":4,"dest":"Abeille1"}) [2020-11-29 10:09:24][debug] Get Version [2020-11-29 10:09:24][debug] sendCmd("Abeille1", cmd="0010", data="", len="0000", priority=4) [2020-11-29 10:09:24][debug] i: 1 key: 1 [2020-11-29 10:09:24][info ] Il y a plus de 50 messages dans le queue de la zigate: 1

Et il n'y a pas de sortie possible a part redemarrer les demons.

Je ne connais pas cet equipement "3C24" et il ne fait pas partie de ceux inclus. Un message a bien du remonter avec cette adresse je n'en doute pas mais d'une part je n'ai pas la trace car trop d'evenement depuis, mais d'un point de vue "utilisateur" ne connaissant pas cet equipement (pas dans la liste des trucs inclus en ce moment), il ne devrait pas me foutre en l'air mon systeme.

image

En conclusion je suggere de juste mettre un message quand eq n'est pas connu de Jeedom mais surtout pas se lancer dans de multiples phases d'interrogations. Combien de cas as tu de "recuperation" via ce systeme en fonction?

tcharp38 commented 3 years ago

Je continue mes investigations et confirme que le scan LQI plonge Abeille dans une saturation de messages.

AbeilleLogs-201130.tar.gz

En gros il recoit l'adr d'un eq inconnu de Jeedom (et de moi :)) et il tente de l'interroger malgre tout.

[2020-11-30 21:18:19][debug] Abeille1, Type=804E/Management LQI response, SQN=BE, Status=00, NeighbourTableEntries=09, NeighbourTableListCount=02, StartIndex=01, NWKAddr=3C24, ExtPANId=CF0AFACF55554CFB, ExtAddr=20918A000004833B, Depth=1, LinkQuality=123, BitMapOfAttributes=1A, SrcAddr=AA03 [2020-11-30 21:18:19][debug] Abeille1, Type=804E/Management LQI response: NeighbourAddr=3C24 qui n est pas dans Jeedom, essayons de l interroger, si en sommail une intervention utilisateur sera necessaire.

Il y a meme des reponses mais ca ne lui plait pas et continue de bombarder le reseau de questions.

[2020-11-30 21:18:24][debug] Abeille1, Type=8102/Attribut report, SQN=E7, Addr=3C24, EP=01, ClustId=0000, AttrId=0005, AttrStatus=86, AttrDataType=FF, AttrSize=0000 [2020-11-30 21:18:24][debug] Abeille1, Type=8102/Attribut report, SQN=E7, Addr=3C24, EP=01, ClustId=0000, AttrId=0005, AttrStatus=86, AttrDataType=FF, AttrSize=0000 [2020-11-30 21:18:24][debug] Abeille1, Type=8102/Attribut report, SQN=E7, Addr=3C24, EP=01, ClustId=0000, AttrId=0005, AttrStatus=86, AttrDataType=FF, AttrSize=0000 [2020-11-30 21:18:24][debug] Abeille1, Type=8102/Attribut report, SQN=EA, Addr=3C24, EP=01, ClustId=0000, AttrId=0004, AttrStatus=86, AttrDataType=FF, AttrSize=0000

KiwiHC16 commented 3 years ago

Je veux absoluement garder la fonction car elle permet récupérer des situations quand par exemple un equipement change d'adresse courte, si tu remontes un backup trop vieux...

J'ai fait de multiple changements dans cette partie du code sur le master. Il serait interessant de voir ce qu'il se passe avec le master.

Je te propose de mettre une option pour l utilisateur. Comme cela par defaut pas de soucis de surcharge et si l utilisateur peut "pousser" la bete pour essayer de recuperer des modules.

tcharp38 commented 3 years ago

Salut Tu l'aura compris j'aime pas du tout l'idée de d'essayer de "récuperer". Je considere que ca revient à faire qqch qui est mal supporté par ailleurs et donc peut mener (comme dans mon cas) dans des situations inattendues.

Mon cas est facile, je commence à avoir un peu de comprehensions et je sais comment "bidouiller" pour bloquer ca une fois pour toutes. Mais tu aura de + en + de pbs des utilisateurs que tu ne pourra pas gerer car toujours specifiques et ca va à l'opposé d'un plugin "robuste". Abeille ne devrait bosser QUE sur les equipements que le plugin connait, à savoir ceux bien inclus.

A court terme, je vais suivre ta suggestion et ajouter une option "avancée" pour ignorer les messages d'equipements inconnus.

Pour le long terme, peux tu me donner un exemple + precis quand tu dis "vieux backup" ?

KiwiHC16 commented 3 years ago

Blocage recuperation equipement : option dans la page de config.

tcharp38 commented 3 years ago

@KiwiHC16 Que penses tu de mettre cette option en "blocage" pour les end users par defaut ?

KiwiHC16 commented 3 years ago

Normalement c est le cas.