【HA】巧用Passive BLE Monitor,无感接入小米温湿度计2代数据
1. 为什么选择Passive BLE Monitor接入小米温湿度计?
如果你正在使用HomeAssistant搭建智能家居系统,想要接入小米温湿度计2代(LYWSD03MMC),Passive BLE Monitor可能是最优雅的解决方案。这个集成最大的特点就是完全被动监听——不需要与设备建立双向连接,不会影响温湿度计原有的工作模式,也不会增加它的电量消耗。
我最初尝试过其他方案,比如通过小米网关中转或者使用第三方插件主动连接设备。实测下来,这些方法要么需要额外硬件,要么会导致设备电量快速耗尽。而Passive BLE Monitor只需要一个蓝牙适配器,就能安静地"偷听"温湿度计广播出来的数据,真正做到无感接入。
这种方案特别适合:
- 不想拆机刷固件的用户
- 希望保持设备原厂稳定性的用户
- 需要长期稳定监测环境数据的场景
2. 准备工作与环境配置
2.1 硬件需求清单
在开始之前,确保你准备好以下硬件:
- 小米温湿度计2代(型号LYWSD03MMC)
- 运行HomeAssistant的主机(树莓派/NAS/PC等)
- 蓝牙适配器(如果是树莓派,内置蓝牙即可)
我用的是一台树莓派4B,实测内置蓝牙完全够用。如果你用的是虚拟机运行的HA,建议购买一个USB蓝牙5.0适配器,兼容性会更好。
2.2 软件环境检查
登录你的HomeAssistant后台,确认以下几个关键点:
- 系统版本在2023.5以上
- 已安装HACS(HomeAssistant社区商店)
- 蓝牙服务正常运行
可以通过SSH连接到主机,运行以下命令检查蓝牙状态:
hciconfig -a如果看到类似"UP RUNNING"的状态,说明蓝牙正常工作。如果显示"DOWN",需要先启用蓝牙:
sudo systemctl start bluetooth3. 安装Passive BLE Monitor集成
3.1 通过HACS安装
打开HA的侧边栏,进入HACS > 集成,点击右下角的"浏览并下载存储库"。在搜索框输入"Passive BLE Monitor",选择第一个结果(作者:Magalex)。
点击下载后,HACS会自动完成安装。这里有个小技巧:下载完成后不要急着重启,先继续后面的步骤,等所有配置都准备好后再一次性重启,可以节省时间。
3.2 配置蓝牙适配器
安装完成后,进入"配置" > "设备与服务",点击右下角"添加集成",搜索"Passive BLE Monitor"。
在配置界面中,最关键的是选择正确的蓝牙适配器地址。如果你不确定哪个是你的蓝牙适配器,可以在终端运行:
hcitool dev这个命令会列出所有可用的蓝牙设备,复制对应的MAC地址填入配置界面。
4. 获取设备密钥和MAC地址
4.1 使用Telink Flasher获取加密密钥
这是整个流程中最关键的一步。你需要一台带蓝牙的电脑(Windows/Mac/Linux都可以),按照以下步骤操作:
- 打开Chrome浏览器,访问Telink Flasher网页工具
- 点击"Connect"按钮,在弹出窗口中选择"LYWSD03MMC"
- 连接成功后,点击"Do activation"
- 等待几秒钟,页面会显示32位的加密密钥
注意:这个密钥只会显示一次,务必立即复制保存。我建议同时记录在HA的"机密"功能和本地文本文件中,以防丢失。
4.2 扫描获取MAC地址
保持温湿度计处于正常工作状态,在HA主机上打开终端,依次输入:
bluetoothctl scan on这时会开始扫描周围的蓝牙设备。找到名为"LYWSD03MMC"的设备,记录它的MAC地址。这个过程可能需要10-20分钟,如果长时间没找到,可以尝试:
- 将温湿度计靠近蓝牙适配器
- 关闭其他可能干扰的蓝牙设备
- 重启蓝牙服务后重新扫描
5. 完整配置流程详解
5.1 添加设备到Passive BLE Monitor
回到HA的Passive BLE Monitor集成界面,点击"Add device",在弹出窗口中:
- 第一栏输入MAC地址(格式如:A4:C1:38:12:34:56)
- 第三栏输入之前获取的32位加密密钥
- 其他选项保持默认
- 点击提交
这里有个容易踩坑的地方:提交后界面看起来没有任何变化,其实这是正常的。你需要返回上一级,在设备列表中选择"--Devices--",然后再次提交。
5.2 等待数据出现
由于小米温湿度计是周期性广播数据(大约每10分钟一次),提交配置后需要耐心等待。我建议:
- 不要频繁刷新页面
- 可以将温湿度计放在蓝牙适配器附近
- 等待20-30分钟再检查
当数据开始出现时,你会在"Bluetooth Low Energy Monitor"的设备列表中看到温湿度计,点击进入就能查看实时数据。
6. 数据优化与高级配置
6.1 提高数据更新频率
默认情况下,温湿度计每10分钟才广播一次数据。如果你需要更实时的监测,可以通过以下方法优化:
- 唤醒设备:轻触温湿度计的按钮,它会立即广播一次数据
- 修改扫描间隔:在configuration.yaml中添加:
ble_monitor: scan_interval: 60 discovery: true这样集成会每分钟主动扫描一次,但注意会增加主机负担。
6.2 数据校准与单位设置
有时候传感器数据可能会有偏差,可以在配置中进行校准:
ble_monitor: devices: - mac: 'A4:C1:38:12:34:56' temperature_offset: 0.5 humidity_offset: -2还可以修改显示单位:
sensor: - platform: ble_monitor temperature_unit: F7. 常见问题排查
7.1 设备未出现怎么办?
如果等待30分钟后仍然看不到数据,可以尝试以下排查步骤:
- 检查蓝牙适配器是否正常工作
- 确认密钥和MAC地址输入正确(注意大小写)
- 重启HomeAssistant服务
- 尝试将集成删除后重新添加
7.2 数据不稳定怎么解决?
蓝牙信号容易受到干扰,如果发现数据时有时无:
- 缩短设备与蓝牙适配器的距离
- 避免将适配器放在金属物体附近
- 检查周围是否有其他2.4GHz设备干扰(如WiFi路由器)
- 考虑使用蓝牙信号中继器
我在书房部署时就遇到过这个问题,后来把树莓派从金属机柜里拿出来,信号立即稳定了。
8. 数据可视化与自动化
当数据稳定接入后,你可以创建精美的仪表盘。我习惯使用"实体卡片"来展示温湿度数据,配合历史图表观察变化趋势。
还可以设置自动化,比如当温度超过28℃时自动打开空调,或者湿度低于40%时启动加湿器。一个简单的自动化配置示例:
automation: - alias: "Turn on AC when too hot" trigger: platform: numeric_state entity_id: sensor.ble_temperature above: 28 action: service: switch.turn_on target: entity_id: switch.ac_power这种被动监听方案最大的优势就是稳定可靠。我的系统已经连续运行6个月,温湿度计依然使用原装电池,数据从未中断。相比那些需要主动连接的方案,Passive BLE Monitor确实是最省心省电的选择。
