Capteurs de température (Zigbee) qui ne sont plus joignables après quelques temps

Mon problème

Bonjour,

J’ai différents capteurs de T° (Aqara et Sonoff) intégrés via Conbee II. Tout fonctionne nickel, j’arrive à les ajouter dans l’interface Conbee, puis les récupérer dans HA via l’intégration Deconz.
Après quelques jours (voire semaines), ils disparaissent petit à petit, et ne sont plus « en ligne », même dans Deconz.
Je suis obligé de les supprimer puis de les rajouter… Ce qui est pénible.


Même en relançant le module Deconz, ils restent injoignables.

J’ai d’autres périphériques Zigbee (des leds principalement) et je n’ai pas ce problème.

Au niveau de mon matos, c’est sur un RPI3, avec un câble USB2 de 3m pour la clé Conbee (j’avais un câble USB3 avant, même problème).

Avez-eu déjà eu le même problème ? Auriez-vous des pistes ?

Merci à vous,

Ma configuration


System Health

version core-2022.6.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.12
os_name Linux
os_version 5.15.32-v8
arch aarch64
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4949
Installed Version 1.16.0
Stage running
Available Repositories 1045
Installed Repositories 9
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 8.1
update_channel stable
supervisor_version supervisor-2022.05.3
agent_version 1.2.1
docker_version 20.10.14
disk_total 58.0 GB
disk_used 11.7 GB
healthy true
supported true
board rpi3-64
supervisor_api ok
version_api ok
installed_addons deCONZ (6.14.1), Let’s Encrypt (4.12.2), File editor (5.3.3), Mosquitto broker (6.1.2), Zigbee2MQTT (1.25.2-1), Home Assistant Google Drive Backup (0.108.2), Terminal & SSH (9.4.0), Samba share (9.7.0)
Dashboards
dashboards 1
resources 7
views 10
mode storage
Recorder
oldest_recorder_run 12 juin 2022, 19:20
current_recorder_run 13 juin 2022, 13:43
estimated_db_size 617.86 MiB
database_engine sqlite
database_version 3.34.1
___

Tu as essayé avec des nouvelles piles tout simplement ? Pile neuve, de préférence pas issue d’un vieux stock qui traine X temps dans un entrepôt quelconque avant d’être livré le lendemain

Une autre piste, ces équipements ne respectent pas totalement la norme/protocole ZigBee et ne change pas de routeur, donc si tu a des équipements ZigBee que tu éteint (comme des ampoules derrière un interrupteur physique), le souci peut venir de là.

J’avais eu un problème similaire avec un détecteur de mouvement xiaomi. Je l’avais depuis peu de temps et la batterie apparaissait pleine avec sur deconz mais il ne fonctionnait plus au bout d’un certain temps (parfois quelques heures, parfois 2 jours). Je devais le reconnecter.
Comme l’a dit @Pulpy-Luke , j’ai changé la pile et je n’ai plus de souci depuis.
A essayer. Je ne sais pas si ça règlera ton souci mais ça pourra écarter cette possibilité.

Je les avais installés avec des piles toutes neuves de chez Action (hum hum). L’indicateur de pourcentage de batterie indiquait encore 90% la dernière fois que j’ai vérifié. On ne peut pas se fier à ça ?
Je vais tenter demain de changer de piles, sait-on jamais.

Mmmmh j’avais lu ça qq part en effet. J’ai des rubans leds et un interrupteur zigbee, ça cause le même souci j’imagine?
Existe t’il d’autres capteurs qui sont plus aux normes que ceux là ? Dans des prix acceptables évidemment

Merci pour ton retour, je vais essayer ça !

Je ne pense pas qu’on puisse se fier au pourcentage de batterie non.
D’après ce que je sais c’est un calcul qui est fait par l’appli utilisée en fonction du voltage de la batterie et les valeurs maxi et mini sont différentes pour chaque appli (deconz, Zigbee2mqtt, ZHA , passerelle Xiaomi…etc).
J’ai des capteurs qui fonctionnent depuis presque 2 ans et qui sont encore à 100%.

Donc pour moi ce n’est pas fiable. Ça reste à 100% très longtemps et ça descend d’un coup.
Parfois même l’appareil meurt avec 100% de batterie.

