
从带有 Raspberry Pi 的小米智能秤中获取数据
如果您有小米智能秤,请按照本文档中的步骤作,您将能够从 Raspberry Pi 读取您的体重, 通过蓝牙连接,我们将记录存储在 MySQL 数据库中, 因此,如果我们愿意,我们可以使用 Grafana 非常轻松地利用它们! 我将给你留下一系列我认为非常有趣的文件,可以从控制我们生活的不同设备中获取信息,并以一种超酷的方式将其可视化!
数据库,
因此, 我们需要一个安装并更新了 Raspbian 的 Raspberry Pi. 然后,如果我们没有数据库服务器,则必须安装 MySQL 和客户端(可选)来管理数据库, 否则, 如果我们想远程管理这台计算机的远程基地,我们可以很容易地从 Windows 上使用 HeidiSQL 来完成. 不错, 安装 MySQL:
[源代码]sudo apt-get install mysql-server mysql-client[/源代码]
安装后, 我们现在可以连接到我们的 MySQL, 创建数据库, 并创建一个表格,我们将在其中存储称重记录, 这很简单, 假设它有 2 领域, 一个初始的,它将是存储重量的地方,称为 'peso’ 你怎么能不呢, 另一个叫“created_at’ 这将填充脚本执行的日期. 我们为此:
[源代码]mysql -u root -p
创建数据库NOMBRE_BASE_DATOS;
创建表 'NOMBRE_TABLA' (
DECIMAL 'weight'(4,2) 非 NULL,
'created_at' 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
;
[/源代码]
这就是我们将要创造的, 是的? 我们将存放所有重量的桌子! 而且用很少的时间,我们将能够分析并查看我们是否增加了体重!!!
蓝牙,
准备 DB 后, 现在我们将配置 Raspberry Pi 对小米智能秤的蓝牙访问, 我们将安装将蓝牙与 Python 配合使用的要求, 运行:
[源代码]sudo apt-get install bluez python-bluez python-mysqldb[/源代码]
在你继续之前, 如果我们不使用 Raspberry Pi 3, 我们必须连接一个小的蓝牙加密狗才能连接到秤, 验证我们是否已准备好, 我们执行以下命令,如果 Pi 已识别出我们的蓝牙设备的 MAC 地址,该命令应返回该地址:
[源代码]他做了工具开发[/源代码]
我们可以尝试扫描并查看我们找到的蓝牙设备:
[源代码]HiTool 扫描[/源代码]
脚本,
我们必须创建以下 Python 脚本,该脚本将连接到我们的秤, 我放置的脚本是对 这个在 GitHub 上. 就我而言,我称之为 lee_bascula.py:
[源代码]导入 BleScan
导入 SYS
导入时间
将 bluetooth._bluetooth 导入为 bluez
dev_id = 0
袜子 = bluez.hci_open_dev(dev_id)
blescan.hci_le_set_scan_parameters(袜子)
blescan.hci_enable_le_scan(袜子)
measured_anterior = 0
尝试:
while True:
returnedList = blescan.parse_events(袜子, 1)
如果 Len(returnedList) > 0:
(苹果电脑, uuid, 主要, 次要, txpower, RSSI) = 已退货列表[0].分裂(‘,’, 6)
# 更改 MAC 地址
如果 mac == '88:0f:10:二十:二十:二十’ 还有 uuid[0:22] == ‘01880F1096AB190D161D18′:
测量单位 = uuid[22:24]
测量 = int((uuid[26:28] + uuid[24:26]), 16) * 0.01
单位 = ”
如果 measunit.starts替换为((’03’, 'b3')): 单位 = 'lbs’
如果 measunit.starts替换为((’12’, 'B2')): 单位 = '金’
如果 measunit.starts替换为((’22’, 'A2')): 单位 = 'Kg’ ; 测量 = 测量 / 2
if 单位:
如果测量 != measured_anterior:
打印(“测量 : %s %s" % (量过的, 单位))
measured_anterior = 已测量
导入 MySQLdb
db = MySQLdb.connect("127.0.0.1",“根”,“CONTRASEÑA_ROOT_MYSQL”,“NOMBRE_BASE_DATOS”)
游标 = db.cursor()
cursor.execute 命令(“”“插入 NOMBRE_TABLA (重量) 值 (%s) """,(量过的))
db.commit 文件()
时间.sleep(2)
KeyboardInterrupt 除外:
sys.exit 的(1)[/源代码]
如果我们仔细观察脚本并进行一些修改,您将立即运行它! 您需要更改秤的 MAC 地址, MySQL root 用户的密码, BD 的名称和其他! 我们可以尝试使用以下命令来执行它,该命令将监听某人称量自己, 每次您踏上秤时,它都会显示每个称重,除了在消息中告诉您体重外, 它会将您放入我们告诉您的 MySQL 数据库中. 尝试:
[源代码]须藤 python /home/pi/lee_bascula.py[/源代码]
现在, 如果一切顺利, 我们必须在 Raspberry Pi 重新启动时直接加载脚本并准备好它! 我们使用 cron 来做这件事,并添加:
[源代码]crontab -e
@reboot sudo python /home/pi/lee_bascula.py[/源代码]
图形,
如果我们记得, 在上一个文档中, 我们了解了如何组装 Grafana, 如果你把它展开了,那就太好了,因为我们将使用它来可视化数据并制作一些令人难以置信的面板! 如果您尚未安装… 我建议您安装它,因为我们将使用它, 按照文档中的步骤将其安装到机器上 (虚拟) 专用的,甚至在 Raspberry Pi 本身上.
安装 Grafana 后, 通常我们应该做的是创建一个新的 Dashboard, 在这个简单的示例中,我们将制作一个图形化示例,该示例将查询 MySQL 数据库以向我们显示已存储的记录, 然后每个人都会根据自己的喜好自定义图表. 但首先, 我们必须创建一个 MySQL 数据源才能从我们的 Dashboard 进行查询. 为此,, 因为 “数据源” 我们将点击 “加” 然后我们添加一个到 MySQL 服务器的连接,即 Raspberry, 正确设置连接并使用 “救 & 测试”,
现在我们可以创建我们的 Dashboard, 我们添加了一个 Graph Panel, 并通过单击其标题对其进行编辑, 我们按照我们认为合适的方式改变一切, 颜色, 信息, 轴… 但在 “指标” 我们必须输入将对 DB 进行查询的 SELECT, 我们指定类似:
[源代码]选择
UNIX_TIMESTAMP(created_at) 所以time_sec,
weight 作为值,
“重量" 作为公制
FROM tilt (从倾斜)
其中 $__timeFilter(created_at)
按 created_at 排序, time_sec ASC[/源代码]
什么都没有, 摆弄之后,您会发现您可以制作一些很酷的图表, 答案是肯定的, 您需要在表格中填写记录, 所以,请花时间!!! 正如我所说,这篇文章是迈向我们将能够实现的奇迹的第一步, 把拼图的所有碎片放在一起… 一会见, 照顾好自己!!