当前位置: 首页 > 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.jsqmd.com/news/1018139/

相关文章:

  • 2026晋中装修设计落地能力排行榜——360㎡实景展厅保障“所见即所得” - 装企自媒体训练营辉哥
  • GPT-4稀疏化真相:MoE架构下的参数激活与工程落地瓶颈
  • 保姆级教程:用VSCode+MinGW搭建C语言环境,刷透西工大NOJ这82道题
  • 高效清理Windows 11系统垃圾:Win11Debloat一键优化工具完全指南
  • MPC8533E处理器L2缓存与DDR内存控制器配置优化实战
  • PXD10 DMA中断与错误处理实战:TCD配置与调试指南
  • PowerPC e200z1 OnCE调试模块实战:从状态机到CPUSCR操作全解析
  • ANTs配准实战:从单张图像到批量处理,我的自动化脚本分享
  • 2026年6月重庆钻石回收全攻略:5家主流平台深度测评 - 奢侈品交易观察员
  • 释放极限竞速地平线全新可能:Forza Mods AIO 开源修改器深度探索
  • 2026 洛阳黄金回收推荐:这 3 家正规门店靠谱又省心 - 资讯快报
  • Oracle 12c安装卡在INS-30131?别急着改注册表,先检查Windows这个服务
  • 终极指南:用Mos为你的macOS鼠标打造丝滑滚动体验
  • 3分钟掌握MemcardRex:PS1游戏存档管理的终极解决方案
  • 14年前高考考上985的我们现在过得怎么样?
  • VisualCppRedist AIO:5分钟彻底解决Windows软件运行问题的终极方案
  • 如何快速分析英雄联盟比赛回放:免费开源工具终极指南
  • DDSP-SVC:高效智能歌唱语音转换系统,实现专业级音色变换
  • 猫抓浏览器嗅探工具:如何轻松下载网页视频的完整指南
  • 科研采购的“不可能三角”,星元素甄选是如何打破的?
  • 终极Visual C++运行时修复指南:一劳永逸解决DLL缺失问题
  • 华为海思软开岗三面复盘:项目经历是硬通货,八股算法反而没想象中那么卷
  • 全球地理数据快速获取指南:world.geo.json项目完整解析
  • VoicePitchAnalyzer:您的个人声音训练专家,免费掌握完美音高技巧
  • Biotin-Glucose葡萄糖-生物素探针生物素标记葡萄糖
  • GHelper终极指南:如何让华硕笔记本续航提升20%并彻底解决触控板误触问题
  • Mac M1/M2芯片和CentOS 9 ARM服务器上,手把手安装MongoDB 6.0.12(附mongosh配置)
  • AI新闻发布在外贸品牌全球传播中的实际应用与思路拆解
  • 魔兽世界插件开发终极指南:如何快速掌握API文档与宏工具
  • 深入解析e500核心架构:寄存器、中断与内存管理实战指南