CATALOG

芯步的10A86型定时开关插座提供标准HTTP接口,对接的核心是“下发指令查询状态”+“订阅推送接收状态”——主动查询调用/device/control/接口,被动接收则配置消息推送。以下是完整的对接方案:

1. 核心对接原理

为了实现“远程状态查询”,通常需要解决两个问题:

  1. 主动查询:立即想知道插座现在是开还是关。

  2. 被动接收:插座被物理按键操作或定时任务触发后,系统能自动知道状态变了(而不是一直去问)。

芯步的接口设计通过以下两点解决:

  • 控制即返回:下发命令(如打开/关闭)时,接口会同步返回当前状态。

  • 状态主动上报:通过配置消息推送机制,当插座状态发生任何变化(手动按、定时到点、远程控制),平台会立即将状态推送给你的服务器

2. 准备工作:获取凭证与设备ID

在开始编码前,请登录芯步开发者后台完成以下准备:

  1. 获取 AppId 和 AppSecret

    • 登录控制台,进入“开发设置”。

    • 记录下应用ID和开发者密码。这两个是调用接口的钥匙。

  2. 获取设备ID

    • 进入“设备列表”,找到你已激活的10A86型定时开关插座。

    • 记录下对应的设备ID(通常是一个数字,如 1878)。

  3. 确定服务器环境

    • 准备一台公网可访问的服务器(用于接收状态推送)。

3. 方案一:主动查询状态(请求-响应模式)

此方案适用于你点击“刷新”按钮、或需要实时校验状态的场景。

3.1 请求地址与签名构造

  • URL: http(s)://api.thingboot.com/{AppId}/device/control/

  • Method: POST

  • 签名算法: sign = md5( md5(AppSecret) + ts )

这里的算法说明:

  1. AppSecret 进行第一次MD5加密得到 S1

  2. S1 与时间戳 ts(秒级,如 1712812800)拼接成字符串 S1ts

  3. S1ts 进行第二次MD5加密得到最终的 sign

3.2 请求Body构建

只需要发送设备ID和查询命令。

接口虽然没有专门的“查询”命令,但通过查询设备属性发送空指令/状态指令,可以获取当前状态。通常做法是发送一次获取属性的请求,或者根据官方推荐,通过控制命令返回结果来获取状态。

实际操作示例如果你想查询状态,可以尝试下发一个不改变状态的指令,或者直接利用控制指令的返回结果。

根据芯步的通用规范,请求Body格式如下

注意:如果只是想看状态,你可以发送一条保持当前状态的指令(例如原本是开就发开),从而触发设备返回当前状态数据。

4. 方案二:被动接收状态(消息推送模式)☆推荐

为了实现真正的实时状态查询(无需轮询),开启消息推送。这样,无论是手动按键还是定时任务改变了插座状态,你的服务器都能立刻知道新状态。

4.1 配置推送地址

  1. 在芯步控制台找到“消息推送”设置。

  2. 选择 HTTP方式,并填入你的服务器接收URL(例如 https://yourdomain.com/api/callback

  3. 保存设置。

4.2 接收推送的数据

当插座状态变化时,芯步平台会向你的服务器发送如下格式的POST数据包

4.3 服务端处理示例(Python Flask)

你需要在自己的服务器上写一个简单的接口来接收这些数据:

5. 结合“定时开关”的特殊处理

既然是定时开关插座,你可能需要读取它预设的定时任务状态,或者获取它自动执行后的结果。

  • 无需缓存定时任务:利用上述的消息推送机制 + 你的本地数据库,当定时时间到达时,插座自动断电,消息推送接口会瞬间收到power:0的数据。你只需监听该消息,就能知道定时任务已经执行。

  • 查询定时列表:如果需要查询插座内部存储的定时计划表,需调用特定的接口拉取设备属性和任务列表。

6. 完整对接流程图

sequenceDiagram
    participant App as 你的应用/服务器
    participant YY as 芯步云平台
    participant Device as 10A86插座

    Note over App,Device: 第一种场景:主动查询
    App->>YY: POST /device/control (携带签名&设备ID)
    YY-->>App: 返回当前状态 {"power":1}
    
    Note over App,Device: 第二种场景:状态变化上报
    Device->>Device: 用户手动按下开关 / 定时时间到
    Device->>YY: 上报新状态 (power:0)
    YY->>App: 推送消息 (HTTP POST)
    App-->>YY: 回复 200 OK
    App->>App: 更新数据库/记录日志

7. 常见问题和需要注意的点

  1. 签名错误

    • 检查时间戳ts是否为秒级(10位数),不是毫秒级(13位数)。

    • 检查拼接顺序:md5( md5(AppSecret) + ts ),注意加号是字符串拼接。

  2. 网络隔离

    • 如果部署在局域网,芯步支持私有化部署和局域网通信,请确认API地址指向内网IP

  3. 消息丢失

    • 如果你的服务器在设备状态变化时宕机或网络故障,状态推送可能会失败(平台5秒内连接不上会放弃)。在业务关键节点上,定时(如每5分钟)做一次全量状态同步(使用方案一)作为兜底。

  4. 多设备管理

    • device字段支持传多个ID,用逗号间隔即可批量控制,但状态返回通常是分批的。

通过以上方案,你可以完全掌握10A86型定时开关插座的实时状态,并基于此开发能耗统计、报警联动等更高级的功能。