Il y a quelques infos ici
https://forum.hacf.fr/t/mise-a-jour-niveau-batterie-zigbee/10372

Perso j’ai créé des entités avec nodered pour faire mon propre calcul. Ça a l’air plus proche de la réalité mais ça reste très approximatif.

Voilà le niveau de batterie donné par z2m

Et celui donné par mon sensor pour le même capteur.

J’ai fait ça en me basant sur cette discussion (en anglais)

Merci pour ces infos, car j’avais l’impression que c’était pas fiable et tu confirme :wink:

1 « J'aime »

Merci pour ton retour détaillé. Je pense que je ne vais pas pousser le vice aussi loin que toi, mais c’est toujours intéressant de le savoir.
Ceci dit, j’trouve ça bête d’avoir un indicateur de batterie si on peut pas s’y fier…

Je n’ai pas encore eu le temps de trouver des piles neuves autour de chez moi, donc je laisse le post ouvert, je le passerai en résolu quand j’aurai testé tout ça.

Merci déjà à tous

Pas de soucis si ça peut aider :wink:
J’espère qu’une nouvelle pile résoudra ton souci.

Hello @Picobuu,
J’ai survolé la discussion par rapport au calcul du % batterie et il y a beaucoup d’infos !
Tu as pris quoi finalement comme valeur de tension vs pourcentage ? Peux-tu partager ton Flow nodered ici ?
Merci d’avance

J’utilise 3200 mV pour la valeur max et 2800 mV pour le mini (les valeurs sont encore en test)

Un node donne ça

En gros une fois par semaine il check le voltage, fait le calcul en fonction et met à jour une entité.

voila pour le flow j’ai mis un seul appareil pour ne pas trop induire en erreur. Je répète ça pour chaque appareil

[{"id":"574f1d2fded855f2","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"82334ebd0bc0b699","type":"function","z":"574f1d2fded855f2","name":"Calcul de la batterie","func":"percentage = toPercentage(msg.payload, 2800, 3200, true);\n\nfunction toPercentage(value, min, max, log=false) {\n    if (value > max) {\n        value = max;\n    } else if (value < min) {\n        value = min;\n    }\n\n    const normalised = (value - min) / (max - min);\n    let percentage;\n    if (log == true) {\n        percentage = normalised === 0 ? 0 : normalised * (1 - Math.log( normalised ));\n    } else {\n        percentage = normalised;\n    }\n    msg.payload = Math.round(percentage * 100);\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":120,"wires":[["475824805e64f49d"]]},{"id":"d3274e1bb187e995","type":"api-current-state","z":"574f1d2fded855f2","name":"Etat Switch Salon","server":"ec865156.c67db","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.salon_switch_voltage","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":120,"wires":[["82334ebd0bc0b699"]]},{"id":"475824805e64f49d","type":"ha-entity","z":"574f1d2fded855f2","name":"Batterie Switch Salon","server":"ec865156.c67db","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"salon_switch_batterie"},{"property":"device_class","value":""},{"property":"icon","value":"mdi:battery-50"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"payload","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":960,"y":120,"wires":[[]]},{"id":"359be3144cd1faac","type":"inject","z":"574f1d2fded855f2","name":"Toutes les semaines lundi 8h","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 08 * * 1","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":290,"y":120,"wires":[[]]},{"id":"ec865156.c67db","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

Je ne suis pas sur de tout comprendre mais j’utilise ce code dans le noeud fonction (ca fait trèèèèèèès longtemps que j’ai perdu mes notions de JS)

percentage = toPercentage(msg.payload, 2800, 3200, true);

function toPercentage(value, min, max, log=false) {
    if (value > max) {
        value = max;
    } else if (value < min) {
        value = min;
    }

    const normalised = (value - min) / (max - min);
    let percentage;
    if (log == true) {
        percentage = normalised === 0 ? 0 : normalised * (1 - Math.log( normalised ));
    } else {
        percentage = normalised;
    }
    msg.payload = Math.round(percentage * 100);
}
return msg;

J’essaierai d’ouvrir un topic dédié quand j’aurai un peu de temps si ça intéresse des gens.

1 « J'aime »