Présentation du capteur

Je recherchais depuis quelques temps, des capteur pour mesurer la température et humidité dans ma maison (garage, chambres, salon, extérieurs).

C'est au hasard d'un tweet de @atc_1441 que je me suis intéressé aux capteur pression et humidité Xiaomi Mijia.

Son projet (atc1441/ATC_MiThermometer) permettrait de flasher un firmware custom dans ces capteurs, pour pouvoir les intégrer plus facilement dans une installation domotique.  

Après quelques recherches, je module Xiaomi Mijia m'a semblé être un bon candidat pour mon usage, et en plus il est bon marché (environ quinzaine euros les quatre sur Ali Express).

C'est aussi l'occasion de se plonger dans la découverte du protocole Bluetooth 4 (BLE)

Caractéristiques principales

Le capteur est très compact (4.30 x 4.30 x 1.25 cm) et ne pèse pas plus de 60g.
Il permet de mesurer la température et la pression, et de les diffuser en Bluetooth BLE

Il est alimenté par une pile classique CR 2032 et l'autonomie est donnée pour 6 mois avec cette pile.

Remplacement avec un firmware

Sur la page github du projet, ATC_1441 précise qu'une autre version du code, améliorée est disponible dans un fork (pvvx/ATC_MiThermometer).

Le README est assez clair, et explique comment reprogrammer le capteur avec le firmware custom (tout ca a l'aide d'un navigateur)

  • Prérequis

Pour faire la mise à jour du firmware, il vous faut un navigateur supportant le web-bluetooth.

Pour chrome, il faut activer ces options expérimentales de chrome :

chrome://flags/#enable-web-bluetooth-new-permissions-backend
chrome://flags/#enable-experimental-web-platform-features
  • Flash via l'outil web

Il faut ensuite aller sur la page web de l'outil de flash (https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html)

Les étapes sont :

  • "Connect" pour s'appairer au périphérique
  • "Do Activation" pour récupérer les Token et Clés Mi
  • "Sélection du firmware" => ATC_Thermometer32n.bin'
  • "Do Flashing pour uploader le nouveau firmware custom

L'opération prend une a deux minutes.

Visualiser les trames bluetooth

Nous pouvons, a présent, essayer d'écouter les trames bluetooth de nos capteurs:

Envoi à InfluxDB

Si vous avez quelques connaissances en programmation, vous pouvez a présent utiliser le
programme ble2influx, disponible sur mon compte github:

[https://github.com/ofauchon/experiments/tree/master/bluetooth/ble2influx]

Ce programme "écoute" les trames d'advertisement du périphérique bluetooth, et les envoie
à un serveur influxDB. N'hésitez pas à me contacter via mon compte twitter ou Github en cas de difficultés de mise en place.

Exemple d'intégration Grafana

Même si l'installation et l'utilisation de Grafana est hors du scope de cet article, voila ce que l'on peut obtenir lorsque l'on met en place un dashboard grafana alimenté par les données InfluxDB:

Conclusion

Le travail réalisé sur le firmware Xiaomi Mijia est impressionnant, et permet de compléter, à moindre coût, sont installation domotique avec de nombreux capteurs température / humidité.

Cela fait plusieurs semaines que j'ai installé mes capteurs, et je n'ai rencontré aucun problème avec cette solution.