Abrufen von Daten von unserer Xiaomi Smart Scale mit Raspberry Pi
Wenn Sie eine Xiaomi Smart Scale-Waage besitzen, befolgen Sie die Schritte in diesem Dokument und Sie werden in der Lage sein, Ihr Gewicht von einem Raspberry Pi abzulesen, Durch die Verbindung über Bluetooth speichern wir die Datensätze in einer MySQL-Datenbank, und wenn wir wollen, können wir sie super einfach mit Grafana ausnutzen! Ich werde Ihnen eine Reihe von Dokumenten mit auf den Weg geben, die ich sehr interessant finde, um Informationen von verschiedenen Geräten zu erhalten, die unser Leben steuern und es auf supercoole Weise visualisieren!
Datenbank,
Deshalb, Wir benötigen einen Raspberry Pi mit installiertem und aktualisiertem Raspbian. Wenn wir dann keinen Datenbankserver haben, müssen wir MySQL und optional den Client installieren, um die Datenbank zu verwalten, sonst, sehr einfach, wenn wir entfernte Basen dieses Computers aus der Ferne verwalten möchten, können wir dies von einem Windows mit HeidiSQL aus tun. Nicht schlecht, um MySQL zu installieren:
[Quellcode]sudo apt-get install mysql-server mysql-client[/Quellcode]
Nach der Installation, wir können uns jetzt mit unserem MySQL verbinden, Erstellen einer Datenbank, und erstellen Sie eine Tabelle, in der wir die Wägeprotokolle speichern, Das ist ganz einfach, Nehmen wir an, es hat 2 Felder, eine erste, die dort aufbewahrt wird, wo das Gewicht als "Peso" bezeichnet wird’ Wie könntest du nicht, und ein anderer mit dem Namen "created_at’ , die mit dem Datum gefüllt wird, an dem das Skript ausgeführt wird. Wir tun dies mit:
[Quellcode]mysql -u root -p
Erstellen einer Datenbank NOMBRE_BASE_DATOS;
TABELLE 'NOMBRE_TABLA' ERSTELLEN (
DEZIMALZAHL 'Gewicht'(4,2) NICHT NULL,
'created_at' ZEITSTEMPEL NICHT NULL STANDARDMÄSSIG CURRENT_TIMESTAMP BEI AKTUALISIERUNG CURRENT_TIMESTAMP
)
;
[/Quellcode]
Und das ist es, was wir geschaffen haben werden, Ja? Unser Tisch, auf dem wir unser ganzes Gewicht lagern werden! Und mit wenig Zeit werden wir in der Lage sein, zu analysieren und zu sehen, ob wir zunehmen oder nicht!!!
Bluetooth,
Nach der Vorbereitung der DB, nun werden wir den Bluetooth-Zugang unseres Raspberry Pi zur Xiaomi Smart Scale konfigurieren, Wir installieren die Anforderungen für die Verwendung von Bluetooth mit Python, Ausgeführte:
[Quellcode]sudo apt-get install bluez python-bluez python-mysqldb[/Quellcode]
Bevor Sie fortfahren, wenn wir keinen Raspberry Pi verwenden 3, Wir müssen einen kleinen Bluetooth-Dongle anschließen, um eine Verbindung zur Waage herstellen zu können, um zu überprüfen, ob wir es bereit haben, Wir führen den folgenden Befehl aus, der die MAC-Adresse unseres Bluetooth-Geräts zurückgeben sollte, wenn sie vom Pi erkannt wurde:
[Quellcode]Er war in der Tool-Entwicklung tätig[/Quellcode]
Wir können versuchen, zu scannen und zu sehen, welche Bluetooth-Geräte wir finden:
[Quellcode]HiTool Scan[/Quellcode]
Skript,
Wir müssen das folgende Python-Skript erstellen, das sich mit unserer Waage verbindet, Das Skript, das ich eingefügt habe, ist eine Modifikation von este en GitHub. En mi caso lo llamaré lee_bascula.py:
[Quellcode]Importieren von Blescan
SYS importieren
Zeit des Imports
Importieren Sie bluetooth._bluetooth als Bluez
dev_id = 0
Socke = bluez.hci_open_dev(dev_id)
blescan.hci_le_set_scan_parameters(Socke)
blescan.hci_enable_le_scan(Socke)
measured_anterior = 0
versuchen:
während Wahr:
returnedList = blescan.parse_events(Socke, 1)
if len(returnedList) > 0:
(mac, UUID, Haupt, kleiner, txpower, RSSI) = zurückgegebene Liste[0].trennen(‘,’, 6)
# CAMBIAR LA DIRECCIÓN MAC
Wenn Mac == '88:0f:10:XX:XX:XX’ und UUID[0:22] == ‘01880f1096ab190d161d18′:
Maßeinheit = UUID[22:24]
gemessen = int((UUID[26:28] + UUID[24:26]), 16) * 0.01
Einheit = ”
if measureunit.startsmit((’03’, 'b3')): Einheit = 'Pfund’
if measureunit.startsmit((’12’, 'b2')): Einheit = 'Jin’
if measureunit.startsmit((’22’, 'A2')): Einheit = 'Kg’ ; gemessen = gemessen / 2
if Einheit:
wenn gemessen != measured_anterior:
drucken("Gemessen : %s %s" % (gemessen, Einheit))
measured_anterior = gemessen
MySQLdb importieren
db = MySQLdb.connect("127.0.0.1","Wurzel","CONTRASEÑA_ROOT_MYSQL","NOMBRE_BASE_DATOS")
cursor = db.cursor()
cursor.execute("""IN NOMBRE_TABLA EINFÜGEN (Peso) WERTE (%s) """,(gemessen))
db.commit()
Zeit.Schlaf(2)
außer KeyboardInterrupt:
sys.exit(1)[/Quellcode]
Wenn wir uns das Skript genau ansehen und ein paar Änderungen vornehmen, wird es sofort laufen! Sie müssen die MAC-Adresse Ihrer Waage ändern, das Passwort des MySQL-Root-Benutzers, der Name des BD und sonst wenig! Wir können versuchen, es mit dem folgenden Befehl auszuführen, der darauf hört, dass sich jemand wiegt, Es zeigt jedes Mal jedes Mal an, wenn Sie auf die Waage steigen, und abgesehen davon, dass es Ihnen in einer Nachricht das Gewicht anzeigt, Es wird Sie in die MySQL-Datenbank bringen, die wir Ihnen sagen. Versuchen:
[Quellcode]sudo python /home/pi/lee_bascula.py[/Quellcode]
Und jetzt, Wenn alles gut geht, Wir müssen dafür sorgen, dass der Raspberry Pi beim Neustart das Skript direkt lädt und wir es fertig haben! Wir machen es mit cron und fügen:
[Quellcode]crontab -e
@reboot sudo python /home/pi/lee_bascula.py[/Quellcode]
Grafik,
Wenn wir uns erinnern, In diesem vorherigen Dokument, Wir haben gesehen, wie man Grafana zusammenbaut, Wenn Sie es aufgeklappt haben, großartig, da wir es verwenden werden, um die Daten zu visualisieren und einige unglaubliche Paneele zu erstellen! Und wenn Sie es nicht installiert haben… Ich empfehle Ihnen, es zu installieren, da wir es verwenden werden, Befolgen Sie die Schritte im Dokument, um es auf einem Computer zu installieren (virtuell) dediziert oder sogar auf dem Raspberry Pi selbst.
Nach dem Montieren von Grafana, das Übliche, was wir tun sollten, ist, ein neues Dashboard zu erstellen, In diesem einfachen Beispiel erstellen wir ein grafisches, das die MySQL-Datenbank abfragt, um uns die von uns gespeicherten Datensätze anzuzeigen, Dann wird jeder das Diagramm nach seinen Wünschen anpassen. Aber zunächst einmal, Wir müssen eine MySQL-Datenquelle erstellen, um Abfragen von unseren Dashboards aus zu stellen. Um dies zu tun,, seit “Datenquellen” Wir klicken auf “Hinzufügen” und wir fügen eine Verbindung zu unserem MySQL-Server hinzu, der der Raspberry ist, Richten Sie die Verbindung korrekt ein und nehmen Sie mit “Retten & Test”,
Jetzt können wir unser Dashboard erstellen, Wir haben ein Graph Panel hinzugefügt, und bearbeiten Sie es, indem Sie auf den Titel klicken, Wir ändern alles, wie wir es für richtig halten, Farben, Information, Achsen… Aber in der “Metrik” Wir müssen das SELECT eingeben, das die Abfrage an die DB sendet, Wir spezifizieren so etwas wie:
[Quellcode]AUSWÄHLEN
UNIX_TIMESTAMP(created_at) Also time_sec,
Gewicht als Wert,
"Gewicht" als Metrik
FROM Neigung
WOBEI $__timeFilter(created_at)
BESTELLUNG NACH created_at, time_sec ASC[/Quellcode]
Und nichts, Nachdem Sie herumgefummelt haben, werden Sie feststellen, dass Sie einige coole Grafiken erstellen können, Natürlich, Sie müssen die Tabelle mit Datensätzen ausfüllen, Geben Sie also Zeit für Zeit!!! Dieser Beitrag ist, wie gesagt, ein erster Schritt in Richtung eines Wunders, das wir vollbringen können, Alle Teile des Puzzles zusammenfügen… Bis bald, Passt auf euch auf!!