CATALOG

芯步的智能墙壁开关开放标准HTTP API,签名机制为 md5(md5(AppSecret) + ts),查询开关状态主要通过两种方式:主动调用状态查询接口(需确认产品是否支持),或搭建接收服务器监听设备状态变更推送。以下是具体实现方案:

1. 解决概述

芯步的智能硬件产品(如1路智能墙壁复合开关)提供了开放的HTTP API接口,允许开发者通过任何支持HTTP协议的编程语言进行二次开发。要实现“远程开关状态查询”,核心思路是:

  • 主动查询:调用平台接口获取设备当前状态。

  • 被动接收:通过配置消息推送,当设备状态变化时实时接收通知。

本文将重点介绍被动接收方式,因为在实际应用(如微信小程序、Web应用)中,这种方式能提供实时性(状态变化毫秒级感知)和最佳用户体验。

2. 准备工作

在开始编码前,请确保完成以下步骤:

  1. 注册账号并创建:访问注册账号,并创建一个“工作台”

  2. 获取密钥:在控制台的“开发设置”中获取 AppIDAppSecret。这是调用接口的身份凭证

  3. 设备配网:使用官方小程序或APP将“1路智能墙壁复合开关”连接到Wi-Fi(仅支持2.4G),并记录下设备的唯一ID(Device ID)

  4. 服务器准备:准备一台具备公网IP或域名的服务器,用于接收平台推送的状态数据。

3. 核心技术原理

芯步的接口采用动态签名验证机制,这是对接的关键。

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

    • AppSecret:开发者密码。

    • ts:当前Unix时间戳(秒)。

    • 计算步骤:先将 AppSecret 进行一次MD5加密,得到字符串 S1;将 S1 与时间戳 ts 拼接;将拼接后的字符串再次进行MD5加密,得到最终签名

  • API 端点https://api.thingboot.com/{AppId}/device/control/

4. 实现“状态查询”的具体方案

由于开关状态可能由物理按键、远程指令或定时任务改变,采用“混合模式”以确保状态同步。

方案A:被动接收——配置消息推送(推荐)

当设备状态发生变化(如有人按下开关或继电器自动跳变)时,芯步平台会主动向你的服务器推送状态数据。步骤:

  1. 设置推送URL:在你的物联网控制台中,配置“上行消息接收地址”(例如:https://yourdomain.com/api/device/callback)。

  2. 编写接收代码:编写接口接收 POST 请求,解析JSON数据。

    • 当开关状态变化时,平台会推送数据包,通常包含 device_idpower1(对于1路开关)字段。

    • 数据示例:{"device":"861283037...", "power1":1, "status":"online"}

  3. 优点:实时性高,无需轮询,节省服务器资源。

方案B:主动查询——调用接口获取设备列表

如果不需要实时推送,或者在特定UI界面需要刷新状态,可直接HTTP请求拉取设备状态。虽然官方文档侧重控制(/device/control),但通过获取设备列表或设备详情接口(具体路径请查控制台文档),可解析回传的设备属性。

  • 思路:调用 /device/list 或类似Status接口(若支持),解析返回的JSON中的 powerstate 字段。

5. 实战代码示例(Python/JavaScript)

以下是使用主动查询方式的代码片段,核心是构造Sign并发起请求。

HTTP 请求示例

Python 实现签名与查询

JavaScript (Node.js) 与 WebSocket 实时控制

对于需要长时间保持连接或极低延迟的场景,可采用 WebSocket 或

  1. 服务器端:搭建 Node.js 服务,使用 ws 库。

  2. 逻辑:客户端连接服务器;服务器定时(如每5秒)调用芯步API查询状态;状态有变化时,服务器广播给所有客户端。

6. 关键业务逻辑:解决“状态同步”难题

为了确保你的应用UI与物理开关状态100%一致,请处理以下两个场景:

  1. 第一种场景:手动操作

    • 问题:用户手动按下墙壁开关,第三方应用界面未刷新。

    • 解决:利用 方案A(被动接收)。平台收到物理按键触发的事件后,推送到你的后台,后台再通过WebSocket推送给前端页面,实现界面即时更新。

  2. 第二种场景:网络中断

    • 问题:设备离线又重连后,状态未知。

    • 解决:设备重连后会自动向平台上报当前状态。确保你的消息接收服务器正确处理 statusstate 的上报消息。

7. 总结

通过芯步的开放接口进行二次开发实现远程状态查询,核心在于:

  1. 掌握签名机制md5(md5(AppSecret) + ts) 是请求合法性的关键。

  2. 选择合适的交互模式:对于UI展示,请一定要使用Webhook推送实现状态同步;对于运维脚本,使用HTTP轮询即可。

按照上述步骤,你可以在几小时内将1路智能墙壁复合开关无缝集成到自己的智能家居系统或SaaS平台中