使用树莓派和小米蓝牙温湿度计可视化宿舍温湿度变化
最近入手了一个小米蓝牙温湿度计(最便宜的 LCD 屏那款,https://pvvx.github.io/ATC_MiThermometer/),可以连米家查看温湿度,但是没有历史记录功能。于是想着能不能连树莓派记录温湿度,Google 上一搜还真有,赶紧整一套玩玩。
最终将小米蓝牙温湿度计刷入定制固件发送温湿度数据广播,树莓派接收广播存入 InfluxDB 数据库,然后使用 Grafana 可视化。
刷入定制固件
参考:
使用 https://github.com/pvvx/ATC_MiThermometer 中的定制固件,老外非常 NB,还写了一套网页直接在线刷固件:https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html,在仓库中查看使用说明即可。
刷入定制固件后开启小米蓝牙温湿度计的蓝牙广播功能,这样树莓派不用连接就能接收温湿度广播数据了。由于周围环境较为可信且刻意调低了发射增益,我没有设置 PIN 码和加密,防止哪天忘了连不上。就是懒了
树莓派接收蓝牙广播
也已经有老外编写了完善的接收程序,直接查看仓库中说明使用即可:https://github.com/JsBergbau/MiTemperature2
存入 InfluxDB 数据库
安装并配置 InfluxDB 数据库
参考:https://blog.csdn.net/qq_41475058/article/details/108050440
1 | sudo apt install influxdb influxdb-client |
然后数据库服务器会在 8086 端口上开始监听。似乎需要添加 admin 用户才能开启权限认证,我只需要它能跑起来就行就没管。懒了
1 | influx # 默认连接到localhost:8086 |
将广播数据存入
编辑接收程序中的 sendToInflux.sh
如下:
1 | curl -i -u "pi:PASSWORD" -XPOST http://127.0.0.1:8086/write?db=mi\&precision=s --data-binary "AquaraBluetoothSensors,sensorname=$2 temperature=$3,calibratedHumidity=$4,voltage=$5,batteryLevel=$6 $7" |
然后 python3 LYWSD03MMC.py --atc --battery --callback sendToInflux.sh
即可开始接受广播数据并存入数据库。
此时在数据库中可以看到数据了:
1 | use mi # 进入 mi 数据库 |
还可以写个 service 来跑,比如编辑 /etc/systemd/system/MiTemperature.service
:
1 | [Unit] |
开启服务并开机自启
1 | sudo systemctl start MiTemperature.service |
Grafana 可视化
参考官方说明,使用 apt 安装:https://grafana.com/docs/grafana/v9.0/setup-grafana/installation/debian/#install-from-apt-repository
1 | sudo apt install apt-transport-https |
然后编辑 /etc/grafana/grafana.ini
更换服务端口,启动服务:
1 | sudo systemctl start grafana-server.service |
最后浏览器访问对应端口上的网页,默认用户名和密码是 admin,然后进行配置即可。Grafana 的功能蛮复杂的,有空可能单独开一篇来记录~
使用树莓派和小米蓝牙温湿度计可视化宿舍温湿度变化
https://blog.centaurus99.top/2022/09/07/使用树莓派和小米蓝牙温湿度计可视化宿舍温湿度变化/