当前位置: 首页 > news >正文

手把手教你用树莓派+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年——这或许就是开源硬件最迷人的地方,永远有更好的解决方案等着你去发现。

http://www.rkmt.cn/news/1529972.html

相关文章:

  • 2026晋中装修设计落地能力排行榜——360㎡实景展厅保障“所见即所得” - 装企自媒体训练营辉哥
  • 高效清理Windows 11系统垃圾:Win11Debloat一键优化工具完全指南
  • GPT-4稀疏化真相:MoE架构下的参数激活与工程落地瓶颈
  • MPC8533E处理器L2缓存与DDR内存控制器配置优化实战
  • 2026年6月重庆钻石回收全攻略:5家主流平台深度测评 - 奢侈品交易观察员
  • PowerPC e200z1 OnCE调试模块实战:从状态机到CPUSCR操作全解析
  • 2026 洛阳黄金回收推荐:这 3 家正规门店靠谱又省心 - 资讯快报
  • Oracle 12c安装卡在INS-30131?别急着改注册表,先检查Windows这个服务
  • 14年前高考考上985的我们现在过得怎么样?
  • VisualCppRedist AIO:5分钟彻底解决Windows软件运行问题的终极方案
  • 如何快速分析英雄联盟比赛回放:免费开源工具终极指南
  • 科研采购的“不可能三角”,星元素甄选是如何打破的?
  • 终极Visual C++运行时修复指南:一劳永逸解决DLL缺失问题
  • GHelper终极指南:如何让华硕笔记本续航提升20%并彻底解决触控板误触问题
  • Mac M1/M2芯片和CentOS 9 ARM服务器上,手把手安装MongoDB 6.0.12(附mongosh配置)
  • AI新闻发布在外贸品牌全球传播中的实际应用与思路拆解
  • 5分钟终极指南:用TranslucentTB免费打造Windows透明任务栏
  • 从Thunderbird到Java程序:一份通用的163邮箱IMAP连接配置清单(附避坑点)
  • 2026年贵阳全屋舒适系统安装哪家好:地暖、中央空调、新风净水一站式方案对比 - 年度推荐企业名录
  • 告别密码记忆烦恼:KeePassXC-Browser 浏览器扩展让你的密码管理更智能
  • 避坑指南:Sqoop安装后一堆Warning?手把手教你配置sqoop-env.sh解决环境变量问题
  • Java计算机毕设之基于SpringBoot 的图书馆座位智能分配系统研发 数字化校园图书馆在线占座管理平台设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 2026南宁瓷砖空鼓修复公司排名TOP5权威甄选,南宁瓷砖空鼓修复公司盘点推荐,客厅、阳台、外墙、卫生间、厨房瓷砖空鼓翘边专业师傅持证上门维修,解决各类瓷砖问题 - 防水空鼓维修家
  • 2026考研网课机构排行榜:浙江新文道考研领跑浙江,十大品牌实力横评 - 936品牌测评网
  • 合肥旧包变现优选!2026包包回收无套路无隐形扣费 - 奢侈品回收评测
  • 别再折腾BIOS了!VMware ESXi 7.0/8.0开启CPU虚拟化支持的正确姿势
  • OBS Spout2插件实战秘籍:轻松实现高分辨率视频共享的终极神器
  • 告别手动配置:用Tcl脚本一键搞定Quartus与ModelSim的仿真环境关联
  • 别再手动查文献了!用TCMSP+PubChem搞定中药成分收集,附Excel模板
  • 跳出播放器思维,私有化视频会议平台EasyDSS一站式视频平台,重塑企业私有化融媒体/视频会议系统需求!