ZHA ou Zigbee2MQTT : lequel choisir ?
Pour connecter mes premiers interrupteurs Zigbee à Home Assistant, il me fallait d'abord... du Zigbee. Et sans dongle, pas de Zigbee : c'est lui, le coordinateur, qui forme le réseau auquel les appareils viennent se rattacher. Avant de parler logiciel, un mot sur le matériel.
Le dongle
J'ai commandé un SONOFF Zigbee 3.0 USB Dongle Plus (ZBDongle-E), basé sur une puce Silicon Labs EFR32MG21. Rien de très scientifique : le prix était raisonnable pour un essai, les avis très bons, et il semblait largement utilisé avec Home Assistant. Trois mois plus tard, je n'ai toujours aucune raison de le regretter.
Quelques repères pour qui se pose la même question :
Il est livré avec un firmware de coordinateur Zigbee (EmberZNet) et fonctionne tel quel avec ZHA comme avec Zigbee2MQTT.1
Sa puce est multiprotocole : elle sait aussi parler Thread, à condition de la reflasher avec un autre firmware (Thread seul, ou MultiPAN pour combiner les deux). Le fabricant propose un outil de flashage pour cela.2 Je ne me suis pas lancé là-dedans : mon dongle ne fait que du Zigbee, et ça me va très bien.
Attention toutefois : Zigbee2MQTT ne prend pas en charge ce firmware multiprotocole. Si l'on veut plusieurs réseaux avec Zigbee2MQTT, la recommandation est d'utiliser un adaptateur par protocole.3
Il existe d'autres familles de dongles, notamment à base de puce Texas Instruments (CC2652), comme le ZBDongle-P du même fabricant. Zigbee2MQTT les a longtemps recommandés en priorité ; les puces Silicon Labs, elles, étaient autrefois considérées comme expérimentales. Ce n'est plus l'état actuel de la documentation, qui liste les deux familles, mais on tombe encore sur d'anciens avis qui disent le contraire.4
La seule chose que j'aurais probablement aimé savoir à l'époque, c'est qu'il existait des solutions pensées pour couvrir Zigbee et Thread. Cela aurait-il changé mon choix ? Je n'en suis même pas certain.
Bon. J'ai un dongle. Et maintenant ?
Une fois le dongle installé, et après quelques petites joyeusetés pour faire passer l'USB jusqu'à ma VM Home Assistant, une nouvelle question s'est présentée : ZHA ou Zigbee2MQTT ?
ZHA est directement intégré à Home Assistant. On branche un coordinateur compatible, Home Assistant le détecte, et on configure son réseau Zigbee depuis l'interface. Simple.
Zigbee2MQTT demande quelques briques supplémentaires : installer Zigbee2MQTT, disposer d'un broker MQTT (Mosquitto dans mon cas, qui est aussi celui que recommande sa documentation), puis relier tout ce petit monde à Home Assistant.5
Vu comme ça, le choix paraît assez évident. Pourquoi se compliquer la vie ?
Sauf que...
En cherchant un peu, je me suis rapidement rendu compte qu'de nombreux utilisateurs de Home Assistant avaient choisi Zigbee2MQTT. Et quand beaucoup de gens choisissent volontairement le chemin qui demande un peu plus de chipotage, j'ai tendance à me demander pourquoi.
Il y a probablement une part d'héritage historique. Zigbee2MQTT a longtemps eu la réputation d'offrir un support très large des périphériques et énormément de possibilités de configuration. Mais il faut être prudent avec les comparaisons que l'on trouve sur Internet : elles vieillissent vite.
ZHA a beaucoup évolué. Aujourd'hui, il gère les groupes Zigbee, les bindings entre périphériques, les mises à jour OTA et les sauvegardes du réseau.6 Il permet aussi de migrer ce réseau vers un autre coordinateur, dans la limite des radios prises en charge (Silicon Labs, Texas Instruments, ConBee/RaspBee).7 Autrement dit, beaucoup d'arguments historiques en faveur de Zigbee2MQTT méritent aujourd'hui d'être réexaminés. Pour beaucoup d'utilisateurs, ZHA sera un très bon choix.
Reste une différence d'architecture bien réelle : Zigbee2MQTT peut tourner comme un service indépendant, alors que ZHA vit à l'intérieur de Home Assistant. Lorsque Zigbee2MQTT est hébergé séparément, il reste opérationnel pendant un redémarrage de Home Assistant. Le réseau continue alors d'être géré, même si les automatisations dépendant de Home Assistant restent indisponibles pendant l'interruption. Les liaisons directes (bindings) entre appareils Zigbee, elles, peuvent fonctionner sans l'un ou l'autre logiciel. Dans une installation en machine virtuelle comme la mienne, le passage de l'USB jusqu'à la VM mérite aussi de l'attention : ce n'est pas un avantage automatique de Zigbee2MQTT si les deux services utilisent le même passthrough. La séparation prend tout son sens si Zigbee2MQTT tourne ailleurs ou utilise un coordinateur accessible par le réseau.8
À ce jour, je n'ai donc toujours pas trouvé de réponse définitive à la question « lequel est le meilleur ? ». Je commence surtout à penser que ce n'est pas la bonne question.
Une question d'architecture
Il y avait néanmoins quelque chose dans Zigbee2MQTT qui me parlait davantage. Avec ZHA, l'ensemble m'apparaissait comme une solution relativement monolithique, intégrée à Home Assistant. Avec Zigbee2MQTT, je voyais plutôt ceci :
Plus de morceaux. Donc objectivement plus de choses à installer, configurer, surveiller... et potentiellement casser.
Curieusement, c'est aussi une partie de ce qui me plaisait. Chaque brique avait un rôle que je pouvais identifier : Zigbee2MQTT s'occupait du réseau Zigbee, Mosquitto transportait les messages MQTT, Home Assistant les exploitait. Probablement mon côté un peu torturé, ou simplement une préférence pour les architectures où je vois assez clairement qui parle à qui.
Et MQTT dans tout ça ?
MQTT ne sert évidemment pas uniquement à Zigbee2MQTT. Une fois un broker Mosquitto installé, rien n'empêche d'y connecter d'autres applications, capteurs ou services. À ce moment-là, je n'avais pas nécessairement besoin de tout cela, mais l'idée d'ajouter une brique générique plutôt qu'un composant utilisable pour un seul besoin me plaisait bien.
Depuis, d'autres choses sont effectivement venues se connecter à Mosquitto. Ce qui ne prouve pas que Zigbee2MQTT était le meilleur choix. Simplement que, dans mon cas, l'architecture qui m'avait attiré a fini par trouver d'autres usages.
Alors, ZHA ou Zigbee2MQTT ?
Si quelqu'un me posait aujourd'hui la question sans autre contexte, ma réponse serait : commencez par ZHA. C'est directement intégré à Home Assistant, il y a moins de composants à installer et à maintenir et, si votre objectif est d'ajouter des périphériques Zigbee à votre installation, c'est probablement le chemin le plus direct.
Je regarderais Zigbee2MQTT plus sérieusement dans quelques situations.
Si MQTT fait déjà partie de votre infrastructure. Si vous avez un broker Mosquitto actif, par exemple parce que plusieurs services tournant dans des conteneurs Docker y publient déjà leurs données, ajouter Zigbee2MQTT devient assez naturel. Le broker existe, il est configuré, vous savez pourquoi il est là, et Zigbee2MQTT n'est qu'une brique de plus.
Si vous voulez séparer les rôles. Un réseau Zigbee qui survit au redémarrage de Home Assistant, c'est un vrai argument.
Si l'envie de démonter la mécanique est là. À mon sens, Zigbee2MQTT en vaut alors la peine, mais il demandera un peu plus d'investissement en temps : plus de briques à comprendre, plus de réglages à explorer, plus de choses à surveiller. Pour certains, c'est précisément l'intérêt.
À l'inverse, installer Zigbee2MQTT et un broker MQTT uniquement pour connecter quelques interrupteurs à Home Assistant ajoute une complexité dont vous n'avez peut-être pas besoin.
Le choix ne dépend donc pas seulement de ce que Zigbee2MQTT peut apporter. Il dépend aussi de ce que vous avez déjà et de ce que vous comptez en faire.
Et si je change d'avis ?
J'ai le sentiment que rien n'est définitif : si l'on se trompe de chemin, on pourra toujours changer d'avis par la suite, même si cela demandera un peu de bidouillage. Un point précis, en revanche, est bien documenté : changer de dongle est plus confortable avec ZHA, qui propose un assistant de migration intégré. Avec Zigbee2MQTT, la sauvegarde et la restauration du coordinateur sont prises en charge pour les adaptateurs EmberZNet et zStack,9 mais la procédure de migration est plus manuelle et dépend des adaptateurs concernés. Selon les cas, elle peut nécessiter quelques manipulations supplémentaires, voire un nouvel appairage de certains périphériques.10
Dans tous les cas, mieux vaut faire une sauvegarde complète de Home Assistant avant de toucher à quoi que ce soit.
Et moi ?
Je partais pratiquement de zéro avec Zigbee. Je n'avais pas encore un écosystème rempli de composants MQTT qui aurait rendu le choix de Zigbee2MQTT évident. Et pourtant, j'ai choisi Zigbee2MQTT.
Trois mois plus tard, est-ce que je peux affirmer que c'était le meilleur choix ? Non. Est-ce que j'ai rencontré une raison de vouloir passer à ZHA ? Non plus. J'aime toujours l'architecture, Mosquitto a depuis trouvé d'autres choses à faire et mes périphériques Zigbee fonctionnent. Pour le moment, cela me suffit largement.
Et si je devais recommander quelque chose à quelqu'un qui débute aujourd'hui ? ZHA par défaut, puis Zigbee2MQTT lorsqu'on commence à avoir une raison de le choisir.
Même si, manifestement, certains d'entre nous préfèrent commencer par la solution qui contient davantage de morceaux. Probablement pour avoir plus de choses à comprendre.
Mises à jour
2026-10-14 : révision du texte, actualisation des informations techniques et ajout de références.
Notes et références
Sources consultées en octobre 2026. Les pages communautaires reflètent l'avis de leurs auteurs et peuvent évoluer ; la documentation officielle de chaque projet reste la référence.
Footnotes
-
Le ZBDongle-E est livré préflashé avec un firmware de coordinateur Zigbee basé sur EmberZNet et fonctionne avec ZHA comme avec Zigbee2MQTT. Caractéristiques de la puce (Silicon Labs EFR32MG21, Zigbee 3.0 et Thread) : CNX Software, « Sonoff ZBDongle-E Zigbee 3.0 USB dongle features EFR32MG21 MCU with +20dBm radio », https://www.cnx-software.com/2022/08/05/sonoff-zbdongle-e-zigbee-3-0-usb-dongle-features-efr32mg21-mcu-with-20dbm-radio/ ↩
-
SONOFF, documentation du ZBDongle-E : le dongle peut être reflashé avec l'outil officiel pour servir de routeur Zigbee, de coordinateur Thread (firmware OpenThread RCP) ou de coordinateur MultiPAN. https://help.sonoff.tech/docs/zbdongle-e/. Voir aussi le guide de SONOFF sur MultiPAN avec Home Assistant : https://sonoff.tech/blogs/news/how-to-use-multipan-in-home-assistant-with-sonoff-zbdongle-e ↩
-
Documentation de Zigbee2MQTT, page « EmberZNet adapters (Silicon Labs) » : le firmware multiprotocole n'est pas pris en charge, et l'alternative recommandée est d'utiliser un adaptateur par protocole. La page précise également le pilote à configurer (
adapter: ember). https://www.zigbee2mqtt.io/guide/adapters/emberznet.html ↩ -
Zigbee2MQTT, page « Supported Adapters » : les adaptateurs zStack (Texas Instruments) et EmberZNet (Silicon Labs) y sont tous deux listés. https://www.zigbee2mqtt.io/guide/adapters/. Pour l'historique (ancien pilote
ezspdéprécié au profit du piloteember, puces Silicon Labs alors jugées « expérimentales » et préférence donnée aux puces TI), voir le fil de discussion de la communauté Home Assistant consacré au ZBDongle-E : https://community.home-assistant.io/t/itead-s-sonoff-zigbee-3-0-usb-dongle-plus-v2-model-zbdongle-e-based-on-silicon-labs-efr32mg21-radio-soc-mcu/442695/351. Il s'agit d'un témoignage communautaire daté, antérieur à la stabilisation du piloteember. ↩ -
Zigbee2MQTT, « Getting started » : un broker MQTT est nécessaire, et Mosquitto est celui qui est recommandé. https://www.zigbee2mqtt.io/guide/getting-started/ ↩
-
Documentation officielle Home Assistant, « Zigbee Home Automation » : groupes, liaisons directes (bindings), mises à jour OTA et gestion du réseau Zigbee. https://www.home-assistant.io/integrations/zha/ ↩
-
Home Assistant, documentation officielle de ZHA : sauvegarde et migration des coordinateurs compatibles, via les fonctionnalités de migration de la radio. Les possibilités exactes dépendent des adaptateurs. https://www.home-assistant.io/integrations/zha/ ↩
-
Home Assistant, documentation officielle de ZHA : https://www.home-assistant.io/integrations/zha/. Zigbee2MQTT, documentation d’installation et de configuration : https://www.zigbee2mqtt.io/guide/installation/. La persistance du service lors d’un redémarrage de Home Assistant suppose un hébergement indépendant ; les bindings Zigbee restent une fonctionnalité du réseau lui-même. ↩
-
Zigbee2MQTT, FAQ officielle, « How do I migrate from one adapter to another? » : sauvegarde et restauration prises en charge pour les adaptateurs
zstacketember. https://www.zigbee2mqtt.io/guide/faq/ ↩ -
Zigbee2MQTT, FAQ officielle, « How do I migrate from one adapter to another? » et « What does and does not require re-pairing of all devices? » : modalités de changement de coordinateur et limitations de la migration entre familles. https://www.zigbee2mqtt.io/guide/faq/ ↩

Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire