Pour intégrer ces sondes dans home assistant je conseille d’utiliser le composant BLE Monitor plutôt que l’intégration de base que l’on trouve dans HA. L’installation se fait via HACS et on ajoutera la configuration suivante à notre fichier configuration.yaml :
sensor:
- platform: mitemp_bt
rounding: True
decimals: 2
period: 60
log_spikes: False
use_median: False
active_scan: False
hci_interface: 0
batt_entities: False
encryptors:
'A4:C1:38:2F:86:6C': '217C568CF5D22808DA20181502D84C1B'
report_unknown: False
Afin de pouvoir utiliser les deux derniers modèles proposés par Xiaomi, et probablement les prochains, il va falloir tricher un peu. On va donc installer sur Android une version hackée de Mi Home que l’on récupère ici.
ATTENTION : On fait ça de préférence sur un vieux mobile que l’on utilise plus et qui n’est pas connecté à vos comptes habituels, car s’agissant d’une version hackée, si elle va nous aider, on ne sait pas vraiment ce qu’elle fait et elle peut contenir d’autres choses malveillantes…
Dans Mi Home connecté au serveur Chine (possible également sur le serveur Europe depuis juin 2020) on associe notre sonde ou le réveil, ça mettra le réveil à l’heure. Ensuite on ouvre un explorateur de fichier sur le mobile pour aller chercher le fichier /vevs/logs/pairings.txt ou l’on va trouver les informations qui nous intéressent…
Did: blt.3.12bq5vom4lg00
Token: ec104xxddrrgghhjj01dbe6b
Bindkey: d26dbddffggrrttyy5cf0050e5039d02
Mac: A4:XX:38:AB:XX:F7
Did: blt.3.12in66gtolg00
Token: 47eeerrttyyuuii1a5369db0
Bindkey: a2fcb4edddffgghhjjkkf7d264600320c
Mac: 58:2D:55:51:44:92
Easy ! En fait il m’a fallut un peu de temps et de recherches pour arriver à trouver ça facile. Les sondes qui ne nécessitent pas de BindKey seront reconnues toute seules par HA, pour les autres il faudra renseigner la ligne encryptors: dans le fichier de configuration.
Il ne faut toutefois jamais perdre de vue que toutes ces sondes à bas prix, Xiaomi ou autres, ne sont jamais étalonnées et qu’il n’est pas rare d’observer des écarts. Dans l’exemple ci dessus, les 4 sondes signalées en rouge sont placées sur mon bureau depuis une heure et aucune n’indique la même valeur… Un offset sera donc parfois à prévoir dans Home Assistant.
Source
Il est possible d’intégrer ces senseurs à Home Assistant.
Qui ne veut pas d’un autre capteur de température et d’humidité ajouté dans Home Assistant pour une autre pièce ou juste pour le plaisir. En plus le capteur doit être petit, alimenté par une batterie, bon marché et avoir un look sympa
Eh bien, maintenant il ya un tel capteur, il vient de Xiaomi, le modèle exact est celui-ci LYWSD03MMC et vous pouvez l’obtenir sur AliExpress pour environ 4 $ (Il sera moins cher si vous achetez un pack de quatre)

Il y a un petit problème avec le capteur Xiaomi TH
Le capteur Xiaomi Température & Humidité (LYWSD03MMC) est verrouillé et les données qu’il émet par Bluetooth sont cryptées, vous ne pouvez donc pas l’utiliser librement. Cela signifie qu’aucune intégration de l’assistant de maison Xiaomi Temperature & Humidity n’est possible.
Ne vous inquiétez pas trop ici, grâce à Aaron, qui a créé un outil web qui peut extraire la clé de cryptage (quelque chose que vous verrez plus tard) et un firmware personnalisé en option. Tout le processus de déverrouillage se fait sans fil, sans aucune soudure ou procédure compliquée.
L’ajout du capteur à l’application mobile Xiaomi est une étape obligatoire pour l’intégration de l’assistant de maison Xiaomi Temperature & Humidity avec le micrologiciel d’origine du capteur.
Pour poursuivre l’intégration du capteur de température et d’humidité Xiaomi dans le Home Assistant, nous devons obtenir le cryptage Xiaomi, c’est-à-dire la clé de liaison, en utilisant l’outil web Telink Flasher créé par Aaron.
Utilisez l’outil Web Telink Flasher pour obtenir la clé Bind de Xiaomi

Avant de continuer, gardez à l’esprit que le périphérique sur lequel votre Home Assistant est installé doit avoir des capacités Bluetooth. Un Raspberry Pi 4 ou Pi 3 est parfait.
Alternativement, si votre assistant de maison n’a pas de Bluetooth, vous pouvez utiliser un dispositif ESP32 comme couche intermédiaire entre l’assistant de maison et le capteur Xiaomi.
Revenons maintenant à notre mission d’intégration du capteur de température et d’humidité Xiaomi dans le Home Assistant avec le firmware stock. Utilisez la méthode ci-dessous uniquement si votre Home Assistant dispose du support Bluetooth.
L’étape suivante consiste à ajouter un composant personnalisé Passive BLE Monitor dans Home Assistant. Cela peut être fait manuellement :
Si vous n’avez pas encore HACS, c’est le moment idéal pour l’obtenir. Je vous explique en détail comment le faire dans mon article. Allez donc le lire (ou regardez mon tutoriel vidéo), installez HACS et revenez ici.
Si vous avez déjà HACS, continuez à lire.
Il est temps d’ajouter notre nouvelle intégration Passive BLE Monitor dans le Home Assistant et de la configurer, ce qui est l’étape finale de l’intégration du capteur de température et d’humidité Xiaomi dans le Home Assistant. Voyons comment.
Après le démarrage de Home Assistant :
Allez dans Configuration > Intégrations > Add Integration > Search fro ble > cliquez sur le résultat et attendez que la configuration du moniteur BLE passif soit terminée.
Pendant que vous attendez, assurez-vous que vous êtes abonné à ma newsletter. Si vous l’avez déjà fait, vous pouvez vous abonner à ma chaîne YouTube. Si vous l’avez fait également, envoyez-moi un message sur mon serveur Discord et je re-tweeterai un de vos tweets si vous me suivez sur Twitter 🤪.
Maintenant, finissons-en.
Une nouvelle fenêtre de dialogue apparaît une fois la configuration du moniteur BLE passif terminée.
Vous pouvez laisser toutes les options non modifiées, à une exception près : vous pouvez cocher l’option Restaurer l’état.
Cliquez sur le menu déroulant Devices > Add device… > Submit buttons.

Dans la boîte de dialogue suivante, vous devrez saisir l’adresse MAC de votre capteur de température et d’humidité Xiaomi. Pour obtenir l’adresse MAC, allez dans l’application Xiaomi Mi > tapez sur votre capteur Xiaomi TH > menu à trois points > À propos.
Votre clé de cryptage (bind) extraite grâce à l’outil Telink Flasher est également nécessaire ici. Collez-la dans le champ respecté.
Sélectionnez Celsius ou Fahrenheit comme unité de température et cliquez deux fois sur le bouton Soumettre.

Il ne vous reste plus qu’à attendre (jusqu’à 10 minutes). Après avoir attendu suffisamment, vous serez en mesure de voir 1 appareil et 4 entités sous votre intégration Passive BLE Monitor.

Si vous cliquez sur ce dispositif, vous verrez la batterie du dispositif, l’humidité, la température et les lectures de tension comme capteurs.

Vous pouvez ajouter ces capteurs comme une carte à votre Home Assistant Lovelace ou vous pouvez commencer à faire des automatisations (ou les deux).
Et juste comme ça, l’intégration du capteur de température et d’humidité Xiaomi de Home Assistant avec le firmware stock est terminée.
Outro
Mercredi prochain, je publierai une nouvelle vidéo et un nouvel article ! En attendant, vous pouvez consulter certains de mes articles précédents, comme ce capteur de mouvement à 4 $ dans le Home Assistant HOW-TO.
Restez en sécurité et n’oubliez pas : une maison intelligente, mais pas difficile !
Si nous avons appris quelque chose au fil des années, c’est que les hackers adorent connaître la température. Sérieusement. Une promenade dans les archives de Hackaday révèle un nombre impressionnant de gadgets sur mesure pour enregistrer, afficher et transmettre les conditions actuelles. Des stations météorologiques extérieures à un ESP8266 avec un DHT11 soudé, l’art antérieur ne manque pas si vous souhaitez commencer à collecter vos propres données environnementales.
Maintenant, évidemment, nous sommes de grands fans du bricolage ici, c’est en quelque sorte le but de tout le site Web. Mais il est indéniable qu’il peut être difficile de rivaliser avec les économies d’échelle, surtout lorsqu’il s’agit de produits importés. Même le pirate informatique le plus expérimenté aurait du mal à construire quelque chose comme le Xiaomi LYWSD03MMC. Pour seulement 4 $ USD chacun, vous disposez d’un capteur économe en énergie avec un écran LCD intégré qui diffuse la température et l’humidité actuelles via Bluetooth Low Energy.
Vous pourriez probablement construire le vôtre… mais pourquoi ?
C’est à peu près la plate-forme idéale pour mettre en place un système de surveillance environnementale dans toute la maison, à un détail près : elle est conçue pour fonctionner dans le cadre du système domotique de Xiaomi, et pas nécessairement les configurations bricolées que des gens comme nous ont à la maison. . Mais c’était avant qu’Aaron Christophel ne se lance dans l’affaire.
Nous avons annoncé pour la première fois le mois dernier des nouvelles de son projet ambitieux visant à créer un firmware open source pour ces capteurs à faible coût, et sans surprise, il a suscité beaucoup d’intérêt. Après tout, les gens prennent du matériel existant, les améliorent et partagent avec le monde comment ils l’ont fait est un principe fondamental de cette communauté.
Estimant qu’une projection aussi bien conçue méritait un second regard, et franchement parce que je voulais commencer à surveiller les conditions dans ma propre maison à moindre coût, j’ai décidé de commander un pack de thermomètres Xiaomi et de me lancer.
L’un des aspects les plus attrayants du micrologiciel « ATC » d’Aaron est certainement sa facilité d’installation. Vous vous attendez à ce que quelque chose comme ça nécessite de casser le boîtier et de connecter un adaptateur USB vers UART, et même si vous pouvez réellement emprunter cette voie si vous en avez besoin, 99 % des utilisateurs utiliseront l’outil de flashage extrêmement intelligent « Web Bluetooth ».
En théorie, vous devriez pouvoir installer le micrologiciel ATC à partir de n’importe quel ordinateur exécutant un navigateur Web suffisamment moderne, mais votre kilométrage peut varier avec une fonctionnalité aussi avancée. Mon ordinateur de bureau Linux ne parvenait pas du tout à se connecter aux thermomètres, et l’essayer sur un Chromebook ne fonctionnait qu’occasionnellement. Votre meilleur pari sera probablement un smartphone ou une tablette, et je n’ai eu aucun problème à faire clignoter plusieurs thermomètres avec mon Pixel 4a.
Au total, le processus de flashage prend un peu moins d’une minute. Après avoir tiré la languette à l’arrière du thermomètre, appuyez sur « Connecter » sur le clignotant et attendez qu’il apparaisse dans la liste des appareils Bluetooth locaux. Après la connexion, vous devez appuyer sur le bouton « Activer », qui établit apparemment la connexion sécurisée requise par le micrologiciel d’origine avant de permettre une mise à niveau par liaison radio (OTA).
Une fois le processus d’activation terminé, sélectionnez un binaire du micrologiciel, appuyez sur « Démarrer le clignotement » et attendez que l’indicateur de progression atteigne 100 %. Cela prend environ 30 secondes, puis le thermomètre devrait immédiatement redémarrer avec le nouveau micrologiciel. S’il ne se réveille pas après le processus de clignotement, Aaron dit que vous pouvez simplement retirer la batterie et qu’elle devrait se régler d’elle-même. J’ai suivi ce processus plusieurs fois maintenant sans jamais avoir besoin de retirer une batterie, donc il s’agit probablement d’un problème assez rare.
Si jamais vous en avez besoin, le même processus peut être utilisé pour remettre le micrologiciel d’origine sur l’appareil. Aaron n’a pas d’image de firmware d’origine dans le référentiel GitHub (probablement pour éviter une réclamation pour atteinte aux droits d’auteur), mais dans la documentation, il vous explique comment en extraire une copie à partir d’un fichier de mise à jour officiel.
Maintenant, les lecteurs les plus soucieux de la sécurité se demanderont peut-être si cela signifie qu’un nerd militant peut bricoler les thermomètres Xiaomi des gens. Malheureusement, c’est le cas. Cet outil permettra à toute personne se trouvant à portée Bluetooth de flasher ce qu’elle veut sur le Xiaomi LYWSD03MMC, qu’un micrologiciel personnalisé soit installé ou non. Cela dit, il a déjà été question d’ajouter une sorte de mécanisme d’authentification au micrologiciel ATC pour se défendre contre de telles attaques ; ce qui le rend nettement plus sécurisé que le firmware d’origine.
L’outil de flashage Web n’installe pas seulement le micrologiciel ATC, il fournit également une interface facile à utiliser pour le configurer. Après vous être connecté à l’appareil, faites simplement défiler un peu vers le bas et appuyez simplement sur les différentes options pour les activer ou les désactiver.
Désactiver l’étrange smiley en art ASCII a été la première chose que j’ai faite, et étant un païen américain, j’ai également changé l’affichage en Fahrenheit. Le fait que vous puissiez saisir des valeurs de décalage pour la température et l’humidité est pratique, même si cela pourrait devenir inutile à l’avenir, car Aaron dit qu’une routine d’étalonnage plus robuste figure sur la liste TODO.
Afficher le niveau de batterie à l’écran est une fonctionnalité intéressante activée par défaut, mais personnellement je l’ai désactivée. Le problème est que le pourcentage de batterie et l’humidité relative doivent partager le plus petit ensemble de chiffres en bas à droite de l’écran LCD. Ils changent d’avant en arrière toutes les cinq secondes environ, ce qui, en pratique, semble juste assez rapide pour que l’on puisse parfois se tromper quant à celui que vous regardez. De plus, lorsque la pile CR2032 à l’intérieur est censée durer jusqu’à un an, ai-je vraiment besoin de voir le niveau de la pile aussi souvent ?
Au début, j’étais un peu confus par « Intervalle publicitaire ». J’ai supposé que cela correspondrait à la fréquence à laquelle le thermomètre envoie un paquet BLE, mais en pratique, il les envoie toutes les quelques secondes, quelle que soit la modification de ce paramètre. Ce paramètre change réellement, c’est la fréquence à laquelle les données de température diffusées sont mises à jour. La valeur par défaut est d’une minute, vous devez donc vous attendre à recevoir une vingtaine de paquets contenant les mêmes valeurs de température et d’humidité avant d’être actualisés. Définir l’intervalle de mise à jour sur 10 secondes vous donnerait des données plus granulaires, mais probablement au détriment de la durée de vie de la batterie.
Bien qu’Aaron n’entre pas trop dans les détails sur la page du projet, il est assez facile de compiler votre propre firmware pour le thermomètre qui peut ensuite être flashé avec l’outil Web. Sous Linux, tout ce que j’avais à faire était d’extraire l’archive tar Xiaomi Telink TLSR825X et d’ajouter le répertoire à ma variable d’environnement $PATH. À partir de là, j’ai pu créer le firmware ATC et commencer à fouiller dans le code.
Les noms personnalisés ne sont qu’à quelques lignes de code.
Si vous aimez la programmation C de bas niveau, il existe un certain nombre de problèmes dans le référentiel GitHub que vous pourriez probablement résoudre. Il semble que la principale solution à l’heure actuelle consiste à établir un stockage flash persistant, ce qui ouvrirait la voie à la possibilité de conserver la configuration lors des changements de batterie et à des fonctionnalités plus avancées telles que l’enregistrement de la température locale.
Pour mes propres besoins, il était assez simple de trouver la partie du code qui modifie le nom du périphérique Bluetooth. Si vous envisagez de les répartir partout dans la maison, voir quelque chose comme « ATC_BEDROOM » sera certainement plus utile que le schéma de dénomination par défaut qui utilise les derniers caractères de l’adresse MAC.
Maintenant, pour être clair, vous n’avez pas besoin d’installer le micrologiciel d’Aaron pour utiliser les données de ces thermomètres dans vos propres projets. Il existe au moins un outil qui vous permet d’extraire la température, l’humidité et le niveau de la batterie des capteurs prêts à l’emploi, et ils sont également pris en charge dans ESPHome. Mais le problème avec le firmware d’origine est que vous devez réellement vous connecter à chaque capteur pour lire ses données, ce qui est un processus lent et gourmand en énergie. L’une des principales améliorations apportées au micrologiciel d’Aaron est que les données sont constamment diffusées en clair sous forme de publicité BLE ; ce qui signifie que tout appareil à proximité peut détecter les valeurs directement sans établir de connexion ou d’appairage.
À cette fin, il existe quelques packages qui valent la peine d’être examinés. Au moment d’écrire ces lignes, il existe une demande d’extraction pour ajouter la prise en charge du micrologiciel ATC à aioblescan, un simple outil Python 3 qui videra les données des paquets BLE vers le terminal. Un peu de script vous permettrait d’analyser facilement la sortie d’aioblescan et de mélanger les informations comme bon vous semble.
J’ai également eu de la chance avec py-bluetooth-utils, une bibliothèque conçue pour travailler avec les publicités BLE. Sur la base de quelques exemples inclus dans le projet, j’ai mis au point ce script minimal qui devrait vous aider à démarrer :
#!/usr/bin/env python3
import sys
from datetime import datetime
import bluetooth._bluetooth as bluez
from bluetooth_utils import (toggle_device, enable_le_scan,
parse_le_advertising_events,
disable_le_scan, raw_packet_to_str)
# Use 0 for hci0
dev_id = 0
toggle_device(dev_id, True)
try:
sock = bluez.hci_open_dev(dev_id)
except:
print("Cannot open bluetooth device %i" % dev_id)
raise
# Set filter to "True" to see only one packet per device
enable_le_scan(sock, filter_duplicates=False)
try:
def le_advertise_packet_handler(mac, adv_type, data, rssi):
data_str = raw_packet_to_str(data)
# Check for ATC preamble
if data_str[6:10] == '1a18':
temp = int(data_str[22:26], 16) / 10
hum = int(data_str[26:28], 16)
batt = int(data_str[28:30], 16)
print("%s - Device: %s Temp: %sc Humidity: %s%% Batt: %s%%" % \
(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), mac, temp, hum, batt))
# Called on new LE packet
parse_le_advertising_events(sock,
handler=le_advertise_packet_handler,
debug=False)
# Scan until Ctrl-C
except KeyboardInterrupt:
disable_le_scan(sock)
Si vous ne pouvez pas le dire, j’aime vraiment le firmware personnalisé d’Aaron Christophel pour le Xiaomi LYWSD03MMC. Pour autant que je sache, il n’y a absolument aucune raison de ne pas l’installer si vous possédez déjà certains de ces thermomètres. Dans son état actuel, il vous donne un meilleur contrôle sur le matériel et sur ce que vous pouvez en faire, et les fonctionnalités actuellement en phase de planification promettent d’aller encore plus loin. Être capable d’enregistrer localement des données de température sur le thermomètre et de les télécharger via BLE à une date ultérieure est certainement quelque chose à surveiller.
Aussi bon marché que soient ces petits thermomètres, je vous recommande fortement d’en ajouter quelques-uns à votre prochaine commande de pièces. Même si vous n’avez pas encore d’idée en tête, je ne serais pas surpris si quelque chose vous venait après avoir passé un après-midi à pirater leur firmware.