Xiaomi Smart Scale gure balantza datuak lortzen
Xiaomi Smart Scale balantza baduzu, jarraitu dokumentu honeko urratsak eta zure pisua Raspberry Pi batetik irakur dezakezu, bluetooth bidez konektatuz, MySQL datu-base batean gordeko ditugu erregistratzeak, eta horrela, nahi badugu, oso erraz esploratu ditzakegu Grafanarekin! Dokumentu sorta bat uzten joango naiz, nire ustez gure bizitza kontrolatzen duten gailu desberdinen informazioa lortzeko eta modu super polit batean ikusteko oso interesgarriak direla!
Datu-base,
Hori dela eta, Raspbian instalatuta eta eguneratuta duen Raspberry Pi bat behar dugu. Ondoren, datu-base zerbitzaririk ez badugu, MySQL eta klientea, datu-basea kudeatzeko, beharrezkoa izango dugu, baina ez badugu, muy fácilmente si queremos administrar bases remotas de este equipo de forma remota podremos hacerlo desde un Windows con HeidiSQL. Ondo, para instalar MySQL:
[sourcecode]sudo apt-get install mysql-server mysql-client[/sourcecode]
Instalazioaren ostean, ya nos podemos conectar a nuestro MySQL, crear una Base de datos, y crears una Tabla donde almacenaremos los registros de pesaje, que es muy sencilla, digamos tiene 2 campos, uno inicial que será donde se guarde el peso llamado 'peso’ como no, y otro llamado 'created_at’ que se rellenará con la fecha cuando se ejecute el script. Lo hacemos con:
[sourcecode]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
)
;
[/sourcecode]
Y esto es lo que habremos creado, si? Gure taula, non pisua gordeko dugun! eta denbora gutxi pasa ondoren aztertu eta ikusi ahal izango dugu pisu handitu dugun ala ez!!!
Bluetooth,
DB prest utzi ondoren, orain gure Raspberry Pi-ko bluetooth sarbidea Xiaomi Smart Scale-ari konfiguratu egingo dugu, bluetooth erabiltzeko beharrezkoak instalatuko ditugu Python-rekin, exekutatuz:
[sourcecode]sudo apt-get install bluez python-bluez python-mysqldb[/sourcecode]
Jarraitzean aurretik, Raspberry Pi bat ez badugu erabiltzen 3, bluetooth dongle txiki bat konektatu beharko dugu eskalera konektatu ahal izateko, prest dugula egiaztatzeko, hurrengo agindua exekutatzen dugu, gure bluetooth gailuaren MAC helbidea itzuli beharko liguke, Pi-k aitortu badu:
[sourcecode]hcitool dev[/sourcecode]
Bluetooth gailu guztiak ikertzeko eta aurkitzeko probatu dezakegu:
[sourcecode]hcitool scan[/sourcecode]
Script,
Gure pisatzeko gailura konektatuko den Python skriptua sortu behar dugu, zuekin jartzen dudan skripta hau hornitua da hau GitHub-en. Nire kasuan, hau deituko diot lee_bascula.py:
[sourcecode]importatu blescan
importatu sys
importatu time
importatu bluetooth._bluetooth bezala 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
saia ezazu:
bitartean Beti:
returnedList = blescan.parse_events(sock, 1)
if len(returnedList) > 0:
(mac, uuid, major, minor, txpower, rssi) = returnedList[0].split(‘,’, 6)
# ALBOKA MAC-ARENTZAT ALDATU
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 != neurtutako_aurrera:
inprimatu("measured : %s %s" % (neurtutako, unidade))
neurtutako_aurrera = neurtutako
importatu 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) BALIOAK (%s) """,(neurtutako))
db.commit()
time.sleep(2)
except KeyboardInterrupt:
sys.exit(1)[/sourcecode]
Script-ean egin behar ditugun aldaketa batzuekin, laster martxan izango duzu! Zure pisuaren MAC helbidea aldatu beharko duzu, MySQL-eko root erabiltzailearen pasahitza, DBaren izena eta gutxiago! Hurrengo komandoarekin exekutatzen saiatuko gara, inork pisatzen duen bitartean entzungo duena, Pisatu bakoitzean erakutsiko du, pisatzen zarenean, eta gainean tresna bateko pisua ikusteko mezu bat bidaliko dizu., MySQL datu-basean sartuko duzue, esaten ari garena. Probatu:
[sourcecode]sudo python /home/pi/lee_bascula.py[/sourcecode]
Eta orain, dena ondo badoa, Raspberry Pi berrabiarazten duenean, zuzenean skriptua kargatu dezala eta prest izan dezagun! cron-en bidez egingo dugu eta gehituko dugu:
[sourcecode]crontab -e
@reboot sudo python /home/pi/lee_bascula.py[/sourcecode]
Grafiak,
Gogoratuz, dokumentu aurreko honetan, Grafana montatzeko modua ikusi genuen, bera baduzu zoragarria da, datuak bistaratzeaz eta painel ikaragarriak egiteaz arduratuko gara! Eta beraz, instalatuta badaukazu… instalatu dezazun gomendatzen dizut, erabiliko baitugu, dokumentu horretako pausoak jarraitu beharko dituzu makina batean (birtual) esleitua edo Raspberry Pi beraren gainean.
Grafana prest dagoenean, lo habitual que deberemos hacer es crear un nuevo Dashboard, en este simple ejemplo haremos uno de tipo gráfica que hará una consulta a la BD de MySQL para mostrarnos los registros que tenemos almacenados, luego cada uno personalizará el gráfico a su gusto. Pero antes de nada, debemos crear un origen de datos de tipo MySQL para hacer consultas desde nuestros Dashboards. Para ello, etik “Data Sources” pulsaremos en “Gehitu” y añadimos una conexión a nuestro servidor de MySQL que es la Raspberry, configuramos la conexión de forma correcta y grabamos con “Gorde & Test”,
Ahora ya podemos crear nuestro Dashboard, le añadimos un Panel de tipo Graph, y lo editamos al pulsar en su título, cambiamos todo como nos interese, colores, información, ejes… pero en la pestaña de “Metrika” BDari kontsulta egingo duen SELECT jarriko dugu, zerbait zehazten dugu bezala:
[sourcecode]SELECT
UNIX_TIMESTAMP(created_at) time_sec gisa,
peso balio gisa,
"Peso" metrika gisa
FROM basculami
WHERE $__timeFilter(created_at)
ORDER BY created_at, time_sec ASC[/sourcecode]
Eta ezer, tarte batean trasteatu ondoren, grafiko politak egin ditzakezula ikusiko duzu, eso sí, taula erregistroekin bete behar duzu, beraz denbora emateko denbora!!! Post hau, esaten dudan bezala, egingo dugun mirari bateko lehen urratsa da, puzleko pieza guztiak batzen… laster elkar ikusiko dugu, zaindu ongi!!












































