Si nous avons appris quelque chose au fil des ans, c’est que les pirates aiment savoir quelle est la température. Sérieusement. Une promenade dans les archives ici à Hackaday révèle un nombre écrasant 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 de 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, en particulier lorsqu’il s’agit de biens importés. Même le pirate informatique le plus expérimenté aurait du mal à construire quelque chose comme le Xiaomi LYWSD03MMC. Pour aussi peu que 4 $ US 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 configurer un système de surveillance de l’environnement dans toute la maison, à l’exception d’un détail : il est conçu pour fonctionner dans le cadre du système domotique de Xiaomi, et pas nécessairement les configurations piratées que des gens comme nous ont à la maison. . Mais c’était avant qu’Aaron Christophel n’entre dans l’affaire.

Nous avons d’abord apporté des nouvelles de lui projet ambitieux de créer un firmware open source pour ces capteurs low-cost le mois dernier, et sans surprise, il a suscité pas mal d’intérêt. Après tout, les gens prennent des pièces de matériel existantes, les améliorent et partagent comment ils l’ont fait avec le monde est un principe fondamental de cette communauté.

Estimant qu’un projet aussi bien conçu méritait un second regard, et franchement parce que je voulais commencer à surveiller les conditions dans ma propre maison à peu de frais, j’ai décidé de commander un pack de thermomètres Xiaomi et de plonger dedans.

Publicité

Installation du micrologiciel

L’un des aspects les plus attrayants du micrologiciel « ATC » d’Aaron est certainement sa facilité d’installation. Vous vous attendriez à ce que quelque chose comme ça nécessite de casser le boîtier et de connecter un adaptateur USB vers UART, et pendant que vous pouvez suivez cette voie si vous en avez besoin, 99 % des utilisateurs seront à l’aide de l’outil de clignotement « Web Bluetooth » extrêmement intelligent.

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 telle fonctionnalité de pointe. Mon bureau Linux ne pouvait 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 des thermomètres à l’aide de mon Pixel 4a.

Tout compte fait, le processus de clignotement prend un peu moins d’une minute. Après avoir tiré sur la languette à l’arrière du thermomètre, appuyez sur « Connecter » sur le clignotant et attendez qu’il apparaisse sur 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é, vous sélectionnez un binaire de micrologiciel, appuyez sur « Démarrer le clignotement » et attendez que l’indicateur de progression se rapproche de 100 %. Cela prend environ 30 secondes pour se terminer, puis le thermomètre doit 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 s’arranger. J’ai suivi ce processus plusieurs fois maintenant sans jamais avoir besoin de retirer une batterie, donc c’est probablement 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 micrologiciel stock dans le référentiel GitHub (susceptible d’éviter une réclamation pour droit d’auteur), mais dans la documentation, il vous explique comment vous pouvez en extraire une copie à partir d’un fichier de mise à jour officiel.

Maintenant, le lecteur le plus soucieux de la sécurité peut se demander si cela signifie qu’un nerd militant peut contourner les thermomètres Xiaomi des gens. Malheureusement, c’est le cas. Cet outil permettra à toute personne à 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.

Se mettre à l’aise

L’outil de clignotement 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 et appuyez simplement sur les différentes options pour les activer ou les désactiver.

La première chose que j’ai faite a été de désactiver l’étrange visage souriant d’art ASCII, et étant un païen américain, j’ai également changé l’affichage en Fahrenheit. Le fait que vous puissiez entrer 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.

L’affichage du niveau de la batterie à l’écran est une fonctionnalité intéressante qui est 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 alternent toutes les cinq secondes environ, ce qui, dans la pratique, semble juste assez rapide pour qu’il soit parfois déroutant de savoir lequel vous regardez. De plus, lorsque la batterie CR2032 à l’intérieur est censée durer jusqu’à un an, ai-je vraiment besoin de voir le niveau de la batterie si souvent ?

J’étais un peu confus par « Advertising Interval » au début. J’ai supposé que ce serait 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 valeur de ce paramètre. Qu’est-ce que ce réglage réellement changes 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 à obtenir environ 20 paquets contenant les mêmes valeurs de température et d’humidité avant qu’ils ne soient rafraîchis. 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.

Constructions personnalisées

Bien qu’Aaron n’entre pas trop dans les détails sur la page du projet, il est assez facile de compiler votre propre micrologiciel 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 Xiaomi Telink TLSR825X et d’ajouter le répertoire à ma variable d’environnement $PATH. À partir de là, je pourrais créer le micrologiciel 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 le principal actuellement 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 facile de trouver la partie du code qui modifie le nom du périphérique Bluetooth. Si vous allez les parsemer dans toute la maison, voir quelque chose comme « ATC_BEDROOM » sera certainement plus utile que le schéma de nommage par défaut qui utilise les derniers caractères de l’adresse MAC.

Extraction des données

Maintenant, pour être clair, vous n’avez pas besoin installer le micrologiciel d’Aaron pour utiliser les données de ces thermomètres dans vos propres projets. Il y a au moins un outil qui vous permet de tirer la température, l’humidité et le niveau de la batterie des capteurs hors de la boîte, et ils sont également pris en charge dans ESPHome. Mais le problème avec le firmware d’origine est que vous devez vous connecter à chaque capteur pour lire ses données, ce qui est un processus lent et énergivore. L’une des principales améliorations du 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 renifler les valeurs directement sans établir de connexion ou de couplage.

À cette fin, il existe quelques packages qui valent la peine d’être examinés. Au moment d’écrire ces lignes, il y a une demande d’extraction pour ajouter la prise en charge du micrologiciel ATC à l’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 des publicités BLE. Sur la base de quelques exemples inclus dans le projet, j’ai créé 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)

Fais-le c’est tout

Si vous ne pouvez pas le dire, je vraiment comme le firmware personnalisé d’Aaron Christophel pour le Xiaomi LYWSD03MMC. Autant que je sache, il n’y a absolument aucune raison de ne pas l’installer si vous avez déjà certains de ces thermomètres qui traînent. Dans son état actuel, il vous donne un meilleur contrôle sur le matériel et ce que vous pouvez en faire, et les fonctionnalités actuellement en phase de planification promettent d’aller encore plus loin. Pouvoir enregistrer localement les données de température sur le thermomètre et les télécharger via BLE à une date ultérieure est certainement quelque chose à surveiller.

Pour 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 pour eux, je ne serais pas surpris si quelque chose vous venait après avoir passé un après-midi à pirater leur firmware.

->Google Actualités

Rate this post
Publicité
Article précédentQu’arrive-t-il à Kisaki Tetta à la fin ?
Article suivantLa crypto-monnaie ReFi Xrp Classic développe une technologie de blockchain respectueuse de l’environnement

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici