CATALOG

芯步智能触摸墙壁开关的开放接口基于HTTP API,签名机制(MD5嵌套)是接入的核心环节。以下方案涵盖从账号准备、签名计算到多路独立控制、状态保持、点动模式等完整实现,同时提供局域网与公网两种对接方式的选择。

解决方案:基于芯步开放接口对接3路触摸墙壁开关

1. 概述

芯步提供的智能触摸墙壁开关(3路)是一款基于WiFi通信、支持标准86盒安装的智能控制设备。它开放了完整的HTTP API接口,允许开发者通过公网或局域网直接对设备的三个物理通道进行独立控制。

核心目标:通过调用API接口,实现对3路照明设备(或电器)的独立开关、定时、状态锁定及点动控制。

2. 设备与接口特性

  • 通信协议:HTTP/HTTPS,支持GET/POST(示例中采用POST JSON格式)。

  • 控制粒度:支持单独控制第1、2、3路,或批量控制。

  • 响应速度:公网环境下命令响应约为80-120ms(视网络状况),局域网环境下更佳。

  • 核心命令:基于 power1power2power3 字段进行控制

3. 对接准备

在开始编码前,需要完成以下准备工作:

  1. 硬件准备:将3路触摸墙壁开关接好零火线(注意:通常为零火线供电,需确认家中是否有零线),并确保设备通电且处于待配网状态。

  2. 平台账号:访问芯步官网注册账号。

  3. 创建应用:登录工作台,进入“物联网控制台”,创建一个应用。系统会生成唯一的 AppIDAppSecret,这是调用接口的凭证。

4. 接入流程

对接的关键在于接口的签名认证。为防止接口被篡改,芯步采用了“双重MD5加密+时间戳”的鉴权机制。

4.1 签名算法

根据官方文档,签名 sign 的计算规则为:Sign = md5( md5(AppSecret) + ts )

  • AppSecret:开发者密钥。

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

  • 操作步骤

    1. 将AppSecret进行一次MD5加密,得到字符串 S1

    2. S1 与当前时间戳 ts 拼接成新的字符串 S1ts

    3. S1ts 再次进行MD5加密,得到最终的 Sign

4.2 接口地址

POST https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

  • URL参数:需在URL中拼接AppID、签名和时间戳。

  • HeaderContent-Type: application/json

4.3 请求体结构

请求体为JSON格式,必须包含 deviceorder 字段。

5. 具体控制命令实现(3路照明控制详解)

针对该3路开关,order 内部支持丰富的控制模式,以下是几种典型的应用场景:

5.1 基础开关控制

最常用的场景:独立控制客厅的主灯(1路)、射灯(2路)、灯带(3路)。

  • 打开第1路{"power1": 1}

  • 关闭第2路{"power2": 0}

  • 同时关闭3路{"power1": 0, "power2": 0, "power3": 0}

5.2 状态保持(防抖动/场景锁定)

在智能家居联动中,有时我们需要开关在用户手动操作后自动复位。例如:用于控制电动窗帘或门磁,按下开关开锁,2秒后自动断电或复位。

  • 1路保持开:无论物理按键如何操作,电机通电3秒后自动关闭。

    • 命令:{"power1": {"keep": "1", "revert": "3"}} (1代表通,3代表3秒后复原)

  • 2路保持关:用户开2秒后自动关闭。

    • 命令:{"power2": {"keep": "0", "revert": "2"}}

5.3 点动模式(先通后断/先断后通)

适用于控制排风扇、门铃或短暂触发的设备。

  • 1路先通后断:触发后立即开启,2秒后自动关闭。

    • 命令:{"point1": "2000"} (单位:毫秒)

  • 1路先断后通:触发后先断开,2秒后自动开启。

    • 命令:{"reset1": "2000"}

6. 代码实现示例(以cURL/Python为例)

以下是调用API关闭第3路照明灯的实际示例。

场景:用户App点击“关闭走廊灯”,服务器需向设备ID为 YZ123456 的设备发送指令,关闭第三路继电器。

请求构造假设 AppID=10001AppSecret=abc123,当前时间戳 ts=1718000000

  1. 计算签名

    • S1 = md5("abc123") = "e99a18c428cb38d5f260853678922e03"

    • 字符串 = S1 + ts = "e99a18c428cb38d5f260853678922e031718000000"

    • sign = md5(字符串) = "xxxxxx"

  2. 发送请求

Shell (cURL) 实现

Python (Requests) 实现

7. 高级架构:局域网与私有化

芯步的接口不仅支持云平台调用,还支持 局域网私有化部署

  • 局域网控制:如果服务器与智能开关处于同一个局域网(如家庭网关或NAS),可以将API请求域名解析为设备的局域网IP或直接使用本地发现的IP进行控制。这可以极大降低延迟,并确保断网时核心照明功能不受影响。

  • 消息推送(联动):若需实现“人来灯亮”,设备本身作为执行端,通常需要配合传感器。芯步支持设备状态上行推送,即当传感器检测到人时,会主动推送消息到开发者配置的服务器,开发者接收到消息后再调用本开关接口开灯

8. 常见问题排查

  1. 签名错误(401):请检查时间戳是否为Unix秒级格式,以及服务器时间是否与北京时间同步。签名计算中MD5的结果通常为32位小写Hex字符串。

  2. 设备离线:设备必须连接2.4G WiFi,不支持5G频段。

  3. 负载问题:虽然开关支持10A电流,但在控制大功率感性负载(如电机、部分LED变压器)时,并联随设备附带的电容,以防止灯关闭后微亮或闪烁。