Un thermomètre connecté dans chaque pièce pour 10 € : capteurs Bluetooth + ESP32 + la découverte automatique MQTT de Gladys

Salut la communauté Gladys!

Je suis le créateur d’OpenMQTTGateway et Theengs, on discute depuis quelques temps avec Pierre-Gilles sur l’integration dans Gladys. Une premiere étape est l’intégration MQTT avec auto discovery. Voici un tutoriel rédigé par Claude qui décrit comment ca fonctionne avec un petit thermomètre Bluetooth à écran, ThermoPro ou Xiaomi, acheté 10 € pour surveiller l’humidité ou la température.

Ce que peu de gens savent : ces capteurs diffusent leurs mesures en Bluetooth Low Energy en permanence — et Gladys peut maintenant les récupérer automatiquement.

Côté budget, la comparaison pour équiper 8 pièces avec Zigbee:

Solution Coût pour 8 pièces
Zigbee (Sonoff SNZB-02P ~14 € + dongle ~25 €) ~135 €
BLE ThermoPro (~9 €/unité en pack) + ESP32 8 € ~80 €
BLE Xiaomi LYWSD03MMC ~5 € (prochain tutoriel) + ESP32 8 € ~48 €

Et contrairement au Zigbee : écran LCD intégré sur chaque capteur (lisible sans ouvrir Gladys), pile bouton qui dure ~1 an, et les capteurs que vous possédez déjà comptent pour 0 €. Il suffit d’une « antenne » pour les écouter : un ESP32 à ~8 € flashé avec OpenMQTTGateway, qui décode plus de 120 modèles de capteurs et les publie en MQTT.

Et la cerise sur le gâteau : l’intégration MQTT de Gladys gère désormais la découverte automatique (format Home Assistant Discovery, annoncée par Pierre-Gilles ici) — il faut Gladys 5 pour qu’elle fonctionne avec OpenMQTTGateway. Résultat : les capteurs apparaissent tout seuls dans Gladys, avec leurs features déjà configurées. Zéro topic MQTT à taper à la main.

Voici le principe :

  Capteurs BLE (5-10 €)        ESP32 + OpenMQTTGateway (~8 €)
  ┌──────────────┐
  │ ThermoPro    │ )))
  ├──────────────┤              ┌─────────────┐
  │ Xiaomi T301  │ ))) ~~BLE~~> │    ESP32    │
  ├──────────────┤              │     OMG     │
  │ Mi Flora     │ )))          └──────┬──────┘
  └──────────────┘                     │ WiFi / MQTT
                                       ▼
                              ┌─────────────────┐
                              │ Broker Mosquitto│
                              │  (dans Gladys)  │
                              └────────┬────────┘
                                       │
                                       ▼
                              ┌─────────────────┐
                              │ Gladys 5        │
                              │ Découverte auto │
                              └─────────────────┘

Temps total : 15 minutes. Aucune soudure, aucun outil à installer sur votre ordi. C’est parti !


Le matériel nécessaire

Matériel Prix Rôle
ThermoPro TP357/TP358 ~10-12 € (moins cher en pack de 2 ou 3) Température + humidité, avec écran — LE capteur star : zéro configuration, décodé d’origine
Govee H5075 / H5072 ~12-15 € Alternative sans configuration, avec écran, décodée d’origine
Xiaomi LYWSD03MMC ~5 € Le moins cher, mais demande un petit flash sans fil — ce sera l’objet d’un prochain tutoriel
Mi Flora HHCCJCY01 ~12-15 € Capteur de plantes (humidité du sol, lumière, fertilité)
SwitchBot Meter ~15 € Température + humidité, avec écran
ESP32 (n’importe quel modèle dev board, ou M5Stack) ~8 € L’antenne BLE → MQTT
Câble USB déjà dans un tiroir Alimentation de l’ESP32

Pourquoi le ThermoPro TP357 en capteur vedette ? Il est décodé d’origine par Theengs Decoder (aucun flash, aucune app, aucune clé : on met la pile et il émet en clair), il a un écran, il est trouvable partout sur Amazon.fr (souvent ~8-9 €/unité en pack de 2 ou 3), et c’est un des capteurs de mon setup réel. La promesse « 15 minutes chrono » tient avec lui.

De mon côté, le setup testé : un M5Stack (ESP32) flashé avec OpenMQTTGateway v1.8.x (binaire esp32 BLE), et une poignée de capteurs ThermoPro, Xiaomi et SwitchBot. Mais n’importe quel ESP32 à 8 € fait exactement le même travail.

:light_bulb: Un seul ESP32 couvre ~10 m à la ronde. Pour une grande maison, mettez-en un par étage : ils publient tous sur le même broker, Gladys ne verra aucune différence.


Étape 1 — Mettre à jour Gladys + activer le broker MQTT (2 min)

:warning: D’abord : mettez à jour vers Gladys 5 !

