3步接入米家:用 Xiaomi Home Integration 搭出下班回家自动化
【免费下载链接】ha_xiaomi_homeXiaomi Home Integration for Home Assistant项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home
钥匙插进锁孔,玄关灯自动亮起,五分钟后空调已调到 24℃——这就是本文要帮你搭出来的场景。借助 Home Assistant 的米家集成(Xiaomi Home Integration),你可以把手机定位、门锁、灯光、空调串成一条下班回家自动化,从接入设备到指令路由逐步讲清。
动手前的一键核对清单
先把环境和组件状态过一遍。对照下表逐项打勾,全部通过再往下走:
| 核对项 | 通过标准 |
|---|---|
| Home Assistant Core 版本 | ≥ 2024.4.4 |
| Home Assistant Operating System | ≥ 13.0 |
| 米家集成是否已安装 | config/custom_components目录下存在xiaomi_home文件夹 |
| 小米账号 | 已登录且能正常浏览米家家庭 |
| 设备位置 | 设备与 Home Assistant 在同一局域网(走本地通道时必需) |
两种安装方式任选其一。下面这段命令把仓库拉到config目录并执行安装脚本,完成后重启 Home Assistant:
cd config git clone https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home cd ha_xiaomi_home ./install.sh /config./install.sh /config:把xiaomi_home组件复制到custom_components下,安装脚本详见 install.sh。- 日后想锁定版本,
git checkout v1.0.0切 tag 再跑一遍脚本即可。
如果你更习惯图形界面,就在 HACS 里搜索Xiaomi Home,进入详情页点 DOWNLOAD 一键安装。
装好后,路径是:设置 > 设备与服务 > 添加集成 > 搜索Xiaomi Home,用小米账号登录并勾选要导入的家庭。设备随即以实体形式出现在你的系统里。
指令怎么走:云端与本地通道选型对比
你发出的每一条指令,要么走小米云,要么走局域网直达设备。先说清 MQTT 是什么:一个"消息订阅-推送"服务,设备状态一变就主动通知集成,不用反复轮询。
| 维度 | 云端控制 | 本地控制 |
|---|---|---|
| 原理 | 向小米云 MQTT Broker 订阅状态,指令经小米云 HTTP 接口下发 | 经小米中枢网关内建 MQTT Broker 收发,局域网直达设备 |
| 响应速度 | 取决于外网往返 | 局域网内直达,更快更稳 |
| 硬件要求 | 无 | 小米中枢网关(固件 ≥ 3.3.0_0023)或内置中枢的设备 |
| 协议限制 | 基本支持全部品类(蓝牙、红外、虚拟设备除外) | 仅 IP 设备(WiFi / 网线),蓝牙 Mesh、ZigBee 设备仍走云端 |
| 适用人群 | 没有中枢网关、设备跨网络 | 有中枢网关、追求低延迟 |
开启方式:设置 > 设备与服务 > 已配置 > Xiaomi Home > 配置 > 更新局域网控制配置。另外,只要局域网里存在中枢网关,即便你开了局域网控制,集成也会优先走中枢通道,无需手动二选一。
选型一句话:有中枢网关就用本地,没有就用云端——两者都能完整支撑本文的自动化,差别只在响应快慢。
三步流水线:触发、过滤、动作可导入示例
任何一条 Home Assistant 自动化都是三段流水线:
- trigger(触发器):定义"什么时候开始",例如手机进入家庭地理围栏。
- condition(条件):负责拦截,只有条件全部满足才放行执行,例如限制在 17:00 之后。
- action(动作):按顺序逐个下发设备指令。
末尾的mode决定重复触发时的行为——设为single后,场景正在执行时新的触发会被直接忽略,避免空调被反复下发指令。
下面这份 YAML 可直接粘贴进"设置 > 自动化 > 新建 > 高级"导入,演示手机到家后依次开玄关灯、调空调、开主灯、启净化器:
alias: 下班回家自动化 trigger: - platform: device device_id: 你的手机设备ID domain: device_tracker type: enters zone: home condition: - condition: time after: "17:00" before: "23:00" action: - service: switch.turn_on target: entity_id: switch.玄关灯 - service: climate.set_temperature target: entity_id: climate.客厅空调 data: temperature: 24 - service: light.turn_on target: entity_id: - light.客厅主灯 - light.厨房灯 - service: fan.turn_on target: entity_id: fan.空气净化器 mode: singleplatform: device+type: enters:手机设备轨迹进入home地理围栏的那一刻触发。condition: time:把场景限制在 17:00–23:00 之间,白天路过门口不会误触发。mode: single:同一时间只允许一个实例在跑。
写之前先搞清"米家设备 → HA 实体"的映射规则。集成按 MIoT-Spec-V2(小米 IoT 平台给设备写的标准化功能说明书)自动转换,核心规则如下:
| 设备/属性特征 | 转换出的实体 |
|---|---|
| 可写的布尔属性(灯的开关) | Switch |
| 可写、无取值范围但有取值列表的属性(如风速档位) | Select |
| 可写、有取值范围的属性(如亮度) | Number |
| 只读属性(温湿度计的读数) | Sensor |
| 带温度控制功能的设备(空调、风扇类温控) | Climate |
| 无参数的 Action(扫地机的"开始清扫") | Button |
实体 ID 在"设置 > 开发者工具 > 状态"里按设备名搜索即可查到,自动化里照抄即可。
进阶玩法:延迟、天气分支与多账号共享
三个选做的增强,按需取用。
动作之间加延迟。部分设备(尤其经云端下发时)需要几秒响应,动作间插入delay可以避免指令"打架"。下面片段让空调在玄关灯开启 5 秒后再调温:
action: - service: switch.turn_on target: entity_id: switch.玄关灯 - delay: seconds: 5 - service: climate.set_temperature target: entity_id: climate.客厅空调 data: temperature: 24delay只暂停后续动作,不阻塞整条自动化的其他实例。
按天气自动选模式。用choose分支让空调自己"看天吃饭":室外温度高于 28℃ 就制冷 24℃,低于 15℃ 就制热 22℃。
action: - choose: - conditions: - condition: numeric_state entity_id: sensor.室外温度 above: 28 sequence: - service: climate.set_temperature target: entity_id: climate.客厅空调 data: temperature: 24 hvac_mode: cool - conditions: - condition: numeric_state entity_id: sensor.室外温度 below: 15 sequence: - service: climate.set_temperature target: entity_id: climate.客厅空调 data: temperature: 22 hvac_mode: heatchoose按顺序匹配,只执行第一个命中的分支,所以把温度区间写清楚、互不重叠。
多账号设备共享。家人各用各的小米账号?在集成页面点"添加中枢",再用第二个账号登录,勾选要导入的设备即可。不同账号的设备可以放进同一个区域统一管理,你的自动化因此能覆盖全屋设备。
排障速查表:三列定位问题
| 现象 | 可能原因 | 处理动作 |
|---|---|---|
| 设备无响应 | 设备离线 / 本地通道覆盖不到该协议设备 / 云端接口异常 | 在集成页面确认设备在线;蓝牙 Mesh、ZigBee 设备只能走云端,勿依赖本地控制;重启设备后重载集成 |
| 自动化不触发 | 地理围栏未生效、时间条件不满足、device_id写错 | 到"开发者工具 > 状态"核对设备轨迹实体当前值;临时移除condition再测,区分是触发问题还是过滤问题 |
| 状态不同步 | 设备上报延迟、实体转换规则过期 | 开启"配置 > Action 调试模式"手动发一条指令验证设备可达;改过实体转换规则后记得在配置页点"更新实体转换规则" |
完整问题反馈与反馈渠道见 贡献指南,版本演进见 更新日志。
收尾
下一步可以试试:把离家场景做成镜像自动化、给老人配一条"一键全关"的 Button、再结合天气分支让新风和空调联动。更多规则细节可回看 官方中文文档,装好后记得对照 更新日志 跟进新版本。
【免费下载链接】ha_xiaomi_homeXiaomi Home Integration for Home Assistant项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考