CATALOG

芯步的3路触摸墙壁开关开放了完整的HTTP API接口,支持独立控制每一路线路,同时能通过状态上报机制实时感知线路变化。下面从接口能力、签名鉴权、代码实现到状态同步,给出完整的二次开发方案。

一、 技术背景与接口概述

芯步智能触摸墙壁开关(3路)是一款基于WiFi通讯的继电器控制设备。其二次开发的核心在于通过HTTP协议与云端进行交互。该方案支持公网局域网私有化部署,适用于任何支持HTTP请求的编程语言(如Python, Java, JavaScript, PHP等)。

要实现“线路状态反馈控制”,主要需利用以下两个核心接口能力:

  1. 设备控制接口(下行):用于向开关下发指令,实现对某一路灯光的开启/关闭,或查询当前状态。

  2. 消息推送机制(上行):当设备状态发生变化时(无论是通过物理按键触摸,还是通过远程指令),设备会将变化后的状态实时推送到开发者指定的服务器地址。

二、 接口鉴权与配置准备

在开始代码开发前,需要先在芯步控制台获取密钥。

  1. 准备参数

    • AppID:应用的唯一标识。

    • AppSecret:用于加密签名的密钥。

    • Device ID:设备的唯一ID(在控制台“设备列表”或通过接口拉取获得)

  2. 签名算法(Sign)为了防止接口被恶意篡改,所有控制指令都需要携带动态签名。公式如下:YourSign = md5( md5(AppSecret) + ts )

    • 步骤详解

      1. AppSecret 进行一次MD5加密得到字符串 A

      2. 将字符串 A 与当前的时间戳 ts(秒级)拼接得到字符串 B

      3. 将字符串 B 进行第二次MD5加密,得到最终的 sign注意:ts参数需与拼接时使用的ts数值一致。

三、 核心功能开发:线路独立控制

针对“3路独立控制”的需求,设备命令字段 order 支持通过 power1power2power3 分别操控。

1. 接口定义

  • 请求地址https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

  • 请求方法: POST

  • 请求头Content-Type: application/json

2. JSON请求体示例

假设需要控制设备 1234567890,将第2路打开,第1路和第3路关闭:

注:order 参数也可以只传入需要变化的线路,未传入的线路默认保持现有状态

3. 高级场景功能

除了简单的开关,该接口还支持以下特定场景模式

功能模式参数示例(针对线路1)应用场景
状态保持{"power1":{"keep":"1","revert":"5"}}用于排气扇:强制开启,5秒后自动关闭;或用于安防(误触恢复)。
点动/先通后断{"point1":"2000"}控制门禁或电机:线路导通2秒后自动断开,模拟按钮按下动作。
先断后通(复位){"reset1":"3000"}用于路由器/设备重启:断开3秒后自动重新上电。

四、 非对称实现:状态反馈同步

这是实现“反馈控制”的关键环节。若仅下发指令而不获取状态,界面上的开关状态可能会与现实不符。

芯步提供了设备状态实时上报机制,无需主动轮询,只需配置回调接口即可接收设备状态变化通知。

1. 配置消息推送服务器

在控制台的“项目设置” -> “数据流转”中,设置您的服务器 Callback URL

2. 接收状态推送

当开关的任何一路状态发生变化时(如有人按下了墙壁上的物理按键),芯步云端会向您的服务器发起POST请求,携带设备最新状态。

接收示例(Payload)

3. 服务器处理逻辑

您的后端服务接收到该JSON后,应立即进行以下操作:

  1. 验签:验证数据来源是否为合法云端(防止伪造)。

  2. 更新数据库:将该设备(device)的线路1状态在数据库中更新为“开启”。

  3. 触发联动:如果您的业务逻辑需要(例如:检测到有人打开开关,自动关窗或关掉排气扇),可在此处编写联动逻辑。

  4. 响应:给云端返回 HTTP 200 OK。若返回非200状态码,云端会认为推送失败并进行重试。

五、 实战代码逻辑

由于您使用不同的编程语言,这里以通用的逻辑层代码(伪代码/逻辑描述)展示如何实现闭环控制:

六、 常见问题与排错

  1. 签名错误(401)

    • 检查时间戳 ts 是否超出有效范围,设备端与服务器时间误差过大容易导致验签失败。

    • 确认 md5 后的字符串是否为小写。

  2. 设备离线

    • 开关依赖 2.4GHz Wi-Fi。请确保设备通电且信号强度良好。在控制台可以查看设备的“最后上线时间”。

  3. 状态不同步

    • 通常是公网回调地址未配置或不可达。请检查您的服务器是否对公网开放,且能接收 POST 请求。如果在局域网内开发,请确保回调地址在路由端配置了NAT映射。

通过以上方案,您可以实现对芯步3路开关的完全掌控,包括独立下发指令(控制)和实时感知状态变化(反馈),从而集成到更复杂的自动化系统中。