Tuya IoT 平台接入与本地局域网直连控制(Local-First IoT Hub)
HS Design 体系智能家居中枢规范
运行环境:IDAPC(Debian WSL 2 常驻 Systemd 服务)
服务端点:http://127.0.0.1:8088/http://192.168.68.x:8088
⚡ 终局落地架构:Local-First 本地局域网直连控制
1. 痛点根治与技术演进
- 根本痛点:家庭宽带公网 IP 呈多出口动态轮询(实测 5 分钟内在
27.125.244.x、27.125.243.x等网段快速跳变),导致涂鸦开放平台频繁报1114/1010(IP 不在白名单),手动或自动加白均受制于网络延迟与公网可用性。 - 终局架构(Local-First IoT Hub):
- 100% 局域网直连:基于
tinytuya协议直接与局域网内 Tuya 网关 / Wi-Fi 设备通过 TCP Socket 建立 AES-128 加密通道; - 零外网依赖:即使断开外网宽带,内网灯控、风扇、情景模式照常运行;
- 极致响应延迟:状态查询仅 20ms,控制指令执行 50~150ms;
- Systemd 常驻守护:
/etc/systemd/system/local-tuya-hub.service开机自启,24/7 稳定运行。
- 100% 局域网直连:基于
🔑 全量设备密钥表与局域网拓扑(13 台设备)
1. 局域网网关与直连节点
| 设备 ID | 设备名称 | 局域网 IP | Local Key | 协议版本 | 类型 |
|---|---|---|---|---|---|
eb9cc6595a801bc44dfgsf | Zigbee wireless Gateway | 192.168.68.102 | nglJQj}GKVyY=B7Q | v3.3 | ZigBee 多模网关 |
eb919af738309ceaf02fws | Multi-Mode Gateway | 192.168.68.105 | `I | }V~RV | q*O)SfGs` |
eb46191b73990b601c2g1x | Jake IR Remote | 192.168.68.100 | `G9 | L(-{CCKlxA.>R` | v3.3 |
ebf60607f51748bf7dr5ie | Office Smart IR | 待上线 | w1u760R.~9}U>4R9 | v3.3 | 办公室红外遥控 |
2. 子设备明细(挂载于网关)
| 子设备 ID | 子设备名称 | 挂载网关 / CID | 功能点(DPS 映射) |
|---|---|---|---|
eb510055dd2c2d4509gjtc | Jake Bedroom 3路开关 | 网关 192.168.68.102CID: a4c13869c7960c74 | DPS 1 (switch_1): 靠窗灯 / 床灯DPS 2 ( switch_2): 入口灯DPS 3 ( switch_3): 吊扇 |
eb34b275a1acb08eeailn8 | Jake Curtain 智能窗帘 | 网关 192.168.68.102CID: 38398ffffecb59e7 | 开合比例 / 定时 |
ebe2d5a41775b182fexk3z | Human Sensor 人体传感器 | 网关 192.168.68.102CID: a4c138a2a08ac55a | 人体感应 / 灵敏度 |
eb5a599b452bbb3e9cofa9 | Rear Walkway 走廊灯 | 网关 192.168.68.105CID: a4c138aa0e7a59ad | DPS 1: 走廊灯开关 |
eb4ebbf7efb6851ecdblbr | Entrance Light 门口灯 | 网关 192.168.68.105CID: a4c13802f4b28f68 | DPS 1: 门口主灯 DPS 2: 辅助灯 |
eb164197d5adccf3f5dhoc | Jake aircon 海信空调 | 红外遥控 192.168.68.100 | 红外功能码驱动 |
eb37dc26d8980f899dkidv | Mistral table fan 台扇 | 红外遥控 192.168.68.100 | Speed / 摆头 |
eb9c12ce7dc7305b20jac8 | Gree Aircon 格力空调 | 办公室红外遥控 | 红外功能码驱动 |
eb09cf026db4912e58fbjs | Hisense Aircon 空调 | 办公室红外遥控 | 红外功能码驱动 |
📡 RESTful API 与 Webhook 接口规范
基础信息
- Base URL:
http://127.0.0.1:8088(或局域网http://192.168.68.x:8088) - 请求格式:支持 Query 参数(
?state=on|off)及 JSON Body({"state": true})
1. 健康检查与拓扑查询
- 请求:
GET /health - 响应:
{
"status": "healthy",
"service": "Local Tuya IoT Hub",
"mode": "LAN Direct (Local-First)",
"listen": "0.0.0.0:8088",
"gateways": { ... },
"devices": { ... }
}2. 卧室专属快捷控制
| 端点 | 方法 | 说明 | 对应硬件 |
|---|---|---|---|
/api/bedroom/window_light?state=on|off | POST / GET | 控制卧室靠窗灯 | Jake Bedroom switch_1 |
/api/bedroom/entry_light?state=on|off | POST / GET | 控制卧室入口灯 | Jake Bedroom switch_2 |
/api/bedroom/fan?state=on|off | POST / GET | 控制卧室吊扇 | Jake Bedroom switch_3 |
/api/bedroom/all?state=on|off | POST / GET | 同步控制卧室所有路 | Jake Bedroom 1, 2, 3 |
3. 情景 Webhook(MacroDroid / GPS 地理围栏)
- 到家开灯:
POST /webhook/home- 动作:自动开启靠窗灯(DPS 1)与入口灯(DPS 2)。
- 离家全关:
POST /webhook/away- 动作:自动关闭卧室所有开关与吊扇(DPS 1, 2, 3)。
- 向下兼容端点:
GET/POST /webhook/tuya?action=homeGET/POST /webhook/tuya?action=away
4. 通用设备查询与控制
- 查询设备状态:
GET /api/device/<device_id>/status - 控制指定 DPS:
POST /api/device/<device_id>/set?dps=1&state=on
🛠️ 系统服务守护配置
Systemd 服务文件
路径:/etc/systemd/system/local-tuya-hub.service
[Unit]
Description=HS Design Local-First Tuya IoT Hub Service
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/smart-home
ExecStart=/usr/bin/python3 /root/smart-home/local_hub.py
Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target常用运维命令
# 查看服务运行状态
systemctl status local-tuya-hub.service
# 查看实时日志
journalctl -u local-tuya-hub.service -f
# 重启服务
systemctl restart local-tuya-hub.service📚 离线元数据文件
- 完整设备云端导出:
/root/smart-home/devices.json - 本地服务入口:
/root/smart-home/local_hub.py