
Obtenir des données de notre Xiaomi Smart Scale avec Raspberry Pi
Si vous avez la balance Xiaomi Smart Scale, suivez les étapes de ce document et vous pourrez lire votre poids sur un Raspberry Pi, en se connectant via bluetooth, nous stockerons les enregistrements dans une base de données MySQL, et donc si nous le voulons, nous pouvons les exploiter super facilement avec Grafana! Je vous laisse avec une série de documents que je trouve très intéressants pour obtenir des informations à partir de différents appareils qui contrôlent notre vie et la visualisent d’une manière super cool!
Base de données,
Donc, nous aurons besoin d’un Raspberry Pi avec Raspbian installé et mis à jour. Ensuite, si nous n’avons pas de serveur de base de données, nous devons installer MySQL et le client éventuellement pour gérer la base de données, autrement, très facilement si on veut gérer des bases distantes de cet ordinateur à distance, on peut le faire depuis un Windows avec HeidiSQL. Pas mal, pour installer MySQL:
[Code source]sudo apt-get install mysql-server mysql-client[/Code source]
Après l’installation, nous pouvons maintenant nous connecter à notre MySQL, Création d’une base de données, et créer une table où nous stockerons les enregistrements de pesée, Ce qui est très simple, dis-le que c’est le cas 2 Champs, Un premier qui sera l’endroit où le poids est stocké appelé 'peso’ Comment pourriez-vous ne pas, et un autre appelé 'created_at’ qui sera rempli avec la date d’exécution du script. Nous le faisons avec:
[Code source]mysql -u racine -p
Créer une base de données NOMBRE_BASE_DATOS;
CRÉATION DE LA TABLE 'NOMBRE_TABLA' (
DECIMAL 'poids'(4,2) NON NUL,
'created_at' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP LORS DE LA MISE À JOUR CURRENT_TIMESTAMP
)
;
[/Code source]
Et c’est ce que nous aurons créé, Oui? Notre table où nous stockerons tout notre poids! Et avec peu de temps, nous serons en mesure d’analyser et de voir si nous prenons du poids ou non!!!
Bluetooth,
Après la préparation de la DB, nous allons maintenant configurer l’accès Bluetooth de notre Raspberry Pi à la Xiaomi Smart Scale, nous installerons les conditions requises pour utiliser Bluetooth avec Python, Course:
[Code source]Sudo apt-get install bluez python-bluez python-mysqldb[/Code source]
Avant d’aller plus loin, si nous n’utilisons pas de Raspberry Pi 3, Il faut connecter un petit dongle Bluetooth pour pouvoir se connecter à la balance, pour vérifier que nous l’avons prêt, nous exécutons la commande suivante qui devrait renvoyer l’adresse MAC de notre périphérique Bluetooth s’il a été reconnu par le Pi:
[Code source]Il a fait du développement d’outils[/Code source]
Nous pouvons essayer de scanner et voir quels appareils Bluetooth nous trouvons avec:
[Code source]HiTool Scan[/Code source]
Script,
Nous devons créer le script Python suivant qui sera celui qui se connectera à notre échelle, Le script que j’ai mis est une modification de ceci sur GitHub. En mi caso lo llamaré lee_bascula.py:
[Code source]Importer Blescan
Importer sys
Heure d’importation
Importez bluetooth._bluetooth en tant que Bluez
dev_id = 0
chaussette = bluez.hci_open_dev(dev_id)
blescan.hci_le_set_scan_parameters(chaussette)
blescan.hci_enable_le_scan(chaussette)
measured_anterior = 0
essayer:
tandis que True:
returnedList = blescan.parse_events(chaussette, 1)
Si Len(returnedList) > 0:
(Mac, uuid, majeur, mineur, txpower, RSSI) = renvoyéListe[0].fendre(‘,’, 6)
# CAMBIAR LA DIRECCION MAC
si mac == '88:0f:10:XX:XX:XX’ et uuid[0:22] == ‘01880F1096AB190D161D18′:
measunit = uuid[22:24]
Mesuré = int((uuid[26:28] + uuid[24:26]), 16) * 0.01
unité = ”
si measunit.startswith((’03’, 'b3')): unité = 'lbs’
si measunit.startswith((’12’, 'b2')): unité = 'jin’
si measunit.startswith((’22’, 'A2')): unité = 'Kg’ ; measured = mesuré / 2
si unité:
si mesuré != measured_anterior:
imprimer(« mesuré : %s %s" % (mesuré, unité))
measured_anterior = mesuré
importer MySQLdb
db = MySQLdb.connect("127.0.0.1",« racine »,« CONTRASEÑA_ROOT_MYSQL »,« NOMBRE_BASE_DATOS »)
curseur = db.cursor()
curseur.exécuter(« ""INSÉREZ DANS NOMBRE_TABLA (peso) VALEURS (%s) """,(mesuré))
db.commit()
temps.sommeil(2)
sauf KeyboardInterrupt:
sys.exit(1)[/Code source]
Si nous regardons de près le script en faisant quelques modifications, vous le ferez fonctionner immédiatement! Vous devrez modifier l’adresse MAC de votre balance, le mot de passe de l’utilisateur root MySQL, le nom du BD et rien d’autre! Nous pouvons essayer de l’exécuter avec la commande suivante qui écoutera que quelqu’un se pèse, Il affichera chaque pesée chaque fois que vous montez sur la balance et vous indiquera dans un message le poids, il vous mettra dans la base de données MySQL que nous vous indiquons. Essayer:
[Code source]sudo python /home/pi/lee_bascula.py[/Code source]
Et maintenant, Si tout se passe bien, il faut faire en sorte que lorsque le Raspberry Pi redémarre, il charge directement le script et qu’on l’ait prêt! Nous le faisons avec cron et ajoutons:
[Code source]crontab -e
@reboot sudo python /home/pi/lee_bascula.py[/Code source]
Graphique,
Si nous nous souvenons, dans ce document précédent, nous avons vu comment assembler Grafana, Si vous l’avez déplié, tant mieux car nous allons l’utiliser pour visualiser les données et faire des panneaux incroyables! Et si vous ne l’avez pas installé… Je vous recommande de l’installer comme nous allons l’utiliser, Suivez les étapes du document pour l’installer sur une machine (virtuel) dédié ou même sur le Raspberry Pi lui-même.
Après avoir fait monter Grafana, la chose habituelle que nous devrions faire est de créer un nouveau tableau de bord, dans cet exemple simple, nous allons en créer un graphique qui interrogera la base de données MySQL pour nous montrer les enregistrements que nous avons stockés, Ensuite, tout le monde personnalisera le tableau à son goût. Mais avant tout, nous devons créer une source de données MySQL pour effectuer des requêtes à partir de nos tableaux de bord. Pour ce faire,, depuis “Sources des données” Nous allons cliquer sur “Ajouter” et nous ajoutons une connexion à notre serveur MySQL qui est le Raspberry, Configurez correctement la connexion et enregistrez avec “Sauvegarder & Test”,
Nous pouvons maintenant créer notre tableau de bord, nous avons ajouté un panneau graphique, et modifiez-le en cliquant sur son titre, Nous changeons tout comme bon nous semble, Couleurs, information, Axes… mais dans le “Métrique” nous devons entrer le SELECT qui effectuera la requête à la base de données, Nous spécifions quelque chose comme:
[Code source]CHOISIR
UNIX_TIMESTAMP(created_at) Alors time_sec,
Poids en tant que valeur,
"Poids" en tant que métrique
DEPUIS l’inclinaison
OÙ __timeFilter $(created_at)
COMMANDER PAR created_at, time_sec ASC[/Code source]
Et rien, Après avoir bricolé, vous verrez que vous pouvez faire des graphiques sympas, Bien sûr, Vous devez remplir le tableau avec des enregistrements, Alors donnez du temps au temps!!! Ce post, comme je l’ai dit, est un premier pas vers une merveille que nous allons pouvoir faire, assembler toutes les pièces du puzzle… A bientôt, Prenez soin de vous!!