Ce guide résume le fonctionnement, la configuration, le dépannage et la récupération des données du capteur Govee H5075 (B0D9N7YYDK) à l’aide d’une passerelle Bluetooth OpenMQTTGateway (OMG) sur ESP32.
Le capteur Govee H5075 émet en permanence ses mesures (température, humidité, niveau de batterie) sous forme de trames d’avertissement Bluetooth (BLE Advertising) non cryptées.
Par défaut, si la passerelle se nomme OMG_ESP32_BLE et réside sur le préfixe home, voici les topics principaux :
| Type de donnée | Topic MQTT | Description |
|---|---|---|
| Données Capteur | home/OMG_ESP32_BLE/BTtoMQTT/A4C138XXXXXX |
Contient le JSON avec tempc, hum, batt, rssi. |
| Statut Système | home/OMG_ESP32_BLE/SYStoMQTT |
État de l’ESP32 (RAM, Uptime, Wi-Fi, version). |
| Connexion LWT | home/OMG_ESP32_BLE/LWT |
Indique si la passerelle est online ou offline. |
| Mises à jour | home/OMG_ESP32_BLE/RLStoMQTT |
Informations sur les versions disponibles de l’OMG. |
{
"rssi": -72,
"brand": "Govee",
"model": "H5075",
"model_id": "H5075",
"tempc": 21.4,
"tempf": 70.52,
"hum": 52.3,
"batt": 95,
"mac": "A4:C1:38:XX:XX:XX"
}
Si vous voulez effacer les paramètres enregistrés en mémoire (identifiants Wi-Fi, configuration MQTT, etc.) pour remettre l’ESP32 à zéro :
home/OMG_ESP32_BLE/commands/MQTTtoSYS/config{"erase": true}
Attention : Après cette commande, l’ESP32 va effacer ses paramètres Wi-Fi et redémarrer en mode point d’accès OpenMQTTGateway-WM-ESP pour que vous puissiez le reconfigurer.
Si vous voulez uniquement vider la liste des capteurs conservés en mémoire par l’ESP32 sans redémarrer le système complet :
home/OMG_ESP32_BLE/commands/MQTTtoBT/config{"erase": true}
Par défaut, OpenMQTTGateway publie des logs d’état et de diagnostic sur le réseau MQTT.
Abonnez-vous aux topics système suivants dans votre client MQTT (ex: MQTT Explorer) :
home/OMG_ESP32_BLE/SYStoMQTT : Données système (mémoire disponible, temps d’activité, statut du Wi-Fi).home/OMG_ESP32_BLE/LWT : Statut de connexion de l’ESP32 (Last Will and Testament -> online / offline).Activer le niveau de log détaillé (Verbose) via MQTT :
Si vous voulez voir passer toutes les détections de trames Bluetooth brutes dans la console log :
home/OMG_ESP32_BLE/commands/MQTTtoSYS/config{"logLevel": 4} (4 = Debug/Verbose, 1 = Erreurs uniquement, 2 = Warning)
Accéder aux logs en direct via la Console Web (WebUI)
C’est la méthode ultime si la passerelle ne communique plus en MQTT ou Wi-Fi :
Les capteurs Xiaomi Mi Temperature and Humidity (comme le LYWSD03MMC) reprogrammés avec un firmware alternatif (comme le célèbre ATC_MiThermometer de pvvx) diffusent leurs données (température, humidité, batterie) directement dans leurs trames publicitaires Bluetooth Low Energy (BLE Advertising).
Même pas besoin d’appairer les capteurs : il suffit d’écouter les trames BLE environnantes depuis un PC sous Ubuntu.
Vérifie que le Bluetooth est bien activé sur ton PC :
sudo systemctl start bluetooth
Installe les outils de gestion Bluetooth natifs :
sudo apt update
sudo apt install bluez bluetooth -y
C’est la méthode la plus simple pour vérifier que tes modules émettent bien et repérer leurs adresses MAC.
Lance l’outil interactif :
bluetoothctl
Dans l’interface bluetoothctl, démarre le scan :
scan on
Tu verras défiler les appareils BLE détectés. Tes modules Xiaomi customisés apparaissent généralement sous le nom ATC_XXXXXX ou MiThermometer avec leur adresse MAC (ex: A4:C1:38:XX:XX:XX).
Pour arrêter le scan, tape scan off puis quit.
Puisque ton firmware personnalisé envoie la température et l’humidité directement dans les données d’annonce (Advertisement Data), tu peux lire ces données brutes avec hcitool et hcidump.
Installe les outils de diagnostic réseau/bluetooth :
sudo apt install bluez-hcidump -y
Lance une capture des trames BLE :
sudo hcitool lescan --duplicates
Dans un second terminal, lis les trames décodées :
sudo hcidump --raw
Pour lire automatiquement les températures, l’humidité et le niveau de batterie sous forme de texte propre (pour les intégrer à des scripts ou à Home Assistant), le plus efficace est d’utiliser un petit script Python avec la bibliothèque bleak.
Installe bleak :
sudo apt install python3-pip python3-bleak -y
Crée un fichier scan_xiaomi.py :
import asyncio
from bleak import BleakScanner
async def main():
print("Scan BLE en cours (10s)...")
devices = await BleakScanner.discover(timeout=10.0, return_adv=True)
for d, adv in devices.values():
# Détecte les modules ATC/Xiaomi
if d.name and ("ATC" in d.name or "Thermometer" in d.name):
print(f"Capteur trouvé : {d.name} [{d.address}]")
print(f" Signal (RSSI) : {adv.rssi} dBm")
print(f" Données brutes : {adv.service_data}\n")
asyncio.run(main())
Exécute le script :
python3 scan_xiaomi.py
Si ton firmware personnalisé est configuré au format de diffusion par défaut (Custom / pvvx ou Atc1441), tu verras directement les valeurs décodées ou les octets Hex correspondant à la température et l’humidité !