Ottenere dati dalla nostra bilancia intelligente Xiaomi con Raspberry Pi

Se possiedi la bilancia Xiaomi Smart Scale, segui i passaggi in questo documento e sarai in grado di leggere il tuo peso da un Raspberry Pi, collegandoci via bluetooth memorizzeremo i record in un database MySQL, e quindi se vogliamo possiamo sfruttarli super facilmente con Grafana! Vi lascio con una serie di documenti che ritengo molto interessanti per ottenere informazioni da diversi dispositivi che controllano la nostra vita e la visualizzano in un modo super cool!

 

Banca dati,

Pertanto, avremo bisogno di un Raspberry Pi con Raspbian installato e aggiornato. Quindi, se non disponiamo di un server di database, dobbiamo installare MySQL e il client facoltativamente per gestire il database, altrimenti, molto facilmente se vogliamo gestire le basi remote di questo computer da remoto possiamo farlo da un Windows con HeidiSQL. Non male, per installare MySQL:

[Codice sorgente]sudo apt-get install mysql-server mysql-client[/Codice sorgente]

 

Dopo l'installazione, ora possiamo connetterci al nostro MySQL, Creare un database, e creare una tabella in cui memorizzeremo i record di pesatura, Che è molto semplice, diciamo che lo ha fatto 2 Campi, uno iniziale che sarà dove viene memorizzato il peso chiamato 'peso’ Come potresti non farlo, e un altro chiamato 'created_at’ che verrà riempito con la data in cui lo script viene eseguito. Lo facciamo con:

[Codice sorgente]mysql -u radice -p
Creare NOMBRE_BASE_DATOS database;

CREA TABELLA 'NOMBRE_TABLA' (
DECIMALE 'peso'(4,2) NON NULLO,
IL TIMESTAMP 'created_at' NON NULLO NON CURRENT_TIMESTAMP PREDEFINITO ALL'AGGIORNAMENTO CURRENT_TIMESTAMP
)
;
[/Codice sorgente]

 

E questo è ciò che avremo creato, Sì? Il nostro tavolo dove conserveremo tutto il nostro peso! E con poco tempo saremo in grado di analizzare e vedere se ingrassiamo o meno!!!

 

Connessione Bluetooth,

Dopo aver preparato il DB, ora configureremo l'accesso Bluetooth del nostro Raspberry Pi alla Xiaomi Smart Scale, installeremo i requisiti per utilizzare il bluetooth con Python, Corsa:

[Codice sorgente]Sudo apt-get install bluez python-bluez python-mysqldb[/Codice sorgente]

 

Prima di andare avanti, se non stiamo utilizzando un Raspberry Pi 3, Dobbiamo collegare un piccolo dongle Bluetooth per poterci connettere alla bilancia, per verificare che lo abbiamo pronto, eseguiamo il seguente comando che dovrebbe restituire l'indirizzo MAC del nostro dispositivo bluetooth se è stato riconosciuto dal Pi:

[Codice sorgente]Ha fatto lo sviluppo di strumenti[/Codice sorgente]

 

Possiamo provare la scansione e vedere quali dispositivi bluetooth troviamo con:

[Codice sorgente]Scansione HiTool[/Codice sorgente]

 

Copione,

Dobbiamo creare il seguente script Python che sarà quello che si connette alla nostra scala, Lo script che ho messo è una modifica di questo su GitHub. En mi caso lo llamaré lee_bascula.py:

[Codice sorgente]Importa blescan
Importa sistema
tempo di importazione

Importa bluetooth._bluetooth come Bluez

dev_id = 0

calzino = bluez.hci_open_dev(dev_id)

blescan.hci_le_set_scan_parameters(calzino)
blescan.hci_enable_le_scan(calzino)

measured_anterior = 0

provare:
mentre Vero:
returnedList = blescan.parse_events(calzino, 1)
Se Len(restituitoElenco) > 0:
(Mac, uuid, maggiore, minore, txpower, RSSI) = Elenco restituito[0].diviso(‘,’, 6)
# CAMBIAR LA DIRECCION MAC
if mac == '88:0f:10:XX:XX:XX’ e uuid[0:22] == ‘01880F1096AB190D161D18′:
measunit = uuid[22:24]
misurato = int((uuid[26:28] + uuid[24:26]), 16) * 0.01

unità = ”

if measunit.startswith((’03’, 'b3')): unità = 'libbre’
if measunit.startswith((’12’, 'b2')): unità = 'jin’
if measunit.startswith((’22’, 'A2')): unità = 'Kg’ ; Misurato = Misurato / 2

IF UNITÀ:
se misurato != measured_anterior:
Stampare("misurato : %s %s" % (misurato, unità))
measured_anterior = misurato
importare MySQLdb
db = MySQLdb.connect("127.0.0.1","radice","CONTRASEÑA_ROOT_MYSQL","NOMBRE_BASE_DATOS")
cursore = db.cursore()
cursore.execute("""INSERIRE IN NOMBRE_TABLA (peso) VALORI (%s) """,(misurato))
db.commit()
tempo.sonno(2)

tranne KeyboardInterrupt:
sys.exit(1)[/Codice sorgente]

 

Se guardiamo da vicino lo script con un paio di modifiche, lo farai funzionare subito! Dovrai modificare l'indirizzo MAC della tua bilancia, la password dell'utente root MySQL, il nome del BD e poco altro! Possiamo provare a eseguirlo con il seguente comando che ascolterà qualcuno a pesarsi, Mostrerà ogni pesata ogni volta che sali sulla bilancia e oltre a dirti in un messaggio il peso, ti metterà nel DB MySQL che ti stiamo dicendo. Provare:

[Codice sorgente]sudo python /home/pi/lee_bascula.py[/Codice sorgente]

 

Ed ora, Se tutto va bene, dobbiamo fare in modo che quando il Raspberry Pi si riavvia carica direttamente lo script e lo abbiamo pronto! Lo facciamo con il cron e aggiungiamo:

[Codice sorgente]crontab -e

@reboot sudo python /home/pi/lee_bascula.py[/Codice sorgente]

 

Grafica,

Se ci ricordiamo, in questo documento precedente, abbiamo visto come assemblare Grafana, Se lo hai aperto, fantastico dato che lo useremo per visualizzare i dati e creare pannelli incredibili! E se non lo hai installato… Ti consiglio di installarlo perché lo useremo, Seguire i passaggi nel documento per installarlo su un computer (virtuale) dedicato o anche sul Raspberry Pi stesso.

 

Dopo aver montato Grafana, la solita cosa che dovremmo fare è creare una nuova Dashboard, in questo semplice esempio ne faremo uno grafico che interrogherà il DB MySQL per mostrarci i record che abbiamo memorizzato, Quindi ognuno personalizzerà il grafico a proprio piacimento. Ma prima di tutto, dobbiamo creare un'origine dati MySQL per effettuare query dalle nostre dashboard. Per fare ciò,, poiché “Fonti dei dati” Faremo clic su “Aggiungere” e aggiungiamo una connessione al nostro server MySQL che è il Raspberry, Impostare correttamente la connessione e registrare con “Salvare & Test”,

 

Ora possiamo creare la nostra Dashboard, abbiamo aggiunto un pannello grafico, e modificalo cliccando sul suo titolo, Cambiamo tutto come meglio crediamo, Colori, informazione, Assi… ma nel “Metriche” dobbiamo inserire il SELECT che effettuerà la query al DB, Specifichiamo qualcosa come:

[Codice sorgente]SELEZIONARE
UNIX_TIMESTAMP(created_at) Quindi time_sec,
Peso come valore,
"Peso" come metrico
DA inclinazione
DOVE: $__timeFilter(created_at)
ORDINA PER created_at, time_sec ASC[/Codice sorgente]

 

 

E niente, Dopo aver armeggiato vedrai che puoi creare alcuni grafici interessanti, Certo, È necessario compilare la tabella con i record, Quindi dai tempo al tempo!!! Questo post, come ho detto, è un primo passo verso una meraviglia che stiamo per poter fare, Mettere insieme tutti i pezzi del puzzle… A presto, Prendetevi cura di voi stessi!!

 

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!