Erste Daten aus unserer Skala Xiaomi Smart-Skala mit Raspberry Pi

Wenn Sie die Skala Xiaomi Smart-Skala haben die Schritte in diesem Dokument folgen und Ihr Gewicht von einem Raspberry Pi gelesen, von Bluetooth verbinden speichert in einer Datenbank Datensätze MySQL, und so, wenn wir können sie super einfach mit Grafana ausnutzen! Ich werde eine Reihe von Dokumenten hinterlassen, die ich für sehr interessant sind Informationen von verschiedenen Geräten zu bekommen, die unser Leben und Sicht auf eine super coole Art und Weise steuern!

 

Datenbank,

deshalb, Raspberry Pi wird ein installiert und aktualisiert mit Raspbian müssen. Dann, wenn wir eine Server-Datenbank haben müssen wir MySQL und optional Client installieren BD verwalten, andernfalls, sehr leicht, wenn wir diese Computer remote Basen remote verwalten können wir aus dem Windows mit HeidiSQL tun. gut, installieren MySQL:

sudo apt-get install mysql-server mysql-client

 

nach der Installation, und wir können unseren MySQL verbinden, Erstellen Sie eine Datenbank, und crears eine Tabelle, die Protokolle speichert Wiege, was es ist sehr einfach, sagen 2 Felder, ein erster, der dort sein wird, wo das Gewicht genannt wird ‚Gewicht‘ als, und ein weiterer Anruf ‚hergestellt in‘ die mit dem Datum abgeschlossen werden, wenn das Skript ausgeführt werden. wir tun:

mysql -u root -p
create database NOMBRE_BASE_DATOS;

