米家温湿度计开启蓝牙广播

By | 2021年6月13日

上次的文章中,我们已经给米家温湿度计刷入了定制固件,现在便可以使用蓝牙广播模式来接收数据了。相比于蓝牙连接模式,监听广播模式不建立蓝牙连接,只是等待温湿度计的蓝牙广播,进一步节省了电量消耗。

1.修改固件设置

在开始之前,我们先连接上温湿度计微调一下设置。在有蓝牙功能的电脑上打开这个链接,点击 Connect 并选择对应的温湿度计。在连接成功后会显示如下的内容:

Advertising type 修改为 Atc 1441 ,并设置所希望的广播间隔时间 Advertising interval 和 广播功率 RF TX Power ,最后点击 Send Config 保存配置。

2.安装蓝牙相关软件

以下内容在 Debian 10 上测试通过,所有命令需要 root 权限。

安装 Python3 和蓝牙: apt install python3 bluez python3-pip

安装蓝牙依赖:pip3 install bluepy requests

期间如果遇到 bluepy 安装失败,运行 apt install libgtk2.0-dev 后再试

如果还有其他报错可以自行网络搜索解决,这里就不多涉及了。

3.下载源码并运行

项目地址:https://github.com/JsBergbau/MiTemperature2

使用 Git clone 或直接下载源码压缩包到本地解压,进入目录后 LYWSD03MMC.py 是我们所需要运行文件。在这里我们可以先简单尝试运行 ./LYWSD03MMC.py -a 来验证代码能够工作。不出意外的话,稍等片刻会出现类似如下的回显:

BLE packet: A4:C1:38:8F:C5:55 00 1110161a18a4c1388fc555013a495d0bde1a -82
Temperature: 31.4
Humidity: 73
Battery voltage: 3.038 V
RSSI: -82 dBm
Battery: 93 %

常用的运行参数如下:

--device AA:BB:CC:DD:EE:FF 只接收来自指定 MAC 地址的数据

--count N 接收到N次数据后退出脚本

-r 温度只保留一位小数

-http URL 每次获取到读数后请求指定的 URL

-call CALLBACK 每次获取到读数后运行指定程序

如果需要将读取到的数据写入到文件,作者给出了一个非常简单 bash 的例子,使用 -call 参数调用即可。

#!/bin/bash
# This is quite useful for testing
echo $@ >> data.txt
exit 0

更多的使用方法和说明可以参见作者的项目页面。

Leave a Reply

Your email address will not be published. Required fields are marked *

滑动到最右以进行验证 *