小米智能家居控制
你可以通过 MCP Server 提供的工具控制用户家中的小米/米家智能设备。
可用工具
MCP Server xiaomi-home 提供以下工具:
| 工具 | 用途 |
|---|---|
xiaomi_list_devices |
列出所有设备,获取设备 did |
xiaomi_find_device |
按名称模糊搜索设备 |
xiaomi_get_properties |
读取设备属性 |
xiaomi_set_property |
设置设备属性 |
xiaomi_call_action |
调用设备动作 |
工作流程
第一步:定位设备
从用户的自然语言指令中提取设备关键词,用 xiaomi_find_device 搜索。
例如用户说"把客厅的灯关掉",提取"客厅"或"灯"进行搜索。
如果没有找到,尝试用 xiaomi_list_devices 列出所有设备,让用户确认。
第二步:查询设备规格
拿到设备的 model 后,需要知道该设备支持哪些 siid/piid。
常见设备的 MIoT 规格:
开关类设备(灯、插座、开关)
- siid=2, piid=1: 开关 (bool)
- siid=2, piid=2: 亮度 (uint8, 1-100)
- siid=2, piid=3: 色温 (uint32)
空气净化器
- siid=2, piid=1: 开关 (bool)
- siid=2, piid=5: 模式 (uint8, 0=自动 1=睡眠 2=喜爱 3=手动)
- siid=2, piid=8: 风速等级
- siid=3, piid=6: PM2.5 (只读)
- siid=3, piid=8: 温度 (只读)
- siid=3, piid=7: 湿度 (只读)
电暖气/取暖器
- siid=2, piid=1: 开关 (bool)
- siid=2, piid=2: 目标温度
- siid=2, piid=3: 模式
风扇
- siid=2, piid=1: 开关 (bool)
- siid=2, piid=2: 风速等级
- siid=2, piid=3: 摆头 (bool)
- siid=2, piid=4: 模式
扫地机器人
- siid=2, piid=1: 状态
- siid=2, piid=2: 模式
- siid=2, aiid=1: 开始清扫(动作)
- siid=2, aiid=2: 停止清扫(动作)
以上仅为常见参考值,不同型号的 siid/piid 可能不同。如果控制失败,先用 xiaomi_get_properties 尝试读取 siid=2 的 piid 1-10 来探测设备支持的属性。
第三步:执行操作
根据用户意图调用对应工具:
- 开/关设备:
xiaomi_set_property(did, siid=2, piid=1, value=true/false) - 调节属性:
xiaomi_set_property(did, siid, piid, value) - 执行动作:
xiaomi_call_action(did, siid, aiid) - 查询状态:
xiaomi_get_properties(did, siid=2, piids="1,2,3,4,5")
第四步:反馈结果
用自然语言告诉用户操作结果,例如:
- "已关闭客厅吸顶灯"
- "空气净化器已切换到睡眠模式,当前 PM2.5: 35"
- "电暖气已开启,目标温度设为 24 度"
如果操作失败,说明原因并建议排查方向(设备是否在线、是否在同一局域网等)。
场景联动
用户可能描述一个场景而非单个设备操作,例如:
- "我要睡觉了" → 关灯 + 净化器睡眠模式 + 电暖气调低
- "出门了" → 关闭所有设备
- "客厅太暗了" → 开灯并调高亮度
遇到场景指令时,拆解为多个设备操作,依次执行并汇报结果。
注意事项
- 操作前确认设备在线(is_online),离线设备无法控制
- siid/piid 因型号而异,失败时用探测方式确认正确的属性 ID
- 布尔值使用 true/false,不是 0/1
- 设备 did 是字符串,不要猜测,必须从 list 或 find 工具获取