Mise à jour firmware Zigbee compliquée

Bonjour,

Mon problème

J'ai des prises électriques murales Schneider Odace Zigbee (https://www.se.com/fr/fr/product/S520559/wiser-odace-prise-2p+t-connectée-16a-zigbee-blanc/).
Elles fonctionnent bien mais depuis environ 1 semaine j'ai possibilité de les mettre à jour, sauf que c'est une galère sans nom. J'ai pu en faire 2 mais actuellement ça fini toujours par stopper avant la fin, entre 30 et 70% de façon assez aléatoire. Sur une ça reprenait où ça en était arrivé avant la coupure, mais là j'ai testé sur d'autres sans effet.
Même sans mise à jour je n'ai aucun problème mais je me dis que c'est quand même dommage.

Y'a-t-il des "techniques" particulières à faire pour y parvenir plus facilement ?

Par avance, merci ! :slight_smile:

Ma configuration


System Information

version core-2026.11.0
installation_type Home Assistant OS
dev false
hassio true
docker true
container_arch amd64
user root
virtualenv false
python_version 3.14.10
os_name Linux
os_version 6.18.58-haos
arch x86_64
timezone Europe/Paris
config_dir /config
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 18.4
update_channel stable
supervisor_version supervisor-2026.10.5
agent_version 1.14.0
docker_version 29.8.2
disk_total 109.3 GB
disk_used 19.8 GB
nameservers fe80::1adf:26ff:fe0b:3620, 2a01:cb05:8558:5100:1adf:26ff:fe0b:3620, 192.168.1.1
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board generic-x86-64
supervisor_api ok
version_api ok
installed_addons Get HACS (1.3.1), File editor (6.3.0), ESPHome Device Builder (2026.10.2), Mosquitto broker (7.1.3), Zigbee2MQTT (2.14.3-1), Terminal & SSH (10.6.0), Let's Encrypt (6.5.0)
Dashboards
dashboards 3
resources 2
views 11
mode storage
Marketplace
download_profile default
github_api ok
github_content ok
github_web ok
catalog_data ok
github_connected true
installed_version 2026.11.0
stage running
available_repositories 6194
installed_repositories 4
github_api_calls_remaining 4994
Network Configuration
adapters lo (disabled), eno1 (enabled, default, auto), docker0 (disabled), hassio (disabled), veth46a97d5 (disabled), vethe669baa (disabled), veth39bfd69 (disabled), vethabee1e6 (disabled), veth1c9a0e7 (disabled), vethccc34ca (disabled), vethe0c5e00 (disabled), veth9b0efb4 (disabled), veth410413b (disabled), veth3ecf1cf (disabled)
ipv4_addresses lo (127.0.0.1/8), eno1 (192.168.1.115/24), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), veth46a97d5 (), vethe669baa (), veth39bfd69 (), vethabee1e6 (), veth1c9a0e7 (), vethccc34ca (), vethe0c5e00 (), veth9b0efb4 (), veth410413b (), veth3ecf1cf ()
ipv6_addresses lo (::1/128), eno1 (2a01:cb05:8558:5100:1234:f8e9:9b2b:3392/64, fe80::e3f8:7f70:3ff1:7b55/64), docker0 (fd22:bb7d:7b91::1/64, fe80::5827:aaff:fe36:4073/64), hassio (fd0c:ac1e:2100::1/48, fe80::202e:6fff:fe34:b3e4/64), veth46a97d5 (fe80::9c53:caff:fea3:2c1/64), vethe669baa (fe80::6832:72ff:feae:5219/64), veth39bfd69 (fe80::f484:a2ff:fefd:e365/64), vethabee1e6 (fe80::8c6:19ff:fee2:7371/64), veth1c9a0e7 (fe80::9cb6:8aff:fec6:2d22/64), vethccc34ca (fe80::bc36:efff:fe9d:6e9/64), vethe0c5e00 (fe80::cc10:2ff:fe2c:7545/64), veth9b0efb4 (fe80::f02e:fdff:fe54:3f69/64), veth410413b (fe80::f87d:7cff:fe47:57c7/64), veth3ecf1cf (fe80::c08:deff:feae:f334/64)
announce_addresses 192.168.1.115, 2a01:cb05:8558:5100:1234:f8e9:9b2b:3392, fe80::e3f8:7f70:3ff1:7b55
Recorder
oldest_recorder_run 27 octobre 2026 à 20:08
current_recorder_run 7 novembre 2026 à 15:35
estimated_db_size 468.80 MiB
database_engine sqlite
database_version 3.53.4
___

Hello,

En général si il y a une technique ou un support complet dans Z2M, la méthode est détaillée, et là ça ne semble pas être le cas. Normalement vu que c'est sur secteur, à moins d'être en limite de maillage zigbee ( ou de saturation du réseau ), ça ne doit en théorie pas poser de problème.

cdt

Salut,

Merci pour ta réponse.
Entre temps j'ai continuer les tentative et une nouvelle vient de parvenir à se mettre à jour après 5-6 relances...

Pour le maillage Zigbee je pense qu'il est OK, les niveau de réception sont marqués comme bon sur Z2M de façon général et les prises (et autres équipement Zigbee) pouvant faire relais sont répartis un peu partout dans la maison.

Bref, il me reste donc à continuer de tenter en espérant que ça finisse par passer au fur et à mesure. :wink:

Merci !

Re,

Oui ça fait maillage, si c'est à portée de coordinateur ( via le maillage ), et si le réseau est saturé par certains équipements ...

Tu peux jeter un oeil aux lqi du matériel ( c'est indicatif mais bon c'est déjà ça de pris ) pour avoir une idée.

Et tu peux aussi jeter un oeil à la santé de ton réseau pour voir si certains matériels ne sont pas trop verbeux.

cdt

il faut aussi eviter de lancer une mise a jour de plusieurs devices en même temps, zigbee n'est pas un reseau de donnée donc c'est lent

il faut surtout etre patient et s'y reprendre a plusieurs fois et surtout si tu n'as pas de soucis faire les mise a jour ne changera pas grand chose a part t'apporter des emmerdes

La mise à jour dans zigbee2mqtt c'est par blocs de 80 octets, ça va pas bien vite, c'est envoyé avec moins de priorité que le traffic normal et ça recommence à zéro quand ça plante..

Bonjour @Furax,

C’est un grand classique des mises à jour OTA sur les modules et prises Schneider Wiser / Odace sous Zigbee2MQTT !

Même si une prise murale est sur secteur (et donc réputée routeur "toujours allumé"), dans la pratique des OTA Zigbee, le secret n°1 est de forcer l'appareil à rester parfaitement "éveillé" et actif pendant tout le processus de transfert.

Voici les techniques éprouvées pour débloquer ces MAJ récalcitrantes :

:high_voltage: 1. La technique de l'appareil "éveillé" (Garder l'activité radio)

Sur les prises connectées avec mesure de puissance, si la prise est "à vide" (rien de branché), la pile Zigbee espace ses acquittements pour économiser ses cycles, ce qui finit souvent par dépasser le timeout de transfert OTA de Zigbee2MQTT (d'où les blocages aléatoires à 30-70%).

:backhand_index_pointing_right: L'astuce : Branche une petite charge allumée dessus (une lampe de chevet, un ventilateur, etc.).
Cela oblige la prise à remonter des rapports réguliers de puissance/tension (power reporting), ce qui maintient la communication Zigbee ultra-active et empêche le coordinateur de croire que la prise ne répond plus.
:stop_sign: 2. Zéro autre trafic : Une seule MAJ à la fois

Un firmware Zigbee représente des milliers de petits paquets (Image Block Requests).

Assure-toi de ne lancer qu'une seule mise à jour à la fois sur ton réseau.
Évite les gros flux de données Zigbee en parallèle pendant le flash.
:electric_plug: 3. Le "Power Cycle" juste avant de lancer l'OTA

La mémoire tampon (buffer) Zigbee de la prise peut être saturée suite aux tentatives précédentes :

Coupe le disjoncteur de la prise pendant 15 à 30 secondes, puis réenclenche.
Dès que la prise réapparaît en ligne dans Z2M, lance immédiatement l'OTA. Le microcontrôleur aura sa RAM propre et sera immédiatement disponible.
:antenna_bars: 4. Attention au chemin de routage (LQI et sauts)

Si la prise communique à travers 2 ou 3 autres routeurs du maillage pour atteindre ta clé Zigbee, le risque qu'un paquet sur 5000 se perde est démultiplié :

Vérifie sur la carte Z2M avec qui dialogue la prise.
Si le signal est limite (LQI bas), c'est souvent ce qui fait échouer le transfert au milieu.
:counterclockwise_arrows_button: 5. La reprise automatique

Comme tu l'as constaté sur la première, le protocole OTA gère la reprise sur coupure (offset). Si elle bloque à 60 %, patiente 2 minutes puis relance la MAJ sans redémarrer Z2M : elle devrait théoriquement reprendre là où elle s'est arrêtée plutôt que de repartir de zéro.

En appliquant le coup de la lampe branchée + le petit reset électrique préalable, ça passe généralement du premier coup ! :crossed_fingers:

Merci beaucoup pour tous vos retours ! :slightly_smiling_face::+1:

Je ne les lance qu'une part une oui, mais je n'avais pas eu l'idée de l'équipement branché dessus pour la garder "toujours éveillée", je vais tester ça.

Merci encore à tous et donc je sais que la qualité principale qu'il faut c'est de la patience. :wink:

EDIT> Après test en laissant quelque chose de branché sur la prise c'est en effet plus "facile", disons qu'en 3-4 relances c'est fait mais au moins ça arrive au bout. Merci ! :slight_smile: :+1: