CATALOG

分组控制是批量管理多个设备的高效方式,芯步的开放接口支持两种实现路径:一是通过设备接口批量传入多个device_id,二是将设备加入分组后统一控制。以下方案会详细说明签名算法、设备接口和分组接口的调用方式,并提供实操示例。

1. 产品特性与接口能力概述

在开始对接前,我们先确认一下控制对象的核心能力。芯步的10A86型WiFi智能插座(UNI-QC-10A)是一款标准入墙式插座,支持远程通断控制和功率计量(计量版)。

它提供HTTP API接口,这意味着你可以通过发送HTTP请求(POST/GET)来操作设备,而不局限于其官方App。该设备支持单控和群控,这为实现“分组控制”奠定了基础。

2. 对接前提:获取关键凭证

在调用任何API之前,你需要在芯步开放平台获取以下三个关键信息。这是所有接口调用的“钥匙”:

  1. AppID(应用ID):在你的控制台开发者设置中获取,用于标识你的应用身份。

  2. AppSecret(开发者密码):用于生成接口签名,请妥善保管,严禁直接写在客户端代码中

  3. 设备ID:在控制台设备列表查看,或者通过接口拉取。这是你要控制的那个插座的身份标识

3. 核心逻辑:签名机制

芯步的接口使用了动态签名验证,每一次请求都需要携带通过算法生成的sign和当前时间戳ts,以防止接口被恶意篡改或重放攻击。

签名生成步骤:

  1. 准备AppSecret(例如:abc123)和当前时间戳ts(例如:1715678900,单位:秒)。

  2. 计算 step1 = md5(AppSecret),得到32位小写字符串。

  3. 拼接字符串 step1 + ts

  4. 计算 sign = md5(拼接字符串)

简单概括就是:sign = md5( md5(AppSecret) + ts )

(注:虽然SSE原理简单,但为了确保连接稳定性,生产环境配置反向代理增加重连机制)

4. 方案一:简易分组控制 —— 单接口多设备控制

如果你不需要维护复杂的组别信息,最简单的“逻辑分组”方法是在单次请求中传入多个设备的ID

10A86型插座的单控命令是 power(值为1开/0关)。通过设备控制接口,device参数支持逗号分隔多个ID。

接口详情:

  • URLhttps://api.thingboot.com/{AppId}/device/control/

  • Method:POST

  • 参数(Body JSON)

参数类型说明
deviceString设备ID,多个设备用英文逗号隔开,例如 "1001,1002,1003"
orderObject命令对象,例如 {"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/

  • 核心优势:新增或移除设备时,只需调用一次维护接口,主控逻辑的代码完全不需要修改

请求参数示例(控制全组关闭):

参数类型说明
groupInt分组ID,例如 218
powerInt这里直接传属性,等同于对组内设备下发 {"power":0}

代码示例(控制分组):

执行上述请求后,组ID为218下的所有10A86插座将会全部断电

6. 进阶场景:定时任务与联动

除了即时控制,该接口还支持远程定时任务。如果你需要在特定时间(如每晚23:00)自动关闭分组内的所有插座,在服务端(Server)利用Linux Crontab或编程语言的定时器(如Python APScheduler)定时调用上述方案二中的分组控制接口。

这种方式不依赖设备本地的定时器,你可以灵活地设定每周、每天甚至倒计时的分组控制逻辑,实现例如“离家模式一键关断所有插座”的高级功能

7. 常见问题与排查

  1. Code 501/502 错误

    • 501:未指定分组ID或格式错误,检查group参数是否为整数。

    • 502:分组不存在或组内没有可用的设备。请确认分组ID是否正确,且10A86插座是否已成功添加至该分组且处于在线状态

  2. 签名错误(Sign Error)

    • 检查时间戳ts是否为秒级(例如 1715678900),而不是毫秒(1715678900000)。

    • 检查MD5结果为32位小写格式。

  3. 设备无响应

    • 确认插座连接的WiFi是2.4GHz频段(不支持5G)。

    • 检查order参数格式,10A86型插座控制通断的标准字段为power(值为1或0),而非power1(多路控制器才带数字)

8. 总结

通过芯步的开放API对接10A86型WiFi智能插座实现分组控制是高效且稳定的。

  • 若场景简单,可直接使用设备控制接口配合英文逗号拼接设备ID。

  • 若追求专业运维,使用分组管理接口先维护设备关系,再通过分组控制接口进行调度。

这种设计使得上层业务逻辑与底层硬件解耦,无论是5个插座还是5000个插座,控制代码都只需一行指令。