[ad_1]

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 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, 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 d’abord apporté des nouvelles de lui projet ambitieux pour créer un firmware open source pour ces capteurs à faible coût le mois dernier, et sans surprise, cela 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é.

Publicité

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 à moindre coût, j’ai décidé de commander un pack de thermomètres Xiaomi et de me lancer.

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 peut suivez cette voie si vous en avez besoin, 99 % des utilisateurs le seront grâce à l’outil de flashage extrêmement astucieux « 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 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.

Être à l’aise

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 sur 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. Qu’est-ce que ce paramètre en fait Les changements sont 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.

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 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.

Extraire les données

Maintenant, pour être clair, ce n’est pas le cas besoin pour installer le firmware 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 d’extraire 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 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 y a une pull request pour ajouter la prise en charge du firmware 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 j’ai 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)

Fais-le

Si tu ne peux pas le dire, je vraiment comme 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 disposez déjà de 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.

[ad_2] ->Google Actualités

4.3/5 - (22 votes)
Publicité
Article précédentMinecraft Armor Trims : utilisations, emplacements, recettes, plus
Article suivantCertaines des meilleures chaises de jeu sont en vente avant la fête du Travail

LAISSER UN COMMENTAIRE

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