La version 2026.5.0 d'ESPHome, sortie en mai 2026, introduit un composant
zigbee: natif qui change la donne pour la domotique DIY. Créer
un device Zigbee ne nécessite plus ni le SDK ESP-IDF, ni un composant externe
— du YAML pur suffit, exactement comme pour un capteur WiFi classique.
Résultat : un capteur de température Zigbee autonome pour 14 à 20 euros, intégré nativement dans Home Assistant via Zigbee2MQTT ou ZHA. Ce guide couvre les deux cas d'usage les plus courants — capteur de température/humidité et détecteur de mouvement sur batterie — avec le YAML complet prêt à flasher.
Pourquoi créer son propre device Zigbee avec ESPHome en 2026 ?
L'argument principal est le coût : un module XIAO ESP32C6 revient à 19 euros ou un ESP32-H2 à 14 euros, contre 20 à 40 euros pour un capteur Zigbee commercial haut de gamme (Aqara, Tuya). L'avantage réel se mesure quand vous ajoutez un capteur spécifique — CO2, radar de présence, qualité d'air — que le commerce ne propose tout simplement pas.
L'argument secondaire est la flexibilité. Un device ESPHome expose exactement les clusters Zigbee dont vous avez besoin — ni plus, ni moins — et se programme comme n'importe quel autre nœud ESPHome : logs en temps réel, intégration native dans le Device Builder de Home Assistant, reconfiguration sans réappairage.
Jusqu'à ESPHome 2025, créer un device Zigbee natif imposait soit le SDK
ESP-IDF (programmation C pure), soit un composant externe tiers comme
luar123/zigbee_esphome. La version 2026.5.0 intègre ce support
directement dans le cœur du framework. Un bloc zigbee: dans
votre YAML suffit — le reste est automatique.
Si vous utilisez déjà ESPHome pour des capteurs WiFi ou des modules RF 433, le pas vers le Zigbee est minimal — même environnement, même outillage, même syntaxe YAML. Le composant Zigbee natif s'inscrit dans la même logique que les autres protocoles supportés par ESPHome.
ESP32-C6 ou ESP32-H2 : quel module choisir ?
Les deux puces supportent le Zigbee via la radio IEEE 802.15.4, mais elles diffèrent sur plusieurs points importants :
| Critère | ESP32-C6 | ESP32-H2 |
|---|---|---|
| Portée Zigbee | Réduite (radio moins puissante) | Supérieure |
| WiFi | Oui (WiFi 6 / 2.4 GHz) | Non |
| BLE | Oui (BLE 5.3) | Oui (Bluetooth 5 LE) |
| Prix module | ~19 € (XIAO ESP32C6) | ~14 € (ESP32-H2 devkit) |
| Facteur de forme | Ultra-compact (21 × 17,5 mm) | Format devkit standard |
| Connecteur batterie | JST-PH 2.0mm (LiPo direct) | Non (via régulateur externe) |
| Cas d'usage idéal | Capteur sur batterie, boîtier compact | Device fixe, portée maximale |
Recommandation pour un capteur sur batterie : le XIAO ESP32C6 de Seeed Studio. Son connecteur JST-PH 2.0mm accepte directement une batterie LiPo 3.7V, son format ultra-compact s'intègre dans n'importe quel boîtier imprimé en 3D.
XIAO ESP32C6
Ultra-compact 21×17,5 mm · LiPo JST-PH 2.0mm · Zigbee + WiFi 6
Recommandation pour la portée : l'ESP32-H2 devkit. La radio H2 offre une portée Zigbee nettement supérieure. À privilégier pour les devices éloignés du coordinateur ou dans des logements avec des obstacles importants (murs épais, dalles béton).
ESP32-H2-DevKitM-1
Portée Zigbee maximale · IEEE 802.15.4 · Thread · USB-C
Point d'attention sur l'appairage ESP32-C6 : la radio du C6 étant plus faible, le device doit se trouver à moins de 2-3 mètres du coordinateur lors du premier appairage. Une fois intégré au réseau maillé, il peut bénéficier des routeurs Zigbee intermédiaires et fonctionner plus loin.
Prérequis avant de commencer
Avant de flasher quoi que ce soit, vérifiez ces trois points :
- ESPHome 2026.5.0 minimum — vérifiable dans le Device
Builder (Paramètres → Version ESPHome). Le composant
zigbee:n'existe pas dans les versions antérieures. - Zigbee2MQTT >= 2.8.0 OU ZHA — Z2MQTT 2.8.0 est requis pour la compatibilité avec les devices ESPHome natifs. ZHA est compatible sans restriction de version.
- Un coordinateur Zigbee fonctionnel — SLZB-06, Sonoff Dongle Plus, Conbee III ou équivalent. L'ESP32 créé ici est un end device, pas un coordinateur — il ne remplace pas votre dongle Zigbee existant. Si vous n'avez pas encore de coordinateur, ou si le vôtre montre ses limites en nombre de devices, consultez notre comparatif des meilleurs coordinateurs Zigbee 2026 — c'est lui qui détermine la stabilité de tout le réseau auquel ce device va se rattacher.
Créer un capteur de température/humidité Zigbee
Cas d'usage : un DHT22 connecté à un XIAO ESP32C6, alimenté en USB-C (secteur). Le device expose deux clusters Zigbee : mesure de température et humidité relative, lisibles directement dans Home Assistant via Z2MQTT ou ZHA. Voici le YAML complet :
esphome:
name: zigbee-temp-humi-c6
esp32:
board: seeed_xiao_esp32c6
framework:
type: esp-idf
logger:
zigbee:
power_source: mains
sensor:
- platform: dht
pin: GPIO3
model: DHT22
update_interval: 60s
temperature:
name: "Temperature"
id: temp_reading
humidity:
name: "Humidite"
id: humi_reading
Le bloc zigbee: avec power_source: mains informe
le coordinateur que le device est alimenté sur secteur — il ne met pas en
veille profonde et répond rapidement aux requêtes du réseau. ESPHome mappe
automatiquement les entités sensor sur les clusters Zigbee
correspondants.
Flash initial et appairage
- Connectez le XIAO ESP32C6 en USB-C à votre PC.
- Dans le Device Builder ESPHome, installez la configuration via Install → Plug into this computer.
- Dans Zigbee2MQTT : activez le mode appairage via Permit join → All devices.
- Au premier boot, le device entre automatiquement en mode pairing. Pour un réappairage forcé, consultez la section Zigbee dans la doc ESPHome — la procédure peut varier selon la version du firmware.
- Le device apparaît dans le dashboard Z2MQTT sous le nom
zigbee-temp-humi-c6, avec les entités température et humidité disponibles dans Home Assistant.
Si le device n'est pas reconnu automatiquement par Z2MQTT, consultez la section sur les converters personnalisés ci-dessous.
Créer un détecteur de mouvement Zigbee sur batterie
Cas d'usage : un PIR AM312 connecté à un ESP32-H2, alimenté sur pile via un régulateur 3.3V. L'AM312 fonctionne nativement entre 2.7 V et 12 V — contrairement au HC-SR501 qui nécessite 5 V minimum, l'AM312 est directement compatible avec une alimentation 3.3 V et est disponible pour moins d'un euro. Le deep sleep réduit la consommation entre les détections — l'autonomie sur 2 piles AA dépasse plusieurs mois selon la fréquence d'activité.
esphome:
name: zigbee-motion-h2
esp32:
board: esp32-h2-devkitm-1
framework:
type: esp-idf
logger:
zigbee:
power_source: battery
on_join:
then:
- logger.log: "Rejoint le reseau Zigbee"
deep_sleep:
run_duration: 30s
sleep_duration: 5min
binary_sensor:
- platform: gpio
pin:
number: GPIO2
mode:
input: true
pulldown: true
id: pir_motion
name: "Mouvement"
device_class: motion
Trois points clés de cette configuration :
power_source: battery— le coordinateur adapte sa stratégie de communication en sachant que le device est sur batterie et peut être indisponible pendant les phases de sommeil.on_join— nouveau en ESPHome 2026.5.0, ce trigger se déclenche à chaque fois que le device rejoint ou rejoint le réseau Zigbee. Utile pour logguer l'état initial ou déclencher une action à la reconnexion.sleep_duration: 5min— le device se réveille toutes les 5 minutes, interroge le PIR pendant 30 secondes, puis retourne en veille. Réduiresleep_durationaméliore la réactivité au détriment de l'autonomie.
Intégrer le device dans Zigbee2MQTT
Zigbee2MQTT >= 2.8.0 reconnaît automatiquement les devices ESPHome natifs qui utilisent les clusters standards. Après l'appairage, le device apparaît dans le dashboard Z2MQTT avec ses entités prêtes à l'emploi.
Si le device n'est pas reconnu automatiquement
Z2MQTT peut ne pas reconnaître un device dont les clusters sont combinés d'une façon non encore répertoriée dans sa base de données. Dans ce cas, créez un converter externe dans votre dossier de configuration Z2MQTT :
// custom_converters/zigbee-temp-humi-c6.js
const {
temperature,
humidity
} = require(
'zigbee-herdsman-converters/lib/modernExtend'
);
const definition = {
zigbeeModel: ['zigbee-temp-humi-c6'],
model: 'zigbee-temp-humi-c6',
vendor: 'ESPHome DIY',
description: 'Capteur T/H DIY ESPHome 2026',
extend: [temperature(), humidity()],
};
module.exports = definition;
Référencez ce fichier dans le configuration.yaml de
Z2MQTT :
external_converters:
- zigbee-temp-humi-c6.js
Redémarrez Z2MQTT — le device est reconnu avec les entités correctes. Pour vérifier, ouvrez l'onglet Devices dans le dashboard Z2MQTT et confirmez que les valeurs de température et d'humidité remontent en temps réel.
Intégrer le device dans ZHA
ZHA reconnaît directement les devices ESPHome avec les clusters Zigbee standards, sans converter supplémentaire dans la plupart des cas. La procédure est identique à n'importe quel device Zigbee commercial :
- Dans Home Assistant : Paramètres → Appareils et services → ZHA → Ajouter un appareil.
- Maintenez le bouton BOOT du module pendant 5 secondes.
- ZHA détecte le device et crée automatiquement les entités dans Home Assistant.
Z2MQTT ou ZHA ? Les deux fonctionnent. Choisissez selon votre installation existante. Z2MQTT offre plus de visibilité sur les clusters bruts et facilite la création de converters personnalisés si un device n'est pas reconnu. ZHA est plus simple si vous démarrez sans Z2MQTT déjà installé. Si vous gérez déjà une infrastructure Zigbee avec Z2MQTT, restez sur Z2MQTT — la cohérence du parc facilite la maintenance.
Limites actuelles et roadmap ESPHome Zigbee
Le composant Zigbee natif ESPHome est en développement actif. Fin mai 2026, les limitations suivantes s'appliquent :
- Pas d'OTA Zigbee : les mises à jour de firmware nécessitent un flash USB. L'OTA over-the-air via le réseau Zigbee n'est pas encore supporté. Prévoyez un accès physique au device pour les futures mises à jour — contrainte identique à l'ESP-IDF SDK.
- Portée réduite sur ESP32-C6 : la radio du C6 est moins puissante que celle du H2. L'appairage doit se faire à proximité du coordinateur. Une fois maillé, le device peut bénéficier des routeurs Zigbee intermédiaires.
- Sous-ensemble de clusters supportés : les clusters couverts dans ce guide (température, humidité, mouvement, on/off) sont stables. Des clusters moins courants (énergie, couleur, scènes) sont en cours d'implémentation.
Suivez le changelog ESPHome — des clusters supplémentaires sont ajoutés à chaque version mineure. Le composant suit la même vélocité de développement que le reste du framework.
DIY vs capteur Zigbee commercial : quand choisir quoi ?
| Critère | DIY ESPHome | Commercial (Aqara / Sonoff) |
|---|---|---|
| Coût unitaire | 14 à 20 € | 20 à 40 € |
| Personnalisation | Totale (capteurs, GPIOs) | Aucune |
| Mise à jour firmware | Manuelle (câble USB) | OTA automatique |
| Temps de mise en service | 30 à 60 min (flash + config) | 5 min (scan QR + appairage) |
| Certifications | Aucune (usage personnel) | CE, RoHS, FCC |
| Types de capteurs | Tout ce qui existe (DHT, SHT, BME, PIR, radar, gaz...) | Catalogue fixe du fabricant |
La logique DIY prend tout son sens à partir de 5-6 devices déployés, ou quand vous avez besoin d'un capteur spécifique introuvable dans le commerce — CO2 (SCD40), présence radar (LD2410), qualité d'air (SGP41). Vous combinez le module ESP32 et le capteur de votre choix dans un seul YAML, le tout intégré nativement dans Home Assistant.
Pour 2-3 capteurs dans une pièce avec des besoins standard, un Sonoff SNZB-02D à 15 euros est plus rapide à déployer. Si vous maîtrisez déjà ESPHome pour vos projets WiFi — comme un module RF 433 sur ESP32 — la bascule vers Zigbee est une question de minutes. Même environnement, même syntaxe, même outillage. ESPHome 2026.5.0 a simplement ajouté un protocole radio de plus à son écosystème.