接入前设备准备
- 一台支持接入米家的空调
- 一台持续运行的 Windows 电脑(负责与空调进行局域网通信)
- 一台拥有公网 IP 的 VPS(用于部署中继服务)
环境准备
- Python 3.8+
- FastAPI(部署于 VPS )
- Nginx(用于反向代理 FastAPI,提供公网 HTTP/HTTPS Endpoint)
- (可选)域名及 HTTPS 证书
架构
本地电脑
┌────────────────────────────┐
│ ac_bridge.py │
│ │
│ 通过 miio 控制空调 │
│ 每 2 秒轮询 GET /ac-next │
└──────────────┬─────────────┘
│ HTTP
▼
VPS
┌────────────────────────────┐
│ FastAPI │
│ │
│ GET /ac-next │
│ POST /internal/send │
│ GET /internal/status │
└────────────────────────────┘
本地电脑负责通过局域网控制空调,同时定时向 VPS 查询是否有新的控制指令。Claude 只需要调用 VPS 提供的接口,无需直接访问本地电脑。
接入步骤
由于需要本地电脑进行局域网通信,请勿使用 WSL 运行。建议直接在 Windows 环境下执行。
1. 获取空调 Token
由于小米近期增加了登录验证码,目前 python-miio 自带的获取工具无法正常登录,因此需要使用第三方 Token 提取工具。
下载:
相关 Issue:
运行 token_extractor.exe 后:
- 输入小米账号密码登录。
- 登录成功后,会列出账号下所有设备。
-
找到对应空调,记录:
- Device IP
- Token
风险提示: 此方式属于非官方接口,小米账号如检测到异常登录,可能触发风控,请自行评估风险。
2. 安装 python-miio
安装依赖:
pip install python-miio
3. 测试局域网连接
执行:
miiocli miotdevice --ip <空调IP> --token <Token> info
如果能够正常返回设备信息,而不是报错,则说明本地电脑已经可以直接控制空调。
4. 准备部署信息
将以下信息整理好:
- 空调 IP
- Token
- VPS 地址(或域名)
- 是否需要 HTTPS
- 控制需求(例如开关机、温度、模式、风速等)
提供给 Claude 后,即可生成完整的项目代码,包括:
- FastAPI 中继服务
- Nginx 反向代理配置
- 本地
ac_bridge.py客户端 - API 接口定义
- 自动启动配置(可选)
5. 部署
部署完成后:
- 在 VPS 启动 FastAPI 服务。
- 配置 Nginx,将公网请求转发至 FastAPI。
- 在本地电脑启动
ac_bridge.py。 - 确认客户端能够正常轮询
/ac-next接口。 - 调用
/internal/send接口发送控制指令,验证空调是否能够正常响应。
部署成功后,Claude 仅需调用 VPS 提供的 HTTP API 即可远程控制空调。
已知问题
miiocli 本身有个click库版本兼容性bug(TypeError: argument of type 'bool' is not iterable),可通过 pip install "click<8.2" 解决