分组控制是批量管理多个设备的高效方式,芯步的开放接口支持两种实现路径:一是通过设备接口批量传入多个device_id,二是将设备加入分组后统一控制。以下方案会详细说明签名算法、设备接口和分组接口的调用方式,并提供实操示例。
1. 产品特性与接口能力概述
在开始对接前,我们先确认一下控制对象的核心能力。芯步的10A86型WiFi智能插座(UNI-QC-10A)是一款标准入墙式插座,支持远程通断控制和功率计量(计量版)。
它提供HTTP API接口,这意味着你可以通过发送HTTP请求(POST/GET)来操作设备,而不局限于其官方App。该设备支持单控和群控,这为实现“分组控制”奠定了基础。
2. 对接前提:获取关键凭证
在调用任何API之前,你需要在芯步开放平台获取以下三个关键信息。这是所有接口调用的“钥匙”:
AppID(应用ID):在你的控制台开发者设置中获取,用于标识你的应用身份。
AppSecret(开发者密码):用于生成接口签名,请妥善保管,严禁直接写在客户端代码中。
设备ID:在控制台设备列表查看,或者通过接口拉取。这是你要控制的那个插座的身份标识。
3. 核心逻辑:签名机制
芯步的接口使用了动态签名验证,每一次请求都需要携带通过算法生成的sign和当前时间戳ts,以防止接口被恶意篡改或重放攻击。
签名生成步骤:
准备AppSecret(例如:
abc123)和当前时间戳ts(例如:1715678900,单位:秒)。计算
step1 = md5(AppSecret),得到32位小写字符串。拼接字符串
step1 + ts。计算
sign = md5(拼接字符串)。
简单概括就是:sign = md5( md5(AppSecret) + ts )。
(注:虽然SSE原理简单,但为了确保连接稳定性,生产环境配置反向代理增加重连机制)
4. 方案一:简易分组控制 —— 单接口多设备控制
如果你不需要维护复杂的组别信息,最简单的“逻辑分组”方法是在单次请求中传入多个设备的ID。
10A86型插座的单控命令是 power(值为1开/0关)。通过设备控制接口,device参数支持逗号分隔多个ID。
接口详情:
URL
https://api.thingboot.com/{AppId}/device/control/Method:POST
参数(Body JSON)
| 参数 | 类型 | 说明 |
|---|---|---|
| device | String | 设备ID,多个设备用英文逗号隔开,例如 "1001,1002,1003" |
| order | Object | 命令对象,例如 {"power": 1} |
实操示例(Shell + CURL):假设你要一次性关闭客厅的3个插座(ID分别为 101, 102, 103)。
优点: 简单直接,无需额外维护分组元数据。缺点: 每次都要重复传入ID列表,若分组变动需要修改代码逻辑。
5. 方案二:专业分组控制 —— 平台分组管理
芯步开放平台提供了专门的分组管理接口。这种方式适合设备和用户较多的SaaS应用,你可以在平台上创建一个“卧室组”或“全屋组”,然后直接控制这个组。
步骤 1:维护设备分组
你需要通过接口(或控制台)先把设备加入到某个组。
接口地址
https://api.thingboot.com/{AppID}/device/group/关键参数
device: 设备ID(支持批量,如1001,1002)group: 分组ID(如果没有,需先创建,通常控制台支持创建,或通过接口创建)。
维护分组的逻辑:将指定的10A86插座划分到具体的分组ID中。例如,将设备1001和1002加入到分组ID为 218 的组里。
步骤 2:控制分组执行动作
一旦设备归属于某个分组ID,你就可以通过分组控制接口直接发送指令,而无需关心组内有哪些设备。
接口地址
https://api.thingboot.com/{AppID}/group/control/核心优势:新增或移除设备时,只需调用一次维护接口,主控逻辑的代码完全不需要修改。
请求参数示例(控制全组关闭):
| 参数 | 类型 | 说明 |
|---|---|---|
| group | Int | 分组ID,例如 218 |
| power | Int | 这里直接传属性,等同于对组内设备下发 {"power":0} |
代码示例(控制分组):
执行上述请求后,组ID为218下的所有10A86插座将会全部断电。
6. 进阶场景:定时任务与联动
除了即时控制,该接口还支持远程定时任务。如果你需要在特定时间(如每晚23:00)自动关闭分组内的所有插座,在服务端(Server)利用Linux Crontab或编程语言的定时器(如Python APScheduler)定时调用上述方案二中的分组控制接口。
这种方式不依赖设备本地的定时器,你可以灵活地设定每周、每天甚至倒计时的分组控制逻辑,实现例如“离家模式一键关断所有插座”的高级功能。
7. 常见问题与排查
Code 501/502 错误
501:未指定分组ID或格式错误,检查
group参数是否为整数。502:分组不存在或组内没有可用的设备。请确认分组ID是否正确,且10A86插座是否已成功添加至该分组且处于在线状态。
签名错误(Sign Error)
检查时间戳
ts是否为秒级(例如1715678900),而不是毫秒(1715678900000)。检查MD5结果为
32位小写格式。
设备无响应
确认插座连接的WiFi是2.4GHz频段(不支持5G)。
检查
order参数格式,10A86型插座控制通断的标准字段为power(值为1或0),而非power1(多路控制器才带数字)。
8. 总结
通过芯步的开放API对接10A86型WiFi智能插座实现分组控制是高效且稳定的。
若场景简单,可直接使用设备控制接口配合英文逗号拼接设备ID。
若追求专业运维,使用分组管理接口先维护设备关系,再通过分组控制接口进行调度。
这种设计使得上层业务逻辑与底层硬件解耦,无论是5个插座还是5000个插座,控制代码都只需一行指令。