核心用法
Xiaomi Home 技能通过封装 miiocli 命令行工具,让用户能够以自然语言控制米家智能设备。核心工作流程分为三步:首先运行内置的 token_extractor.py 脚本,通过小米账号认证提取设备的 IP 地址和 32 位 Token;然后将设备信息登记到 references/devices.md 本地文件;最后通过自然语言指令(如"打开热水器""加湿器调到最大")触发对应的 MIOT 协议命令,实现局域网内的设备控制。
该技能预设了多种常见设备的操作模板,包括智能插座(热水器控制)、加湿器、电饭煲等。技术实现上,它通过 raw_command set_properties 或直接调用设备专用命令(如 cooker status)与设备通信,所有操作均在本地局域网完成,无需经过小米云端 API。
显著优点
本地化低延迟:直接通过局域网通信,响应速度远超云端方案,特别适合对实时性要求高的场景(如语音控制热水器开关)。开箱即用体验:自动处理 Python 依赖冲突(如 click 版本锁定),内置 Token 提取器省去用户手动抓包的繁琐步骤。隐私保护设计:设备 Token 本地存储不上云,账号密码通过 getpass 安全输入,支持 2FA 双因素认证。双语支持:完整的中英文文档和意图映射表,降低使用门槛。
潜在缺点与局限性
账号依赖:仍需小米账号密码完成初始 Token 提取,虽然支持 2FA 但增加了配置复杂度。设备覆盖有限:预设模板主要针对常见设备(插座、加湿器、电饭煲),新型或小众 MIOT 设备可能需要用户自行查阅 SIID/PIID 参数构造命令。网络环境要求:严格依赖局域网环境,跨 VLAN 或复杂网络拓扑可能导致设备不可达。T3 来源信任成本:个人开发者维护,长期更新和漏洞响应依赖社区贡献。
适合的目标群体
- 已拥有米家生态设备、希望实现本地化自动化的高级用户
- 对云端延迟敏感、追求极致响应速度的智能家居爱好者
- 注重隐私、不愿将设备控制权完全交给云端的用户
- 具备基础 Linux/命令行知识、能处理简单配置问题的技术用户
使用风险
Token 泄露风险:设备 Token 相当于设备密码,若 references/my_private_devices.md 被误提交到 Git 或备份不当,可能导致设备被未授权控制。网络隔离失效:本地 HTTP 服务器(127.0.0.1:31415)用于显示登录二维码,虽仅绑定 localhost,但在共享开发环境或容器逃逸场景下存在理论风险。依赖维护:python-miio 库的更新可能引入 breaking changes,需关注版本兼容性。MD5 密码传输:小米 API 强制要求 MD5 哈希,该算法已不安全,虽为上游限制但需用户知晓。