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.

Meilleur choix
XIAO ESP32C6

XIAO ESP32C6

Ultra-compact 21×17,5 mm · LiPo JST-PH 2.0mm · Zigbee + WiFi 6

Voir sur Amazon Livraison Prime · Retours gratuits

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).

Rapport qualité-prix
ESP32-H2-DevKitM-1

ESP32-H2-DevKitM-1

Portée Zigbee maximale · IEEE 802.15.4 · Thread · USB-C

Voir sur Amazon Livraison Prime · Retours gratuits

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

  1. Connectez le XIAO ESP32C6 en USB-C à votre PC.
  2. Dans le Device Builder ESPHome, installez la configuration via Install → Plug into this computer.
  3. Dans Zigbee2MQTT : activez le mode appairage via Permit join → All devices.
  4. 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.
  5. 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éduire sleep_duration amé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 :

  1. Dans Home Assistant : Paramètres → Appareils et services → ZHA → Ajouter un appareil.
  2. Maintenez le bouton BOOT du module pendant 5 secondes.
  3. 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.