news 2026/6/15 17:33:50

手把手教你用树莓派+HA抓取小米温湿度计2代数据(附密钥获取避坑指南)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用树莓派+HA抓取小米温湿度计2代数据(附密钥获取避坑指南)

树莓派+HomeAssistant破解小米温湿度计2代全流程实战

去年夏天,当我发现家里三个房间的温湿度数据需要手动记录时,第一反应是找现成的智能设备解决方案。但市面上成套的智能家居系统要么价格昂贵,要么需要依赖厂商服务器——直到我发现抽屉里闲置的树莓派4B和小米温湿度计2代这对黄金组合。本文将分享如何用开源方案实现本地化数据采集,重点解决两个核心痛点:逆向获取蓝牙广播密钥的详细步骤,以及处理树莓派蓝牙扫描时的各种异常情况。

1. 硬件与软件环境准备

工欲善其事,必先利其器。我们需要准备以下硬件设备:

  • 树莓派3B+/4B(推荐4B因蓝牙性能更稳定)
  • 小米温湿度计2代(型号LYWSD03MMC)
  • 支持蓝牙的电脑(用于密钥提取)

软件环境方面需要:

# 基础系统要求 OS: Raspberry Pi OS (64-bit) HomeAssistant版本: 2023.5或更新 蓝牙协议栈: BlueZ 5.55+

常见问题排查表:

现象可能原因解决方案
蓝牙服务启动失败内核驱动冲突sudo systemctl restart bluetooth
扫描不到设备蓝牙适配器未启用rfkill unblock bluetooth
信号强度不稳定2.4GHz频段干扰关闭周边WiFi路由器

提示:建议在树莓派上安装散热风扇,持续蓝牙扫描会导致CPU温度升高

2. 逆向获取加密密钥实战

小米温湿度计2代采用AES-128加密广播数据,传统抓包方式无法直接解析。通过Chrome浏览器的Web Bluetooth API,我们可以绕过官方APP直接与设备通信。

操作步骤:

  1. 在电脑Chrome访问Telink Flasher工具页面
  2. 点击Connect按钮,选择"LYWSD03MMC"设备
  3. 配对成功后,依次点击:
    • "Do activation"获取32位密钥
    • "Read Characteristic"验证数据有效性

关键代码解析:

// 核心Web Bluetooth调用逻辑 device.gatt.connect() .then(server => server.getPrimaryService(SERVICE_UUID)) .then(service => service.getCharacteristic(CHARACTERISTIC_UUID)) .then(characteristic => characteristic.readValue())

常见错误处理:

  • 配对被拒绝:长按温湿度计按钮重置蓝牙状态
  • 密钥显示不全:更换Chrome版本或使用Edge浏览器
  • 连接超时:确保设备距离电脑不超过1米

3. 树莓派蓝牙扫描技巧

获取MAC地址是后续配置的关键,但树莓派的蓝牙扫描常会遇到各种问题。以下是优化后的扫描流程:

# 先停止可能冲突的服务 sudo systemctl stop bluetooth # 使用hcitool进行低层扫描 sudo hcitool lescan --duplicates | grep LYWSD03MMC

扫描参数优化建议:

  • 将温湿度计放在树莓派30cm范围内
  • 关闭周边其他蓝牙设备
  • 使用USB延长线避免信号干扰

如果常规扫描失败,可以尝试主动唤醒设备:

# wakeup_thermo.py import pygatt adapter = pygatt.GATTToolBackend() adapter.start() device = adapter.connect('AA:BB:CC:DD:EE:FF') device.char_write(0x0038, bytearray([0x01]))

4. HomeAssistant高级配置

在Passive BLE Monitor集成基础上,推荐以下增强配置:

# configuration.yaml 片段 ble_monitor: devices: - mac: 'A4:C1:38:12:34:56' encryption_key: 'abc123def456abc123def456abc12345' temperature_unit: C decimals: 1 use_median: true active_scan: false discovery: true

数据校准技巧:

  • 温度补偿:对比水银温度计读数设置offset参数
  • 湿度校准:使用饱和盐溶液进行三点校准
  • 电量检测:电压值转换为百分比需自定义传感器

注意:广播间隔默认10分钟,修改需要刷写自定义固件

最后分享一个真实案例:我在书房部署时发现数据更新延迟严重,最终发现是金属书架造成的信号衰减。改用zigbee2mqtt桥接后,不仅解决了延迟问题,还将传感器续航从1年延长到2年——这或许就是开源硬件最迷人的地方,永远有更好的解决方案等着你去发现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 17:32:47

B站硬核会员AI答题神器:3分钟完成100题挑战的终极指南

B站硬核会员AI答题神器:3分钟完成100题挑战的终极指南 【免费下载链接】bili-hardcore bilibili 硬核会员 AI 自动答题脚本,直接调用 B 站 API,非 OCR 实现 项目地址: https://gitcode.com/gh_mirrors/bi/bili-hardcore 还在为B站硬核…

作者头像 李华
网站建设 2026/6/15 17:32:47

头部AI论文写作工具势力榜(2026 深度测评)

基于综合性能、学术适配度、用户口碑和功能完整性,以下是当前主流AI论文写作工具的权威排名,按综合推荐指数从高到低排列,并标注核心优势与适用场景。🏆 第一梯队:全流程学术解决方案(★★★★★&#xff0…

作者头像 李华
网站建设 2026/6/15 17:31:50

色彩管理的革命:OpenColorIO-Config-ACES如何重塑影视后期工作流

色彩管理的革命:OpenColorIO-Config-ACES如何重塑影视后期工作流 【免费下载链接】OpenColorIO-Config-ACES 项目地址: https://gitcode.com/gh_mirrors/op/OpenColorIO-Config-ACES 想象一下这样的场景:一部电影由五个不同的摄影机品牌拍摄&…

作者头像 李华
网站建设 2026/6/15 17:31:49

3步搞定Mac Boot Camp驱动:Brigadier让你的双系统安装变得简单

3步搞定Mac Boot Camp驱动:Brigadier让你的双系统安装变得简单 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 还在为Mac电脑安装Windows驱动而烦恼吗?手动搜…

作者头像 李华
网站建设 2026/6/15 17:25:51

如何快速获取全球地理数据:world.geo.json项目的终极应用指南

如何快速获取全球地理数据:world.geo.json项目的终极应用指南 【免费下载链接】world.geo.json Annotated geo-json geometry files for the world 项目地址: https://gitcode.com/gh_mirrors/wo/world.geo.json 在数据可视化、地图应用开发和地理信息系统&a…

作者头像 李华