芯步35A智能空开的HTTP接口设计非常简洁——签名生成后,一条POST请求就能完成通断控制。以下从接口对接、签名算法到代码实现,给出完整的二次开发方案。
一、 技术背景与准备
在开始二次开发之前,需要明确芯步35A智能空开的通信特性。该设备支持 WiFi 2.4G 直连,这意味着它不需要额外的网关硬件,只要设备所在环境有WiFi信号,即可通过互联网或局域网进行控制。
为实现HTTP接口远程控制,需要准备以下三项关键信息(这些信息将在芯步控制台获取):
AppId:应用的唯一标识符。
AppSecret:应用的密钥,用于生成签名,保障通信安全。
Device ID:35A智能空开的唯一设备ID(通常在设备配网后可在控制台查看,或通过设备列表接口拉取)。
二、 接口协议与签名机制
芯步的开放接口采用了标准的HTTP POST请求方式,为了保证接口调用的安全性,采用了动态签名验证机制。
1. 请求地址结构
http(s)://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}{AppId}:替换为申请到的应用ID。{sign}:动态生成的签名。{ts}:当前Unix时间戳(秒),用于防止请求重放攻击。
2. 签名生成规则
签名生成逻辑清晰且安全性较高,具体步骤如下
将
AppSecret进行第一次MD5加密,得到字符串S1。将
S1拼接上当前的时间戳ts,得到字符串S2。将
S2进行第二次MD5加密,得到的字符串即为最终的sign。
公式表达:Sign = MD5( MD5(AppSecret) + ts )
三、 核心控制命令详解
针对35A智能空开,控制指令主要通过请求Body中的JSON字段传递。Body需要包含 device 和 order 两个字段。
设备指定 (device):支持单台或多台控制。如果是多台,设备ID之间用英文逗号隔开。
动作指令 (order):用于定义具体的通断行为。
1. 基本通断控制
针对35A型号(通常归类为单路或大功率通断器),控制电源通断的命令如下:
| 动作 | Order JSON 值 | 功能描述 |
|---|---|---|
| 开启 | {"power": 1} 或 {"power1": 1} | 线路闭合,输出端通电 |
| 关闭 | {"power": 0} 或 {"power1": 0} | 线路断开,输出端断电 |
注:不同批次的35A硬件命令可能存在细微差异。如果在使用
power无效时,可查阅产品手册确认是否需使用power1指令。
2. 高级功能:定时与点动
除了简单的开关,开发者还可以利用接口实现定时任务,无需在服务器端维护复杂的定时队列。
定时断开:开启空开后,保持通电一段时间后自动关闭。
命令示例
{"power": 1, "reset": 5000}含义:立即开启,并在 5000毫秒(5秒) 后自动关闭。
点动模式:模拟按键按下效果,接通一段时间后自动断开。
命令示例
{"point": 3000}含义:临时接通 3000毫秒 后自动断开(部分型号支持)。
四、 代码实战演示
签名生成是接入的核心难点,以Python和Java为例展示如何实现二次封装。
1. Python 实现
使用 requests 库,通过几行代码即可实现控制。
2. Java 实现
使用 OkHttp3 库,适合集成到Spring Boot等后端服务中。
五、 局域网与私有化部署
芯步的设备支持纯局域网环境运行,这对于工业厂房、内网环境是重要特性。
局域网IP控制:如果二次开发的应用服务器与35A空开处于同一个局域网内,可以通过设备自动获取的内网IP地址直接发送HTTP请求,不经过公网云平台。这要求开发者在设备配网时通过DNS或mDNS记录其IP,或者在数据库中将设备ID与IP进行绑定。
私有云:芯步支持将服务端私有化部署。在这种情况下,API地址需要从
api.thingboot.com替换为私有服务器IP:端口。
六、 总结与
对于开发者而言,35A智能空开的接口设计降低了接入门槛。在二次开发过程中,可以参考以下三个:
签名缓存
md5(AppSecret)的值是固定的,在一次会话中无需重复计算,可以将其缓存起来,只需在每次请求时拼接新的时间戳即可,可提升一定效率。状态同步:HTTP接口只管下发命令,如果需要实时获取设备当前最新状态(如本地手动按压开关导致的状态变更),通常需要在控制台配置消息推送回调(Webhook)或通过TCP长连接订阅,不能单纯依赖查询接口。
错误处理:在实际集成中,请一定要对HTTP返回码(如200成功,401签名错误,404设备不在线)进行处理。特别是签名错误时,输出详细的日志来核对拼接字符串。
通过上述方案,可以快速将该硬件集成到智慧楼宇、能源管理或自动化控制系统中。