KiwiHC16 / Abeille

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

[KiwiHC16] Perte complete de 3 prises BliTZOIF (Briques) #2660

Closed KiwiHC16 closed 7 months ago

KiwiHC16 commented 7 months ago

Suite à des inclusions multiples, j'ai 3 prises complément "Briques":

HS ? Toutes en 2 jours ? Abeille qui envoie une séquence qui les rend HS ?

Pas le début dune piste, investigations à venir.

(J'en ai au moins 4 qui fonctionnent très bien par ailleurs.)

KiwiHC16 commented 7 months ago

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

KiwiHC16 commented 7 months ago

Info sur l une qui fonctionne sur mon réseau: Capture d’écran 2023-11-15 à 15 31 09

KiwiHC16 commented 7 months ago

Prise 1:

KiwiHC16 commented 7 months ago

Prise 2:

KiwiHC16 commented 7 months ago

Prise 3:

tcharp38 commented 7 months ago

Tu as remarqué que tu étais sur le canal 15 d'apres tes logs? Peut etre une incompatibilité ?

KiwiHC16 commented 7 months ago

Oui, j ai vu. Mais le comportement des prises qui "reboot" toutes les 16s c est meme avec zigate éteinte.

Je viens d'en ouvrir (détruire) une et le composant radio est ZT2S: https://developer.tuya.com/en/docs/iot/zt2s-module-datasheet?id=Kas9gdtath9p0 et pour flasher le code: https://developer.tuya.com/en/docs/iot/overview-of-download-firmware-and-authorization?id=Ka4zcqfo0eb5u

tcharp38 commented 7 months ago

Mais tu dis que 3 prises sont HS en meme temps ? C'est statistiquement pas possible ca

KiwiHC16 commented 7 months ago

Mon idée est que lors de la reconnaissance des prises, Abeille envoie des configurations que les prises n aiment pas, elles mettent ca en PROM et apres c est le bazar. Aucune preuve, aucun log. Juste un feeling par rapport au moement du plantage des prises. ET pourquoi ces trois là et pas les autres que j'ai ? Le probleme c est que je ne trouve pas comment les "réveiller"...

tcharp38 commented 7 months ago

Incroyable ! Ca veut dire pas de HW reset sur ces prises ? Peut etre en les laisser debranchées un moment ?

KiwiHC16 commented 7 months ago

Rien de visible au niveau hard (Rien n a brulé, ...) Tout semble Ok.

Aucune piste pour l instant.

KiwiHC16 commented 7 months ago

Je clos car pas de lien direct avec code Abeille et la chance de trouver la raison est quasi nulle. Si je trouve des infos, je partagerai.

KiwiHC16 commented 7 months ago

Premiere observation à vérifier, dans le modele il semble qu'une valeur manque, est ce que le code Abeille le gere ?

Capture d’écran 2023-11-27 à 16 03 34

changeVal=

Capture d’écran 2023-11-27 à 16 04 28

Capture d’écran 2023-11-27 à 16 04 54

La valeur est visiblement manquante dans le message zigbee.

KiwiHC16 commented 7 months ago

configureReporting2

tcharp38 commented 7 months ago

Oui c'est un sujet que je voulais creuser mais avant tout ... la spec se comprend comment ?

Ces paramtres sont optionnels à priori image

Une idée ?

KiwiHC16 commented 7 months ago

Capture d’écran 2023-11-27 à 16 24 58

Je viens de la perdre sur cette commande. Je l ai passé de configureReporting à configureReporting2 dans le modele. Sur zigbee, ca par en vrille, la prise fait un volume incroyable de "report", puis rien puis "reset" toutes les 16s sans plus qucun message zigbee.

KiwiHC16 commented 7 months ago

Capture d’écran 2023-11-27 à 16 28 23

Ca balance des routes requests alors que je n ai que la zigate et la prise sur ce reseau.

Ne reagit plus avec le bouton sur le coté.

Ne repond plus à aucune commande demandée par Abeille. En fait la zigate fait un route request n'a pas de reponse, et donc n envoie pas la commande.

Finalement repond sur le bouton physique mais un appui long provoque led bleu mais pas de clignotement de celle ci et pas de beacon/Leave sur zigbee.

Je debrance et rebranche, elle fait des Route Request et des Link status donc elle est vivante mais ne repond plus à rien.

tcharp38 commented 7 months ago

Quelle est la signature de cette prise ?

KiwiHC16 commented 7 months ago

Bon sans acces au FW, c est mort. Je laisse tomber !

tcharp38 commented 7 months ago

Comment ca .. une autre morte ?

KiwiHC16 commented 7 months ago

TS011F__TZ3000_amdymr7l

tcharp38 commented 7 months ago

Tu peux refaire une autre inclusion ou c'est mort ?

KiwiHC16 commented 7 months ago

Oui une autre. Il faudrait pouvoir faire un reset PROM mais je n ai pas trouvé comment faire.

KiwiHC16 commented 7 months ago

Est l accumulation de configuration qui prove ce bug ? Je veut dire que ces prises ont toutes fonctionné une premiere fois d'apres ma mémoire. Puis lors d"une inclusion ou configuration comme celle ci, je les perds.

tcharp38 commented 7 months ago

Merde. Bon pour info de ce à quoi je pense.

Le "changeVal" est pour moi (d'apres la spec) optionnel. Donc si on donne rien dans le model on transmet rien. Ce qui fonctionne pour la plupart des cas. Peut etre que la... tu as besoin d'une valeur. Donc il faut l'ajouter au modele.

Tu as compris quel configureReporting foutait la merde ? Il y en a 3 dnas le modele actuelle: 0006-0000, 0B04-0508, & 0B04-050B

KiwiHC16 commented 7 months ago

Je viens de la perdre sur le dernier: 0B04-050B apres avoir fait les deux autres.

KiwiHC16 commented 7 months ago

Capture d’écran 2023-11-27 à 16 47 50

Elle vient de le balancer un volume de report !!!

KiwiHC16 commented 7 months ago
"params": "clustId=0B04&attrType=21&attrId=0508&minInterval=0000&maxInterval=0000&changeVal="

Une piste les min et max sont à 0000 !!!!

Elle serait dans une boucle infinie. J essaye de lui balancer un reset Usine.

J a ajouté un autre prise qui prend les messages en routeur mais ne parvient pas à les livrer à la prise en défaut.

tcharp38 commented 7 months ago

Oui souvent le cas. Valeur par defaut

Mais effectivement wireshark n aime pas si changeVal ne vaut rien

Donc pour ce cas 0508, soit RMSCurrent, tu peux mettre 5mA => donc changeVal=5

KiwiHC16 commented 7 months ago

Capture d’écran 2023-11-27 à 16 54 39

Elle ne repond pas !!!

tcharp38 commented 7 months ago

Tu as reconfiguré avec un changeVal ?

tcharp38 commented 7 months ago

Pour info je pousse à l instant une modif pour "configureReporting2" Par defaut si pas renseigné le changeVal sera mis à 0, suivant le bon format d'attribut. Wireshark est content en tout cas

KiwiHC16 commented 7 months ago

La prise ne repond plus à aucune commande pour l instant.

Toutes les 16s au moment ou le relai claque, elle envoie une salve de report.

Pour l instant la piste est min = max = 0 et elle boucle au point de reboot toutes les 16s.

Mon probleme est qu elle ne semble plus pouvoir accepter de commandes zigbee, car sur le sniff elle ne repond jamais.

KiwiHC16 commented 7 months ago

Il faudrait interdire min = max et forcer un min < max par mesure de securité dans configureReporting2

KiwiHC16 commented 7 months ago

La zigate et la prise font des routes requets mais aucunes des deux ne repond à l autre .... !!!

tcharp38 commented 7 months ago

Pas d'accord avec l'idée de mettre une verue dans le code, qui ne suive pas la spec. A faire par module si besoin mais ca n'a jamais été mis en evidence.

Et tu mettrais quoi ?

KiwiHC16 commented 7 months ago

Pas d'accord avec l'idée de mettre une verue

Quelle verue ?

tcharp38 commented 7 months ago

Haaaaaa

min=0000 max=0000 c'est acceptable des lors que tu as un changeVal Suis con mais comme ca oui ca fait du sens. J'imagine que wireshark n aurait rien dit si min ou max etaient non nuls

Donc la derniere correction qui met le changeVal à 0 doit regler ce cas

tcharp38 commented 7 months ago

Pas d'accord avec l'idée de mettre une verue

Quelle verue ?

Forcer un max > min.. Si dans le code c'est une verrue

KiwiHC16 commented 7 months ago

En fait il faut avoir un max > 0, c est le plus important, sinon ca veut dire que le FW doit faire un report en premanance, immédiatement, des infos. Et min par definition doit être <= max. Pour moi ce n est pas une verrue c est verification de base, une verification de consistences des informations utilisateur.

min: le FW ne doit pas faire de rapport plus souvent que toutes les min secondes pour ne pas saturer le reseau. max: le FW doit faire un rapport ou moins toutes les max secondes pour avoir une information pas trop vieille.

KiwiHC16 commented 7 months ago

Donc la derniere correction qui met le changeVal à 0 doit regler ce cas

Ca n a pas de sens. changeVal doit être au minimum de 1. C est le critere pour provoquer la generation d un rapport. Sur un binaire il faut au moins 1 d'écart, mais 1 sur une mesure de puissance qui fluctue tout le temps il var rapporter tout le temps. Donc par exemple uniquement sur 10 W de variation.

KiwiHC16 commented 7 months ago

Pour wireshark, je confirme qu il ne decode pas le valChange. Je me souviens de cette observation il y a qq années. J ai bien les valeurs dans les raws data de wireshark mais pas dans le décodage.

KiwiHC16 commented 7 months ago

Test avec prise OSRAM: Min = 10 et Max = 30

Sans rien faire, report toutes les 30s (d apres wireshark 27s.): Capture d’écran 2023-11-27 à 17 53 20

Et si On/off tout le temps sur le bouton lateral de la prise (bouton physique) toutes les 10s (Wireshark dit 10s): Capture d’écran 2023-11-27 à 17 55 39

Ca fonctionne bien comme prévu.

Pour moi ces verifications doivent être dans le code. ( C est pas de verrue, c est des verifications de bon parametres).

Je pense que si nous ne faisons pas ces tests on prend le risque d envoyer des valeurs illogiques au FW et tomber sur des cas non testés et planter les eq comme mes prises.

A moins qu ils soient indqué que la valeur 0 desactive la fonction report associé à : min, max ou val.

Est-ce que la norme dit quelque chose sur les valeurs acceptables ?

KiwiHC16 commented 7 months ago

Test avec prise OSRAM: Min = 0 et Max = 0 et val = 1 => rien de remonte si aucune activité. Et remonet sur chaque appuie sur bouton physique .

Ce qui voudrait dire que la valeur 0 desactive la fonction report associé à : min, max

Donc mes plantages de prise sont autre-chose que je ne trouverai jamais donc elle vont finir à la poubelle et il me faut trouver des prises qui fonctionnent correctement ;-(

tcharp38 commented 7 months ago

Ok je résume ma compréhension du moment et ce qui devrait etre pour un "configureReporting" correct

Tu serais en ligne avec ca ?

KiwiHC16 commented 7 months ago

Je vais essayer de trouver les doc zigbee sur le sujet pour etre sure de suivre leur recommandations. Je reviens vers toi quand je trouve quelque chose. Je propose de ne rien changer pour l instant.

Sinon pour mes prises, je vais prendre les bonnes vieilles Xiaomi plug EU qui font le boulot à priori, elles sont en 10A et pas 16A mais c est quffisent dans la grande majorité des cas. Pour Tuya c est poubelle pour moi.

KiwiHC16 commented 7 months ago
2.4.7.1.2   Direction Field
The direction field specifies whether values of the attribute are be reported, or whether reports of the attribute are to be received. 

If this value is set to 0x00, then the attribute data type field, the minimum reporting interval field, the maximum reporting interval field and the reportable change field are included in the payload, and the timeout period field is omitted. 

The record is sent to a cluster server (or client) to configure how it sends reports to a client (or server) of the same cluster.

 If this value is set to 0x01, then the timeout period field is included in the payload, and the attribute data type field, the minimum reporting interval field, the maximum reporting interval field and the reportable change field are omitted. The record is sent to a cluster client (or server) to configure how it should expect reports from a server (or client) of the same cluster. All other values of this field are reserved

Dans notre cas: Direction Field = 00, il faut min, max, valchange et pas timeout Si Direction Field = 01, seulement TimeOut

KiwiHC16 commented 7 months ago
2.4.7.1.5   Minimum Reporting Interval Field
The minimum reporting interval field is 16-bits in length and shall contain the minimum interval, in seconds, between issuing reports of the specified attribute. If this value is set to 0x0000, then there is no minimum limit, unless one is imposed by the specification of the cluster using this reporting mechanism or by the applicable profile.

Min: 2 octets , en secondes Si 0000 pas de min.

KiwiHC16 commented 7 months ago
2.4.7.1.6   Maximum Reporting Interval Field The maximum reporting interval field is 16-bits in length and shall contain the maximum interval, in seconds, between issuing reports of the specified attribute. If this value is set to 0xffff, then the device shall not issue reports for the specified attribute, and the configuration information for that attribute need not be maintained. (Note:- in an implementation using dynamic memory allocation, the memory space for that information may then be reclaimed). 

= Temps Max entre deux rapports

Max: 2 octets en secondes si 0xFFFF pas de rapport et l'équipement peut oublier la configuration.

KiwiHC16 commented 7 months ago
2.4.7.1.7   Reportable Change Field The reportable change field shall contain the minimum change to the attribute that will result in a report being issued. This field is of variable length. For attributes with 'analog' data type (see Table 2.15) the field has the same data type as the attribute. The sign (if any) of the reportable change field is ignored. For attributes of 'discrete' data type (see Table 2.15) this field is omitted

Changement minimum sur la mesure qui provoque un rapport. La taille depend du type de parametre mais pas clair.