Bluetooth : Xiaomi température/humidité

Bonjour,
Je suis encore novice et essaie différents supports
Mais en essayant Mozilla WebThings sur mon raspberry pi3 mon capteur temps Xiaomi a été reconnu automatique .
Y a t’il moyen de voir comment ils font ?

2 Likes

Merci pour l’information, je vais chercher :slight_smile:

1 Like

Pour ceux qui seraient intéressés, les sources de l’addon Mozilla WebThings Xiaomi sont ici :

Mode hors sujet

Un peu obscur ce projet, je voulais essayer pour tester sous Docker et en fait, le projet est maintenant sous le nom WebThings et en dehors de Mozilla.

Salut @AlexTrovato,

As-tu trouvé de nouveaux éléments ?
Maintenant que j’ai une instance Gladys qui tourne je peux faire des tests avec le module bluetooth et mes LYWSD03MMC.

Pour le moment ils sont détectés, mais sans aucunes données reçues.

Salut, non j’ai pas eu le temps de chercher. Je m’y remet dès que j’ai du temps.

Que faut il chercher ? Si j’ai un peu de temps, je voudrais essayer sachant que j’ai un Gladys de dev et les fameux capteurs de température en question.

Tu peux essayer de m’expliquer en MP, ou ici, ou en visio en soit :sweat_smile:

En gros, il faut trouver le service et characteristic sur le device qui permet de récupérer les données qui l’on souhaite.
Sur raspberry, il est question de gattool en ligne de commande. Une fois qu’on arrive à récupérer les informations par la, il faudra alors le coder en NodeJS, mais ma priorité est d’abord de trouver les bons services / characteristics à lire sur le device.

Avec tous ces mots clés, je pense que Google te donnera plein d’exemples :wink:

1 Like

J’ai trouvé un projet intéressant qui pourrait même nous aider sur certaines technologies.

@AlexTrovato avais tu vu ce qu’ils proposent ?

C’est une sorte de broker qui permet de se connecter à plusieurs équipements domotique (433mhz, Bluetooth, infrarouge, Lora, etc) et retransmet le tout via MQTT.

Salut Alex,
tu avais trouvé cet article (en Français) qui décrit ce que tu sembles chercher pour le modèle Xiaomi LYWSD03MMC.
Bonne (re)lecture

2 Likes

Et l’article décrit toutes les étapes pas à pas, super trouvaille !

J’étais en train de suivre la démarche depuis un autre blog, mais j’ai eu des erreurs sur les connexions bluetooth… Tant mieux que ce soit déjà écrit sur ton lien :slight_smile:

Après un peu plus de recherche, il existe deux possiblités de lire les données des capteurs LYWSD03MMC.

  1. Se connecter en BLE et lire les données en connaissant les services et characteristics.

  2. Lire le message de broadcast envoyé toutes les minutes, qui ne nécessite pas d’établir une connexion. Évidemment, cette solution est ultra économe en énergie puisqu’elle n’interagit jamais directement avec le capteur.

Malheureusement, le point 2) nécessite de déchiffrer le message en récupérant la clé de déchiffrement au préalable.
Mais une solution alternative existe : flasher un firmware (via son téléphone) pour désactiver la partie chiffrement.
L’autre avantage, c’est que les services et characteristics sont déjà indiqués @AlexTrovato :

Je vais tester ce tuto et je vous fait un retour ici !

J’ai suivi le tuto et le flash fonctionne super bien (Chrome sous W10).

A noter quelques points cependant :

  • Aucun matériel nécessaire, autre qu’un PC ou téléphone
  • Il faut utiliser le navigateur Chrome sur PC ou Android
  • Ne fonctionne pas avec un autre navigateur (Firefox)
  • Une fois le firmware modifié, l’application Mi Home ne peut plus lire les données (les adresses de lecture sont différentes)
  • La procédure prends a peine 10 minutes en prenant son temps
  • On peut évidemment flasher l’ancien firmware si nécessaire

Deux questions me viennent à l’esprit, sachant que ce firmware custom permet de lire les données du capteur sans s’y connecter et donc économiser grandement la batterie :

  1. Est-il imaginable d’après toi @pierre-gilles et @AlexTrovato d’indiquer en prérequis pour ce capteur qu’il faut le flasher pour l’utiliser ?

  2. Peut-on proposer deux modes de fonctionnement ? Un avec une connexion régulière en BLE à l’appareil et l’autre en passif en lisant les données envoyées toutes les 1 minutes ?