Je sollicite votre aide pour finaliser une sonde de température et d’humidité maison. J’ai passé pas mal de temps avec une IA pour dégrossir le projet, mais nous butons sur l’intégration finale dans Zigbee2MQTT.
Ma configuration : Matériel :
ESP32-H2 (format Super Mini).
Capteur : SI7021 relié en I2C sur les GPIO 11 (SDA) et 10 (SCL).
Environnement : Arduino IDE avec le Core ESP32 v3.3.5 d’Espressif.
Bibliothèque : Utilisation de la stack native Zigbee.h (classe ZigbeeTempSensor).
Le problème : Le programme fonctionne : je vois les lectures de température et d’humidité dans le moniteur série. L’appareil est bien détecté par Zigbee2MQTT (adresse réseau OK), mais il reste en état Inconnu / Non pris en charge. L’interview semble incomplète ou la signature (fingerprint) n’est pas reconnue, ce qui empêche l’affichage correct des entités dans Home Assistant.
Ma question : Est-ce que l’un d’entre vous a réussi un projet similaire avec l’ESP32-H2 ? Existe-t-il un External Converter (.js) type pour ce genre de montage DIY avec la stack Espressif ? Ou existe-t-il une alternative logicielle plus stable pour l’H2 (ESPHome, Tasmota ou autre) qui gère nativement le Zigbee sur ce chip ?
Je joins mon code actuel ci-dessous. Je ne suis pas fermé à changer d’environnement de développement si cela permet d’avoir un capteur fiable sur batterie.
Merci d’avance pour votre expertise !
#include "Zigbee.h"
#include "Adafruit_Si7021.h"
#include <Wire.h>
Adafruit_Si7021 sensor = Adafruit_Si7021();
// ON CHANGE L'ID : On passe de 5 à 10 pour forcer une nouvelle interview
#define SENSOR_ENDPOINT 10
ZigbeeTempSensor zbSensor(SENSOR_ENDPOINT);
void setup() {
Serial.begin(115200);
delay(3000);
// Éteindre la LED RGB qui te gêne
#ifdef RGB_BUILTIN
neopixelWrite(RGB_BUILTIN, 0, 0, 0);
#endif
Wire.begin(11, 10); // SDA=11, SCL=10
sensor.begin();
// ORDRE CRUCIAL : On configure AVANT d'ajouter l'Endpoint
zbSensor.addHumiditySensor();
Zigbee.addEndpoint(&zbSensor);
Serial.println("Démarrage Zigbee (Test Continu)...");
Zigbee.begin();
}
void loop() {
if (Zigbee.connected()) {
float t = sensor.readTemperature();
float h = sensor.readHumidity();
if (!isnan(t) && !isnan(h)) {
zbSensor.setTemperature(t);
zbSensor.setHumidity(h);
Serial.printf("Envoyé -> T: %.2f | H: %.2f\n", t, h);
}
}
delay(5000);
}
Merci pour le lien,
je vais regarder ça tranquillement.
J’ai passé énormément de temps hier à essayer de faire fonctionner le système.
J’ai été plus freiné par l’utilisation de VS Code et les problèmes de dépendances ou de librairies incompatibles (qui généraient des erreurs étranges) qu’autre chose.
Aujourd’hui, c’est dimanche : petite pause, on verra plus tard. Sinon, je vais devenir fou !
Bon, j’abandonne, je balance VS Code, j’en peux plus. J’ai passé deux heures à essayer de programmer la puce pour écrire « hello Word », mais j’ai systématiquement une erreur de transfert sur le port COM. Je ne vais pas me rendre malade pour ça. Salut.
T’es pas obligé de faire le transfert avec VScode. Si ça compile bien, (sortie d’un fichier .bin) tu peux très bien le flasher en utilisant un autre outil « Espressif Flash Download Tool » par exemple (qui ne m’a jamais fait defaut, même avec des ESP que je croyais « corompu »)
Ouais, c’est sympa, mais j’abandonne.
Même ton outil a l’air bien, mais ce n’est pas si simple : j’ai 9 fichiers .bin et je ne sais même pas comment les organiser dedans.
Je vais retourner sur l’IDE Arduino et je m’en contenterai, ce sera plus sage.
J’ai 25 ESP32 (différents modèles mais pas de ESP32-H2), je n’ai jamais eu à manipuler de .bin, je fais tout depuis ESPHome Builder en Addon dans HA, je ne comprends pas ce que tu fais avec VS Code pour un ESP !
L’éditeur de ESPHome Builder fonctionne parfaitement.
Il me semble que le ESP32-H2 super mini n’a pas de WIFI, il faut donc le brancher en USB sur un PC et tu le trouveras depuis ESPHome.
Oui pour faire un firmware ESPhome… mais sauf erreur ou évolution récente, le zigbee n’est pas supporté par ESPhome.
Donc si tu veux te faire un firmware qui gère le zigbee, t’es bien obligé de te palucher le code à la main, en C++ (et pas en yaml…) et pour ça VScode reste quand même un standard (avec l’add-on Platformio le plus souvent) mais c’est vrai que c’est souvent un peu lourd.
Merci pour la précision @Forhorse, comme indiqué je n’ai jamais utilisé l’ESP32-H2.
En espérant que ESPHome supporte prochainement le Zigbee alors
Pour avoir eu récemment un problème de Box, plus aucun ESP32 en ligne, en Zigbee ils seraient restés connectés
Bob
J’ai épluché les schémas et les datasheets des composants de ma carte de développement (LDO, LED, etc.) et rien ne justifie physiquement une consommation résiduelle de 6mA.
Mon analyse est que le problème vient directement du module ESP32-H2 : il semblerait que la pile Zigbee ou le bloc radio interne ne passe pas réellement en mode basse consommation, même en appelant le Deep Sleep. Cela enlève énormément d’intérêt à ce SoC pour des projets sur batterie.
Je vais donc abandonner cette piste et me diriger vers un modèle Wi-Fi/MQTT classique. Ce sera l’occasion de passer sous ESPHome, qui offre une gestion du Deep Sleep souvent plus robuste et documentée.
Je viens de faire un test sur un C6. super mini sur accu
Les soi-disant « le Wi-Fi, ça consomme des tonnes », c’est vraiment surfait !
Vous pouvez le voir sur le graphe ci-dessous.
J’ai fait un test où le C6 tourne à 100 % en recherchant du Wi-Fi.
Une deuxième phase où il est en idle et attend.
Une troisième phase où il est en sommeil profond.