xiaomi-home

🏠 本地化极速米家设备控制

基于 python-miio 的本地化米家设备控制方案,支持 Token 自动提取与局域网直连,实现快速响应的智能家居自动化管理。

收藏
12k
安装
2.7k
版本
8.1.0
CLS 安全性认证2026-05-03
点击查看完整报告 >

使用说明

核心用法

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 哈希,该算法已不安全,虽为上游限制但需用户知晓。

安全解读

核心用法

xiaomi-home 是一个基于 python-miio 的本地化小米智能家居控制工具,允许用户通过局域网直接操控米家设备,无需依赖云端 API。主要功能包括:

  • 设备状态查询:使用 miiocli miotdevice 查看加湿器、电饭煲等设备运行状态
  • 开关控制:通过 MIOT 协议发送 set_properties 指令控制智能插座等设备的通断
  • 属性调优:调整设备工作模式(如加湿器档位、电饭煲烹饪程序)
  • Token 自动提取:内置 token_extractor.py 脚本,可从用户小米账号同步获取设备 IP 和 32 位 Token

显著优点

1. 响应速度快:纯局域网通信,避免了云端 API 的延迟和稳定性问题
2. 开箱即用:自动处理 Python 依赖冲突(如 click 版本问题),提供预设工作流模板

3. 中文原生支持:完整的中英文双语文档,贴合国内米家生态

4. 多设备兼容:支持智能插座、加湿器、电饭煲、摄像头、路由器等多种 MIOT 设备

潜在缺点与局限性

| 问题类别 | 具体表现 | 严重程度 |
|---------|---------|---------|
| **硬编码敏感信息泄露** | `references/my_private_devices.md` 包含真实设备 Token、IP 地址 | 🔴 严重 |
| **凭证收集风险** | Token 提取脚本收集用户小米账号密码并上传至云端 | 🔴 严重 |
| **数据外泄** | 设备列表、家庭布局、BLE 密钥等隐私信息传输至小米服务器 | 🔴 严重 |
| **弱加密算法** | 使用已存在安全漏洞的 RC4 算法加密通信 | 🟠 高 |
| **来源可信度低** | 个人开发者(T3 级别),GitHub 信息不完整 | 🟠 高 |

安全认证评分:D级(20/100),被评定为"危险级"。

适合人群

  • 技术极客:熟悉 Python 和网络安全、能自行审计代码的资深用户
  • 局域网隔离环境:设备完全处于内网、不与互联网直接连接的特殊部署场景
  • 已弃用风险承受者:明确了解 Token 泄露后果、愿意承担设备被劫持风险的用户

常规风险

1. 设备被远程控制:泄露的 32 位 Token 允许攻击者在同一局域网内直接操控热水器、摄像头等敏感设备
2. 账号凭证泄露:Token 提取脚本要求输入小米账号密码,存在中间人攻击和凭证窃取风险

3. 家庭隐私暴露:云端同步会泄露家庭布局、设备位置、使用习惯等敏感信息

4. 合规违规:违反 GDPR 数据最小化原则和凭证安全存储要求

使用建议

强烈不建议普通用户使用。如确需使用:

  • 立即删除 references/my_private_devices.md 并重置所有设备 Token
  • 改用本地手动输入 Token 方式,避免运行云端登录脚本
  • 将设备信息存储于环境变量或加密配置,而非明文 Markdown 文件
  • 在完全隔离的网络环境中运行,避免敏感设备(如摄像头)暴露

xiaomi-home 内容

references文件夹
scripts文件夹
手动下载zip · 12.1 kB
devices.mdtext/markdown
请选择文件