Sonde de température Xiaomi Mijia LYWSD03MMC

Bonjour,

J’ai acheté l’année dernière des Xiaomi LYWSD03MMC. Ils sont pas chers et plutôt jolis. Mais voilà, comme beaucoup d’entre vous j’ai été très déçu par l’intégration dans Jeedom. Remontée d’infos aléatoire, batterie à plat très vite… Bref très déçu comparé aux anciens capteurs ronds.

En fait cela vient d’une différence majeure entre les 2 capteurs :

  • le capteur rond advertise les infos « en clair » donc BLEA les intercepte et les remonte dans jeedom très facilement.
  • le capteur carré (LYWSD03) advertise les infos en crpyté et donc impossible à priori de les remonter facilement. BLEA est obligé d’ouvrir une connection avec le device, de l’interroger puis de remonter l’info dans Jeedom. Ceci est très coûteux pour la baterie du capteur.

Comme mentionné plus haut, nos confrères de « Home Assistant » ont planché sur le problème … et ils ont trouvé comment décrypter les trames que le LYWSD03 advertise.

J’ai pu adapter leur solution à Jeedom, du moins sur la partie du démon BLEA et ça marche bien.
Pour l’intégrer définitivement dans le plugin j’aurai néanmoins besoin d’un coup de main d’un dev PHP familier avec Jeedom.

Comment ça marche si vous voulez tester dès maintenant :

  • Récupérer les clés d’encryptage de vos devices. Expliqué ici J’ai utilisé la méthode avec Stream et Mi Home sur mon iphone et ça marche bien. Il faut supprimer les capteurs de votre appli MiHome et les ré-appairer tout en ayant activé le sniffer. La clé doit faire 32 caractères.
  • Mettre à jour le fichier /var/www/html/plugins/blea/resources/blead/devices/lywsd03.py du démon BLEA avec mon code (dispo ci-dessous)
  • Mettre à jour le dictionnaire keys au début du module lywsd03.py avec les MAC de chaque device et la clé de dévryptage associée.
  • Ajouter la dépendance sur la librairie de décryptage : sudo pip3 install pycryptodomex
  • Décochez le ‹ refresh forcé › pour chaque device de ce type dans la page ‹ Paramètres ›
  • Redémarrer le démon BLEA

L’idéal serait d’intégrer tout ça à BLEA! Mais autant le code Python ne me fait pas peur, autant je suis pas à jour du tout en PHP…
Si quelqu’un pourrait m’aider à :

  • Dans la page « Paramètre » de chaque équipement BLEA, ajouter un champ pour rentrer la clé de cryptage
  • Faire que Jeedom pousse cette clé au démon (dans globals.KNOWN_DEVICES). Cela permettra de supprimer le dictionnaire keys ajouté à l’arrache dans le module lywsd03.py

Tim

lywsd03.py.txt (3,9 Ko)

14 « J'aime »