Créer son propre appareil Zigbee avec le module E-EFR32
Introduction : Le DIY en Zigbee
Et s’il était possible de créer ses propres capteurs, à la manière d’un Wemos ou d’un NodeMCU, mais en utilisant le protocole Zigbee plutôt que le WiFi ? C’est la promesse de modules comme le EBYTE EFR32 (E180-ZG120B).
Ce type de module, basé sur une puce EFR32 de Silicon Labs, permet aux développeurs et aux amateurs éclairés de fabriquer des appareils Zigbee personnalisés. Cet article est une introduction à cette approche passionnante.

Le Défi : Plus Complexe que l’ESPHome
Contrairement à ESPHome où le code est simple et unifié, la création d’un appareil Zigbee “from scratch” est une démarche de niveau expert. Elle implique un environnement de développement spécifique (Simplicity Studio de Silicon Labs), la compréhension de la pile Zigbee, et la compilation d’un firmware personnalisé.
L’avantage ? Un contrôle total et la possibilité de créer des appareils qui n’existent pas sur le marché.
Le Matériel pour se Lancer
- Un module de développement EFR32 : Le module EBYTE seul est difficile à programmer. Il est préférable d’utiliser une carte de développement qui l’intègre, comme ce shield pour Wemos :
Shield de développement pour module EFR32. - Un programmateur/débogueur JTAG/SWD : Indispensable pour téléverser le firmware. Un J-Link de Segger ou même un simple Raspberry Pi Pico configuré en mode
picoprobe
peut fonctionner. - L’environnement de développement : Simplicity Studio de Silicon Labs est l’IDE officiel pour développer sur les puces EFR32.
Produits Équivalents
D’autres modules DIY Zigbee existent et sont très populaires :
- Modules PTVO : Une série de modules et de firmwares open-source, très bien documentés, pour créer des routeurs ou des capteurs.
- Projets de
zig-a-zig-ah!
(zzh) : Une autre excellente ressource open-source pour des coordinateurs et appareils DIY.
Scénarios d’Utilisation d’un Appareil DIY
Quel est l’intérêt de fabriquer son propre appareil ?
Scénario 1 : Le Capteur de Niche Ultra Basse Consommation
Vous avez besoin de surveiller la température et l’humidité dans un endroit où le WiFi ne passe pas bien (une cave à vin, une serre). En créant votre propre capteur sur batterie et en optimisant le code pour un sommeil profond (deep sleep), vous pouvez obtenir une autonomie de plusieurs années, bien supérieure à de nombreux appareils du commerce, tout en bénéficiant de la portée du maillage Zigbee.
Scénario 2 : Le Multi-Capteur sur Mesure
Vous voulez un seul appareil pour votre salle de bain qui mesure la température, l’humidité (pour la VMC), la luminosité (pour l’éclairage nocturne) et la présence (via un capteur PIR). Au lieu d’acheter 4 appareils différents, vous pouvez intégrer ces 4 capteurs sur un seul PCB personnalisé qui expose 4 entités différentes en Zigbee. C’est plus propre, plus intégré et taillé pour votre besoin.
Exemple de Code (Principe)
Avertissement : Le code suivant est un exemple de principe écrit en C++ (style Arduino) pour illustrer la logique. Il n’est pas directement compilable. Le développement réel sur EFR32 utilise les API du SDK de Silicon Labs qui sont différentes.
L’objectif est de lire un capteur DHT22 et de publier les valeurs sur Zigbee.
// Pseudo-code pour illustrer la logique
#include "ZigbeeStack.h"
#include "DHT22.h"
#define DHT22_PIN 4
void setup() {
// Initialiser le port série pour le débogage
Serial.begin(115200);
// Initialiser la pile Zigbee et joindre le réseau
Zigbee.begin(JOIN_NETWORK);
}
void loop() {
// Lire le capteur toutes les 30 secondes
delay(30000);
float temperature = DHT22.readTemperature();
float humidity = DHT22.readHumidity();
if (!isnan(temperature) && !isnan(humidity)) {
// Envoyer les données via un cluster Zigbee "Temperature Measurement"
Zigbee.send(CLUSTER_TEMP, temperature);
// Envoyer les données via un cluster Zigbee "Humidity Measurement"
Zigbee.send(CLUSTER_HUMIDITY, humidity);
} else {
Serial.println("Erreur de lecture du capteur DHT22");
}
}
Intégration dans Home Assistant
Une fois votre appareil créé et appairé à Zigbee2MQTT, vous devrez probablement créer une configuration manuelle (un “converter”) pour que Z2M sache comment interpréter les messages de votre appareil. Pour un appareil simple, la configuration MQTT manuelle dans Home Assistant est une bonne alternative :
sensor:
- platform: mqtt
state_topic: "zigbee2mqtt/<DEVICE_ID>"
name: "Température DIY"
unit_of_measurement: "°C"
value_template: "{{ value_json.temperature }}"
device_class: "temperature"
- platform: mqtt
state_topic: "zigbee2mqtt/<DEVICE_ID>"
name: "Humidité DIY"
unit_of_measurement: "%"
value_template: "{{ value_json.humidity }}"
device_class: "humidity"
Conclusion
Créer son propre appareil Zigbee est un projet complexe mais extrêmement gratifiant. Il offre une flexibilité inégalée et un contrôle total sur votre matériel. Si cet exemple avec le module EFR32 vous a intrigué, je vous encourage à explorer les ressources de la communauté DIY Zigbee. C’est un domaine en pleine effervescence où le partage de connaissances est la clé.