La découverte automatique est apparue en 4.86, mais les versions 4.x rejetaient les topics d’état « wildcard » utilisés par OpenMQTTGateway. Si vous voyez ce message dans les logs de Gladys :

ignoring state topic +/+/BTtoMQTT/xxx, wildcards are not allowed

…c’est que vous n’êtes pas sur Gladys 5, qui inclut le correctif. Si vous utilisez Watchtower (installation Docker recommandée), la mise à jour se fait automatiquement. Sinon, mettez à jour le conteneur Gladys avant de continuer.

Ensuite : le broker MQTT en un clic

  1. Allez dans Intégrations, tapez « mqtt » dans la recherche et ouvrez MQTT Virtual Devices.

2. Dans l’onglet Setup, activez le toggle « Use broker in a Docker container ». Un encart bleu vous prévient qu’un broker Mosquitto va être lancé sur le port 1883 : cliquez sur « Install broker on Docker ».

  1. Une fois installé, l’écran affiche « Connected to the MQTT broker with success! » et la configuration :
    • Broker URL : mqtt://localhost
    • Username : gladys
    • un mot de passe généré (l’icône œil pour l’afficher) → copiez-le, on en aura besoin à l’étape 3.

Le broker écoute sur le port 1883 de l’IP de votre serveur Gladys, accessible depuis tout le réseau local. Notez cette IP (exemple : 192.168.1.117).


Étape 2 — Flasher OpenMQTTGateway depuis le navigateur (5 min)

Pas besoin d’installer quoi que ce soit : le flash se fait directement depuis le navigateur grâce au Web Serial.

  1. Branchez l’ESP32 en USB sur votre ordinateur.

  2. Ouvrez Chrome ou Edge (Firefox et Safari ne gèrent pas le Web Serial) et allez sur :

    :backhand_index_pointing_right: (Option 1) Upload from the web | Theengs OpenMQTTGateway v1.8.1

  3. Dans la liste des binaires, choisissez esp32dev-ble.

  4. Cliquez sur Connect, sélectionnez le port série de votre ESP32, puis Install.

  5. Patientez 2-3 minutes pendant le flash. :hot_beverage:

C’est tout. L’ESP32 redémarre avec OpenMQTTGateway à bord, Theengs Decoder inclus (le décodeur des 120+ modèles de capteurs BLE).


Étape 3 — Configurer le WiFi et le MQTT de l’ESP32 (5 min)

Au premier démarrage, l’ESP32 ne connaît pas encore votre réseau : il crée son propre point d’accès WiFi.

  1. Sur votre téléphone ou ordinateur, connectez-vous au réseau WiFi créé par l’ESP32 (nom du type OpenMQTTGateway).
  2. Un portail de configuration s’ouvre (sinon, ouvrez 192.168.4.1 dans le navigateur).
  3. Renseignez :
Champ du portail Valeur
SSID / mot de passe WiFi votre réseau WiFi
mqtt server l’IP de votre serveur Gladys (ex : 192.168.1.17)
mqtt port 1883
mqtt user gladys
mqtt pass le mot de passe copié depuis l’écran MQTT de Gladys à l’étape 1
mqtt base topic home/ (:warning: laissez la valeur par défaut !)

  1. Validez. L’ESP32 redémarre et se connecte à votre WiFi puis au broker de Gladys.

À partir de là, il scanne le BLE toutes les ~55 secondes et publie chaque capteur décodé sur un topic du type :

home/<nom-gateway>/BTtoMQTT/<MAC-du-capteur>

Par exemple, pour un ThermoPro TP357 :

{"tempc": 26.6, "hum": 88, "batt_low": true}

Ou pour mon Oria T301 (un clone Xiaomi dont le firmware d’usine émet en clair, MAC en A4:C1:38...) :

{"tempc": 26.3, "hum": 62, "batt": 100}

Et surtout, il publie les configs de découverte (retained) sur homeassistant/.../config — exactement ce que la nouvelle intégration MQTT de Gladys sait lire. :smiling_face_with_sunglasses:


Étape 4 — Créer les appareils découverts dans Gladys (2 min)

Retournez dans Gladys : Intégrations → MQTT Virtual Devices → onglet Discovery.

Magie : vos capteurs sont là, avec leur nom, leur modèle et leurs features (température, humidité, batterie…) déjà détectées.

  1. Cliquez sur chaque appareil pour le créer dans Gladys.
  2. Assignez-lui une pièce (Chambre, Salle de bain, Cave…).
  3. Ajoutez les features à vos dashboards : une carte par pièce avec température + humidité, c’est très lisible.

Quelques exemples réels de ce qui remonte tout seul chez moi :

  • ThermoPro TP357/TP358 : température, humidité, alerte batterie faible
  • Oria T301 (clone famille LYWSD03MMC, firmware non chiffré d’usine) : température, humidité, batterie
  • Beacons BlueCharm : température, accéléromètre, tension de la pile
  • SwitchBot Curtain / Blind Tilt : position, batterie, niveau de lumière (en lecture — voir la section limites plus bas)

