J’ai 2 capteurs Xiaomi [MCCGQ01LM] que j’utilise avec Zigbee2Mqtt et dont je récupère les infos via jMQTT.
Ces capteurs lorsque la batterie devient un peu faiblarde « reboot », on peut observer le compteur de brown out s’incrémenter. Pour autant la valeur binaire du capteur ne change pas après reboot, elle reste bien à la même valeur qu’avant. Cependant j’observe une répétition des infos dans l’historique de l’équipement ET le déclenchement de m’on alarme du coup via le plugin Alarme qui lui reçoit une maj et considère qu’il y a un event même si la valeur n’a pas changé. Est ce que vous constatez ou reproduisez ce phénomène ?
Le script shell pour « toggle » la valeur rapidement est par ex :
mosquitto_pub -t topic123865/info -m 0 # set to 0
sleep 10
mosquitto_pub -t topic123865/info -m 1 # fast toggle 0->1->0
mosquitto_pub -t topic123865/info -m 0
sleep 10
mosquitto_pub -t topic123865/info -m 1 # set to 1
sleep 10
mosquitto_pub -t topic123865/info -m 0 # fast toggle 1->0->1
mosquitto_pub -t topic123865/info -m 1
sleep 10
mosquitto_pub -t topic123865/info -m 1 # set to 0
Dans le log events, on voit bien que j’ai 2 évènements contraires à 10:52:01 et 2 autres à 10:54:28 :
[10:51:45][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 0
[10:52:01][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 1
[10:52:01][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 0
[10:54:05][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 1
[10:54:28][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 0
[10:54:28][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 1
[10:54:51][INFO] : Evènement sur la commande [zzz][Topic123865][info] valeur : 1
Pourtant, il n’y a qu’une inscription dans le graphique et qu’une inscription en BDD :
Bref, ce n’est probablement pas un souci avec jMQTT, mais plus dans le Core avec la répétition des valeurs. Mais dans le fond, je pense que le problème vient plus de ton équipement qui envoie 1, puis 0, très rapidement, ce qui n’est pas souhaitable. Pour t’en assurer, active le log events (Core) en debug et regarde si tu as des events dans la même seconde sur cette commande.
Sinon, comment déclenches-tu ton alarme ?
Si c’est avec un scenario, peux-tu le montrer ici ? Il y a peut-être des choses à changer pour éviter ça.
Bonjour Bad, tu ne fais pas les choses à moitié toi. Tu as certainement raison, le capteur quand il s’initialise envoit probablement furtivement une valeur à 1 puis zéro. Je n’ai pas de scénario c’est l’info brute du capteur mais je devrais en faire un pour renvoyer l’état au bout de qq seconde pour m’affranchir de ça. Et aussi changer les piles . Mais quand ça se produit et que tu es en vacances c’est la loose.
Merci d’avoir faire une analyse en profondeur. Bon weekend.