CREATE TABLE `NOMBRE_TABLA` (
	`peso` DECIMAL(4,2) NOT NULL,
	`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
;

 

Und das ist, was wir geschaffen haben,, und? Unser Tisch, an dem wir speichern alle unser Gewicht! und bald können wir analysieren und sehen, ob oder nicht mästen!!!

 

Bluetooth,

Nach dem Verlassen vorbereitet BD, Jetzt konfigurieren Bluetooth Zugriff auf unsere Raspberry Pi auf der Skala Xiaomi Smart-Skala, Installieren Sie die Anforderungen für die Verwendung von Bluetooth mit Python, Laufen:

sudo apt-get install bluez python-bluez python-mysqldb

 

bevor Sie fortfahren, wenn wir nicht mit einem Raspberry Pi 3, wir verbinden einen kleinen Bluetooth-Dongle an die Waage anschließen, um sicherzustellen, dass wir bereit haben, Wir führen Sie den folgenden Befehl ein, dass wir die MAC-Adresse Ihres Bluetooth-Gerät zurückgeben sollte, wenn er die Pi erkannt hat:

hcitool dev

 

Wir können versuchen, zu scannen und zu sehen, was Bluetooth-Geräte finden:

hcitool scan

 

Skript,

Wir müssen den folgenden Python-Skript erstellen, die auf unsere Skala verbinden werden, Ich habe das Skript ist eine Modifikation este en GitHub. In meinem Fall werde ich anrufen lee_bascula.py:

import blescan
import sys
import time

import bluetooth._bluetooth as bluez

dev_id = 0

sock = bluez.hci_open_dev(dev_id)

blescan.hci_le_set_scan_parameters(sock)
blescan.hci_enable_le_scan(sock)

measured_anterior = 0

try:
   while True:
      returnedList = blescan.parse_events(sock, 1)
      if len(returnedList) > 0:
         (mac, uuid, major, minor, txpower, rssi) = returnedList[0].split(',', 6)
         # CAMBIAR LA DIRECCION MAC
         if mac == '88:0f:10:XX:XX:XX' and uuid[0:22] == '01880f1096ab190d161d18':
            measunit = uuid[22:24]
            measured = int((uuid[26:28] + uuid[24:26]), 16) * 0.01

            unit = ''

            if measunit.startswith(('03', 'b3')): unit = 'lbs'
            if measunit.startswith(('12', 'b2')): unit = 'jin'
            if measunit.startswith(('22', 'a2')): unit = 'Kg' ; measured = measured / 2

            if unit:
               if measured != measured_anterior:
                  print("measured : %s %s" % (measured, unit))
                  measured_anterior = measured
                  import MySQLdb
                  db = MySQLdb.connect("127.0.0.1","root","CONTRASEÑA_ROOT_MYSQL","NOMBRE_BASE_DATOS")
                  cursor = db.cursor()
                  cursor.execute("""INSERT INTO NOMBRE_TABLA (peso) VALUES (%s) """,(measured))
                  db.commit()
      time.sleep(2)

except KeyboardInterrupt:
sys.exit(1)

 

Wenn wir genau auf das Skript schauen ein paar Änderungen vornehmen, werden Sie laufen auf einmal! Sie müssen die MAC-Adresse Ihrer Waage ändern, das root-Passwort MySQL, der Name des BD und kaum etwas anderes! Wir können versuchen, den folgenden Befehl ausführen wird jemand zuhören trotz, ein Gewicht von jeweils jedes Mal, zeigen Sie auf der Waage und einen Teil des Gewichts in einer Mitteilung erklären, es bekommen in die Datenbank MySQL das wir sagen,. versuchen:

sudo python /home/pi/lee_bascula.py

 

und jetzt, wenn alles gut geht, wir tun, wenn die Raspberry Pi dann direkt das Skript geladen wird neu gestartet und haben es bereit! wir tun es mit cron und fügen:

crontab -e

@reboot sudo python /home/pi/lee_bascula.py

 

Grafik,

Wenn wir uns erinnern,, in diesem früheren Dokument, wir sahen, wie Grafana zu reiten, wenn Sie große bereitgestellt haben, wie wir verwenden, um die Daten anzuzeigen und uns unglaubliche Platten machen! Und wenn Sie nicht installiert haben… Ich empfehle Ihnen, es zu installieren und wir gehen verwenden, Im Anschluss an die Schritte in diesem Dokument für die Installation in einer Maschine (virtuell) mismamente gewidmet oder etwa das gleiche Raspberry Pi.

 

Nach Grafana montiert ist, üblich, was wir tun, ist ein neues Dashboard erstellen, In diesem einfachen Beispiel werden wir eine der Grafiktyp machen, dass die MySQL-DB uns zu zeigen, die Datensätze abfragen, werden wir gespeichert haben, dann passen Sie jedes Diagramm nach Ihren Wünschen. aber zuerst, wir müssen einen Datenquellentyp für MySQL-Abfragen aus unseren Armaturenbretter erstellen. dies zu tun, von „Datenquellen“ Presse „Hinzufügen“ und fügen Sie eine Verbindung zu unserem MySQL-Server ist die Himbeere, konfigurieren Sie die Verbindung korrekt und aufgezeichnet mit „sparen & Prüfung“,

 

Jetzt können wir unsere Dashboards erstellen, wir fügen Sie ein Panel-Typ Graph, und bearbeiten Sie sie, indem Sie auf den Titel klicken, Wir ändern alles, wie wir interessiert sind,, Farben, Informationen, Achsen… aber die Registerkarte „Metrik“ wir werden die SELECT-Abfrage an die Datenbank platzieren, Wir geben so etwas wie:

SELECT
UNIX_TIMESTAMP(created_at) as time_sec,
peso as value,
"Peso" as metric
FROM basculami
WHERE $__timeFilter(created_at)
ORDER BY created_at, time_sec ASC

 

 

und nichts, ein ratejo Nach bastelt Sie werden sehen, dass Sie ein paar coole Grafiken machen können, ja, Sie müssen die Tabelle mit Datensätzen füllen, so gibt es an der Zeit!!! Dieser Beitrag wie ich sage, ist ein erster Schritt zu einem Wunder, dass wir in der Lage sein werden,, die Zusammenführung alle Teile des Puzzles… sehen Sie bald, Achten Sie darauf, viel!!

 

Hector Herrero
Letzte Artikel von Hector Herrero (Alle anzeigen)