:hourglass_not_done: Patience à la première découverte : les capteurs BLE n’émettent que toutes les 1 à 10 minutes selon les modèles. Laissez tourner 10 minutes avant de conclure que ça ne marche pas.


Étape 5 — Des scènes utiles avec tout ça

Maintenant que chaque pièce remonte sa température et son humidité, quelques idées de scènes qui changent la vie :

:cold_face: Alerte gel (cave, garage, serre)

  • Déclencheur : température de la cave < 3 °C
  • Action : envoyer un message Telegram « :warning: Risque de gel dans la cave (2.1 °C), pense aux canalisations ! »

:shower: Humidité salle de bain → VMC

  • Déclencheur : humidité de la salle de bain > 70 %
  • Action : allumer la VMC (prise connectée)
  • Et la scène inverse : humidité < 55 % → éteindre la VMC.

Avec le ThermoPro à 88 % d’humidité vu plus haut, autant dire que la VMC tourne après chaque douche. :grinning_face_with_smiling_eyes:

:thermometer: Suivi de la cave à vin

  • Déclencheur : température de la cave > 16 °C pendant la journée
  • Action : notification + graphique dans le dashboard pour suivre la dérive sur l’année.

Les limites honnêtes (et la suite)

Soyons transparents, tout n’est pas encore parfait :

  • Le pilotage des actionneurs SwitchBot (Curtain, Blind Tilt) n’est pas encore supporté par la découverte de Gladys. Leurs capteurs remontent très bien (position, batterie, niveau de lumière), mais les entités cover tilt-only et les command templates utilisés par OpenMQTTGateway ne sont pas encore gérés. Donc : lecture oui, commande non — pour l’instant.
  • La découverte couvre les capteurs classiques (température, humidité, batterie, etc.). Les entités plus exotiques peuvent être ignorées.
  • Côté Gladys, une intégration Bluetooth native est en cours de spécification — les discussions sont ouvertes sur ce topic. À terme, on pourra imaginer se passer de MQTT pour le BLE. En attendant, la solution OpenMQTTGateway + découverte MQTT est ce qui se fait de mieux, et elle est très robuste.

Dépannage : les 5 pièges classiques

1. Rien n’apparaît dans l’onglet Discovery, et les logs Gladys disent ignoring state topic +/+/BTtoMQTT/xxx, wildcards are not allowed → Votre Gladys n’est pas à jour : il faut Gladys 5. Mettez à jour (Watchtower le fait automatiquement) et redémarrez l’ESP32 pour qu’il republie ses configs.

2. Vous avez changé le base topic → Laissez le base topic à home/ (la valeur par défaut). C’est le format attendu, ne le personnalisez pas.

3. « Ça ne marche pas » après 2 minutes → Les capteurs BLE n’émettent que toutes les 1 à 10 minutes selon le modèle. À la première découverte, laissez tourner 10 minutes. L’ESP32, lui, scanne toutes les ~55 s.

4. Toujours rien après 10 minutes → Vérifiez que l’ESP32 est bien connecté au broker : il publie son statut (LWT) sur le topic home/<nom-gateway>/LWT, qui doit valoir online. Vous pouvez le vérifier avec MQTT Explorer, ou avec :

mosquitto_sub -h <IP-Gladys> -u gladys -P <mot-de-passe> -t "home/+/LWT" -v

Si c’est offline ou vide : revérifiez l’IP du broker, le port 1883, le username gladys et le mot de passe copié depuis Gladys.

5. Un capteur du fond du jardin ne remonte jamais → La portée BLE est d’environ 10 m (murs compris, c’est vite moins). La solution est simple et pas chère : ajoutez un deuxième ESP32 (un par étage, un dans le garage…), tous configurés sur le même broker. Gladys fusionne tout naturellement.


Conclusion

Pour moins de 20 € (1 ESP32 + 1 ThermoPro), vous avez un premier thermomètre connecté qui apparaît tout seul dans Gladys, sans le moindre flash de capteur — et si un ThermoPro ou un Xiaomi traîne déjà chez vous, votre premier capteur est gratuit. Ensuite, chaque pièce supplémentaire ne coûte que ~10 €.

:pushpin: Prochain tutoriel : le Xiaomi LYWSD03MMC à 5 € — le meilleur rapport qualité/prix du marché, au prix d’un petit flash sans fil de 2 minutes depuis le navigateur. Restez à l’écoute !

  • :stopwatch: 15 minutes de mise en place
  • :wrench: Zéro soudure, zéro ligne de commande obligatoire
  • :battery: 1 an d’autonomie sur pile bouton
  • :house: 120+ modèles de capteurs supportés

Un grand merci à Pierre-Gilles pour la découverte automatique MQTT qui rend tout ça possible sans configuration manuelle. :folded_hands:

Et vous, quels capteurs BLE avez-vous chez vous ? Partagez vos payloads et vos scènes dans les réponses !

Super interessant tout ça !! Merci ! :wink: