1. 项目概述
去年折腾智能家居的时候,发现米家设备虽然便宜好用,但生态相对封闭。直到发现了Home Assistant这个开源平台,才真正打通了不同品牌设备之间的联动。今天就来详细说说如何把米家设备接入Home Assistant,实现更强大的自动化控制。
这个方案特别适合两类人:一是已经有不少米家设备,但觉得米家APP功能不够用的用户;二是想要把不同品牌智能设备统一管理的极客玩家。通过这个集成,你可以在一个界面控制所有设备,还能实现米家APP做不到的复杂自动化场景。
2. 环境准备与安装
2.1 硬件需求
首先需要明确的是,Home Assistant对硬件有一定要求。我建议至少准备以下配置:
- 树莓派4B或x86小主机(性能比树莓派强不少)
- 至少2GB内存(4GB更佳)
- 16GB以上存储空间
- 稳定的网络环境
实测下来,树莓派3B也能跑,但加载速度明显慢很多。如果设备数量超过20个,建议直接上x86平台。
2.2 系统安装
Home Assistant有几种安装方式:
- Home Assistant OS:最完整的方案,直接刷入SD卡或硬盘
- 容器版:适合已有Linux系统的用户
- Supervised:高级用户专用
新手建议直接用第一种方式。去官网下载对应镜像,用BalenaEtcher写入存储设备即可。第一次启动会花点时间初始化,喝杯咖啡等着就行。
注意:写入镜像前务必验证下载文件的SHA256校验值,我遇到过因镜像损坏导致的各种奇怪问题。
3. 米家集成配置
3.1 获取米家账号Token
这是最关键也最麻烦的一步。米家官方没有开放API,我们需要通过特殊方式获取账号Token:
- 在安卓手机或模拟器上安装"米家"APP
- 登录你的米家账号
- 使用ADB命令提取Token:
adb shell "cat /data/data/com.xiaomi.smarthome/shared_prefs/miio2.xml" | grep token
或者更简单的方法是用Python脚本模拟登录:
from miio import CloudService cloud = CloudService(username='你的账号', password='你的密码') print(cloud.get_token())重要提示:这个Token相当于账号密码,务必妥善保管。建议在获取后立即在HA配置中使用,然后删除本地记录。
3.2 配置Home Assistant
在HA的configuration.yaml中添加以下配置:
xiaomi_miio: username: 你的米家账号 token: 上一步获取的Token servers: cn # 如果是中国区账号保存后重启HA服务。如果一切正常,在"配置->设备与服务"里应该能看到米家设备自动出现了。
4. 设备控制与自动化
4.1 常见设备类型支持
目前HA对米家设备的支持情况:
| 设备类型 | 支持程度 | 备注 |
|---|---|---|
| 智能插座 | ★★★★★ | 完美支持 |
| 灯泡 | ★★★★☆ | 色温调节可能有问题 |
| 传感器 | ★★★★☆ | 需要轮询 |
| 空调伴侣 | ★★★☆☆ | 部分功能受限 |
| 扫地机器人 | ★★☆☆☆ | 仅基础功能 |
4.2 创建自动化场景
HA最强大的就是自动化功能。举个例子,实现"当温度高于28度且有人在房间时自动开空调":
automation: - alias: "高温自动开空调" trigger: - platform: numeric_state entity_id: sensor.temperature_158d0001 above: 28 condition: - condition: state entity_id: binary_sensor.motion_158d0002 state: "on" action: - service: climate.turn_on entity_id: climate.air_conditioner - service: climate.set_temperature entity_id: climate.air_conditioner data: temperature: 264.3 界面定制
HA的Lovelace UI可以高度自定义。这是我常用的几个卡片配置:
type: entities entities: - entity: switch.plug_158d0001 name: 客厅台灯 icon: mdi:lamp - entity: sensor.temperature_158d0002 name: 卧室温度 graph: line5. 常见问题排查
5.1 设备无法显示
如果设备没有自动出现,可以尝试:
- 检查Token是否正确
- 确认账号区域设置(cn/hk等)
- 在集成页面手动添加设备ID
5.2 控制延迟高
米家设备通过云端通信,延迟是硬伤。解决方案:
- 对于支持本地控制的设备(如网关子设备),尽量走本地协议
- 降低轮询频率:
xiaomi_miio: scan_interval: 60 # 默认30秒
5.3 设备状态不同步
这是最常见的问题。我的经验是:
- 避免在米家APP和HA同时操作同一设备
- 对关键设备设置状态轮询:
sensor: - platform: template sensors: plug_power: value_template: "{{ states.switch.plug_158d0001.attributes.power | float }}" unit_of_measurement: "W"
6. 进阶技巧
6.1 使用本地协议
部分设备支持本地控制,速度更快更稳定。需要获取设备token和IP:
xiaomi_miio: devices: - host: 192.168.1.100 token: abcdef1234567890 name: 我的台灯6.2 与Node-RED集成
对于复杂自动化,可以结合Node-RED:
- 安装Node-RED插件
- 创建MQTT节点订阅设备状态
- 设计流程图实现复杂逻辑
6.3 备份配置
HA配置很重要,建议定期备份:
# 使用内置快照功能 ha backups new --name "before_upgrade"或者手动备份config文件夹:
tar -czvf ha_backup_$(date +%Y%m%d).tar.gz /path/to/config折腾智能家居最痛苦的就是设备掉线。经过多次实践,我发现给所有智能设备分配静态IP能解决90%的连接问题。另外,HA的自动发现功能有时会抽风,关键设备建议都手动配置一次。