接入前设备准备
-
一个支持红外遥控的哄睡玩偶
-
必须带原装红外遥控器
-
至少支持:
-
开机
-
拍打
-
调速
-
-
一个涂鸦生态 Wi-Fi 万能红外遥控器
-
一台中国大陆 VPS
- 海外 VPS 不可用,涂鸦中国区 API 会限制境外 IP 请求
-
2.4GHz Wi-Fi 网络
- 红外遥控器不支持 5GHz Wi-Fi
- 建议使用稳定路由器 Wi-Fi
- 不建议使用手机热点,断开后设备会离线
环境准备
- Python 3.8+
- FastMCP
- FastAPI(可选,用于扩展接口)
- 涂鸦 IoT 开发者账号
- 涂鸦中国区 Cloud API
- Nginx / Cloudflare Tunnel(用于暴露 MCP 服务)
- 一台中国大陆 VPS
架构
用户
↓
Claude
↓ MCP Connector
↓
VPS 上的 MCP Server
↓
涂鸦 Cloud API(中国区)
↓
涂鸦 Wi-Fi 红外遥控器
↓ 红外信号
哄睡玩偶
控制流程:
Claude 调用 MCP Tool
↓
MCP Server 根据工具生成控制指令
↓
调用涂鸦红外 API
↓
红外遥控器发送红外码
↓
玩偶执行动作
接入步骤
1. 硬件配网与红外学习
先给涂鸦 Wi-Fi 红外遥控器供电。使用手机完成:
-
下载「智能生活」App。
-
登录账号。
-
添加设备:
添加设备 → 万能遥控 → 红外遥控器 -
连接 2.4GHz Wi-Fi。
-
确认设备在线。
然后学习玩偶遥控码:设备页面 → 添加遥控器 → DIY
使用玩偶原装遥控器逐个学习:
| 功能 | 命名 |
|---|---|
| 开机 | start |
| 拍打 | pat |
| 慢速 | slow |
| 快速 | quick |
学习完成后,在 App 中测试四个按键是否能够控制玩偶。命名随意。
2. 配置涂鸦 IoT 云平台
进入:https://iot.tuya.com
创建云项目:
- 数据中心选择:中国
获取:Access ID,Access Secret
然后:项目 → 设备 → 关联 App 账号绑定智能生活 App。
开启 API 权限:
项目
→ 服务 API
→ API 授权
→ 红外
→ 万能红外开放能力
获取设备 ID:
项目
→ 设备
→ 全部设备
记录:infrared_id,remote_id
3. 查询红外学习码
由于涂鸦中国区 API 限制请求来源区域,必须在中国大陆 VPS 执行。
使用 Claude Code 在 VPS 编写脚本:
功能:
- 使用涂鸦 v2 API 签名认证。
- 获取 Access Token。
- 查询学习码:
GET
/v2.0/infrareds/{infrared_id}/remotes/{remote_id}/learning-codes
获取:
start code
pat code
slow code
quick code
保存备用。
4. 部署 MCP Server
在 VPS 创建服务目录:/opt/tuya-mcp
部署环境:
- Python
- FastMCP
- streamable HTTP
MCP Server 监听:
127.0.0.1:8765
配置环境变量:
TUYA_ACCESS_ID=<Access ID>
TUYA_ACCESS_SECRET=<Access Secret>
INFRARED_ID=<红外遥控器设备ID>
REMOTE_ID=<DIY遥控器设备ID>
CODE_START=<开机学习码>
CODE_PAT=<拍打学习码>
CODE_SLOW=<慢速学习码>
CODE_QUICK=<快速学习码>
.env 文件需要限制权限:
chmod 600 .env
MCP Server 需要实现:
涂鸦 API 接入
- 使用涂鸦 Cloud API 中国区接口
- 实现 v2 签名认证
- 自动缓存 Access Token
- Token 过期前自动刷新
MCP Tools
提供以下工具:
| Tool | 功能 |
|---|---|
| power_on | 开机 |
| pat_toggle | 拍打开关 |
| speed_slow | 慢速 |
| speed_quick | 快速 |
| soothe_sleep | 自动哄睡 |
5. 配置 Nginx 反向代理
由于 MCP Server 只监听 VPS 本地端口:
127.0.0.1:8765
需要通过 Nginx 暴露公网 HTTPS 地址。
Nginx 配置示例
server {
listen 443 ssl;
server_name your-domain.com;
location /tuya-mcp/ {
proxy_pass http://127.0.0.1:8765/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_cache off;
}
}
配置完成后:
nginx -t
systemctl reload nginx
注意事项
- 红外遥控器必须保持在线。
- 红外信号需要无遮挡直射。