Closed KiwiHC16 closed 3 years ago
Bon sang... ils saoulent ces merges qui font des surprises. Je suis quasi sur d'avoir déja livré une modif il y a un moment pour cette partie qui empechait d'interroger un equipement "désactivé". Tu l'avais intégré.
Je vais voir si je retrouve sinon je refais.
Regardes peut etre dans l historique quand, sur quel commit on aurait perdu l info.
Pas retrouvé mais je me demande si j'ai pas mélangé avec mon PR sur cron() qui lui est la.
Quoi qu'il en soit j'ai refais une passe sur cron15 [2020-11-17 18:30:07][DEBUG] : Starting cron15 ------------------------------------------------------------------------------------------------------------------------ [2020-11-17 18:30:07][DEBUG] : Check USB driver potential crash [2020-11-17 18:30:07][DEBUG] : cron15(): Interrogation des équipements sur secteur. [2020-11-17 18:30:07][DEBUG] : cron15(): Interrogation adresse 68CB [2020-11-17 18:30:07][DEBUG] : Envoi du message topic: TempoCmdAbeille1/68CB/Annonce&time=1605634207 payload: 01 vers 123 [2020-11-17 18:30:07][DEBUG] : Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"TempoCmdAbeille1\/68CB\/Annonce&time=1605634207","payload":"01"}} on queue: 123 [2020-11-17 18:30:07][DEBUG] : cron15(): Interrogation adresse 6B65 [2020-11-17 18:30:08][DEBUG] : Envoi du message topic: TempoCmdAbeille1/6B65/Annonce&time=1605634230 payload: 01 vers 123 [2020-11-17 18:30:08][DEBUG] : Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"TempoCmdAbeille1\/6B65\/Annonce&time=1605634230","payload":"01"}} on queue: 123 [2020-11-17 18:30:08][DEBUG] : cron15(): Interrogation adresse 7A30 [2020-11-17 18:30:08][DEBUG] : Envoi du message topic: TempoCmdAbeille1/7A30/Annonce&time=1605634254 payload: 01 vers 123 [2020-11-17 18:30:08][DEBUG] : Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"TempoCmdAbeille1\/7A30\/Annonce&time=1605634254","payload":"01"}} on queue: 123 [2020-11-17 18:30:08][DEBUG] : cron15(): Interrogation adresse 8696 [2020-11-17 18:30:08][DEBUG] : Envoi du message topic: TempoCmdAbeille1/8696/Annonce&time=1605634277 payload: 01 vers 123 [2020-11-17 18:30:08][DEBUG] : Msg sent: {"topic":null,"payload":null,"priority":null,"message":{"topic":"TempoCmdAbeille1\/8696\/Annonce&time=1605634277","payload":"01"}} on queue: 123 [2020-11-17 18:30:08][DEBUG] : cron15(): Interrogation des équipements nécessitant un polling. [2020-11-17 18:30:08][DEBUG] : Ending cron15 ------------------------------------------------------------------------------------------------------------------------
@KiwiHC16 Je viens de pousser un update mais je pense qu'on peut faire encore mieux.
Toutes les 15 mins on cherche à raffraichir le status des equipements sur secteur mais l'un d'eux a donné des nouvelles dans les 15 dernieres minutes on le reinterroge quand meme. Dans l'idée de ne pas saturer les queues de messages pas nécessaires, que penses tu de verifier la date du dernier message pour voir si c'est nécessaire ? Le "Time-Time" ou "Time-Timestamp" ca donne bien la date du dernier message reç de l'equipement n'est ce pas ?
Oui "Time-Time" ou "Time-Timestamp" donne bien la date du dernier message pour cet equipement. C est une bonne idée.Ca veut dire qu'on peut ping entre 15min et 29min mais comme le timeout est à 60, on peut esperer avoir au moins deux messages. Si on descend trop bas avec juste un message, il y risque de perdre un message de temps a autre et d etre en timeout.
Par curiosité pourquoi penses tu qu'on puisse perdre un message ? A quel niveau ? De tete la stack de la zigate relance elle meme le message sur le reseau quand il n'est pas acquité non ?
Tous les messages ne sont pas forcement acquités. C'est de la radio...
@KiwiHC16 Tu as un exemple d'eq qui a besoin de polling 15min ? Il est sur batterie ? Secteur ?
[2020-11-26 10:15:05][DEBUG] : cron15: Démarrage -------------------------------- [2020-11-26 10:15:05][DEBUG] : cron15: Interrogation des équipements sur secteur, sans nouvelle depuis plus de 15mins. [2020-11-26 10:15:05][DEBUG] : cron15: Interrogation des équipements nécessitant un polling 15mins. [2020-11-26 10:15:05][DEBUG] : cron15:Terminé -------------------------------- [2020-11-26 10:30:05][DEBUG] : cron15: Démarrage -------------------------------- [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation des équipements sur secteur, sans nouvelle depuis plus de 15mins. [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation de 'Volet C1' (adresse BFF8) [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation de 'Volet C2' (adresse A0D0) [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation de 'Volet C3' (adresse C331) [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation de 'Volet CU' (adresse 6991) [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation de 'Volet SM' (adresse 8F26) [2020-11-26 10:30:05][DEBUG] : cron15: Interrogation des équipements nécessitant un polling 15mins. [2020-11-26 10:30:05][DEBUG] : cron15:Terminé --------------------------------
l'idée est qu une ampoule par exemple ne va pas remonter d infos pendant des heures et donc Abeille var la considerer en timeout. D ou le ping.
Ok mais une ampoule c est consideré comme un eq sur secteur non ?
Comme on perdre une ampoule (débranchée, bug, ...) on l a ping. Pour l instant on ping sur battery_type qui est defini dans le modele et autre. Lors de l inclusion l equipement partage des infos et par exemple le fait qu il soit sur secteur ou non. Actuellement Abeille met ces infos à la poubelle. Il faudrait les recuperer et adapter le cron.
@KiwiHC16 J'ai encore besoin de clarifications. Désolé. Ma comprehension est la suivante le point à detailler est le "poll 15"
Tu confirmes ces points ? En particulierle point 2. Pour moi ca ne fait pas de sens d'interroger un eq sur batterie puisque par definition ce dernier ne "parle" que lorsqu'il a besoin pour economiser la batterie.
Exact
Cool. Derniere question. Tu te rappelles l'idée derriere les calculs suivants ? $i c'est le nbre de message d'interrogation. Quels sont les 23 et 13 ? Et pourquoi 60 *15 ? Merci
if (($i * 23) > (60 * 15)) {
message::add("Abeille", "Danger ! Il y a trop de messages à envoyer dans le cron 15 minutes. Cas A.", "Contacter KiwiHC15 sur le forum");
if (($i * 13) > (60 * 15)) {
message::add("Abeille", "Danger ! Il y a trop de messages à envoyer dans le cron 15 minutes. Cas B.", "Contacter KiwiHC16 sur le forum");
Je viens de rajouter les info MacCapa dans la conf des abeilles. Maintenant on peut utiliser getConfiguration sur la valeur "RxOnWhenIdle": si 1 on peut interroger, si 0 on ne peut pas.
Pour lisser la charge de messages, Les interrogations sont envoyées toutes les 23s. Nb Abeilles a interroger fois 23s doit etre < 15 minutes, sinon le poll suivant va demarrer avant que le precedent ne soit fini.
Les interrogations sont envoyées toutes les 23s. Nb Abeille *23s doit etre < 15 minutes, sinon le poll suivant va demarrer avant que le precedent est fini.
Le choix de 23s vient de qq part ou au hasard ?
Aleatoire pour eviter les classique 5, 10, 15 et autres....
Je viens de rafraichir la fonction. Bien plus propre je pense maintenant.
Ha, tu as modifié cette partie ?! Je vais voir ce que ca donne avec mes modifs du coup
J'ai l'impression qu'il y a des choses qui ont disparu. Ton RxOnWhenIdle indique si l'eq peut recevoir un message tout le temps donc c'est surtout pour les equipements sur batterie non puisque ceux sur secteur eux restent toujours actifs. C'est ca?
AC indique si l equipement est sous secteur Rx indique si l equipement ecoute tout le temps. Donc c est celui ci qu il nous faut je pense.
J'ai simplifier le code. Je ne pense pas avoir enlevé de fonction.
Il y a une fct qui a visiblement sauté suite à tes modifs. Si je ne trouve pas le modele avec le nom, jessaye avec le device ID, sinon modele default. Dans le code actuel je ne suis pas sure que l option modele sur device I existe encore. Je crois qu elle a sauté.
Je fais aussi des changements sur la procedure d'inclusion mais la j ai un soucis qu il faut que je comprenne avec de push.
Ca semble bon maintenant.
cron15 Ping NE with 220V to check Online status
Revoir cette partie pour faire quelque chose de mieux.