fr en fr en en fr fr fr fr de fr it en fr fr fr fr fr fr fr fr fr fr fr fr fr fr it fr fr fr fr en fr fr fr fr en fr fr fr fr fr fr fr fr fr en fr fr fr fr fr fr fr fr en fr fr fr fr en fr fr fr fr en fr fr en fr
Dans la première version, j’utilisais un Weemos D1 Mini avec un capteur DHT22. Cette solution reste correcte, mais comporte les problèmes suivants :
Chaque capteur nécessite une alimentation 5V
Ce que limitent les possibilités de placement du capteur
Les données sont consultables uniquement via HA ou l’interface Web
Le DIY a ses limites…
J’ai trouvé une meilleure solution sur YouTube et c’est donc celle-ci que je vous partage.
Les capteurs Xiaomi Mijia sont des capteurs qui fonctionnent en Bluetooth : ils envoient en broadcast leurs informations à intervalle régulier. Ce capteur possède un écran et fonctionne grâce à une pile LR03 (AAA).
Pour récupérer ces informations, on va fabriquer un pont qui d’une part, récupère les trames Bluetooth de broadcast, et d’autre part, les retransmet en IP sur notre LAN (pour les avoir sur Home Assistant !).
Je réalise cela grâce à l’ESP32 (Wi-Fi & Bluetooth) d’un NodeMCU (n’importe quelle autre carte de développement avec un ESP32 fera l’affaire) que je vais flasher avec ESPHome.
L’installation se fait en deux parties. Dans la première, on va faire le nécessaire pour récupérer les adresses MAC Bluetooth des capteurs. Ensuite, on pourra donc spécifier à notre pont quelles informations prendre en compte pour la transmission sur notre serveur domotique.
Vous trouverez ci-dessous la configuration (à ce stade) de mon pont Bluetooth, adaptez-le à votre configuration.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
esphome: name: nodemcu32_1 platform: ESP32 board: esp-wrover-kit wifi: ssid: !secret secret_wifissid password: !secret secret_wifimdp manual_ip: static_ip: 192.168.15.252 gateway: 192.168.15.254 subnet: 255.255.255.0 # Enable logging logger: # Serveur Web web_server: port: 80 # Enable Home Assistant API api: password: !secret secret_nodemcu32_1 ota: password: !secret secret_nodemcu32_1 # Trackeur Bluetooth esp32_ble_tracker: scan_interval: 300s
Ayant déjà détaillé l’utilisation d’ESPHome sur mon article d’introduction à l’IoT, je ne m’attarde pas sur la procédure de première compilation.
Vous remarquez qu’ici, je mets une adresse statique. Je fais cela par principe (car je considère un pont comme un serveur) et aussi pour que la (re)connexion Wi-Fi soit plus rapide en cas de problème sur le sans-fil.
Récupération des adresses MAC BT
On peut alors consulter les logs du pont (sous ESPHome (“SHOW LOGS”) ou sur son interface Web). On devrait alors récupérer les informations comme ici (à condition d’avoir mis une pile dans le capteur ! ヽ(ヅ)ノ) :
Extrait des logs du pont
Notez donc l’adresse MAC et répétez l’opération pour tous vos capteurs. Si vous ne voyez rien dans les logs vous pouvez forcer l’envoi des trames en appuyant sur le bouton derrière le capteur.
Configuration finale du pont
On ajoute donc le contenu suivant (exemple pour deux capteurs) en éditant la configuration du NodeMCU sur ESPHome (en l’adaptant bien sûr) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
sensor: - platform: xiaomi_lywsdcgq mac_address: 58:2D:34:AA:CA:FE temperature: name: "Salon Température" humidity: name: "Salon Humidité" battery_level: name: "Salon niveau batterie" - platform: xiaomi_lywsdcgq mac_address: 58:2D:34:AB:CA:FE temperature: name: "Chambre Température" humidity: name: "Chambre Humidité" battery_level: name: "Chambre niveau batterie"
Intégration à Home Assistant
L’intégration se fait, comme pour tous les modules, dans le menu “Intégration”. Une fois cela fait, on peut ajouter les sensors sur Lovelace :
Ce pont peut-être en plus pour d’autre projet. D’ailleurs, si vous avez déjà des ESP32 connectés chez vous, vous pouvez simplement juste ajouter le nécessaire pour qu’ils fassent pont Bluetooth.
L’utilisation du pont ne décharge pas plus rapidement les piles des capteurs. En effet, le pont ne fait qu’écouter ce qui se trame (joli jeu de mots).
L’auteur du tutoriel que j’ai suivi a mis en place un reboot du pont tous les jours (à 4h) car il a eu des problèmes (surement dû à des bugs sur le driver Bluetooth). Voici le code à mettre si vous en avez la nécessité :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# On récupère l'heure depuis Home Assistant time: - platform: homeassistant on_time: - seconds: 0 minutes: 0 hours: 4 days_of_week: MON-SUN then: - switch.toggle: restart_switch switch: - platform: restart name: "test_temperature Restart" id: restart_switch
Bonus : trackeur Bluetooth
En même temps que l’achat de ces éléments, j’ai aussi pris un petit trackeur BLE (Bluetooth Low Energy), le NUT F6.