CATALOG

芯步的12路照明控制器使用HTTP接口控制,签名生成和指令格式都很简单,以下方案说明如何把它集成到你的软件项目中。

解决方案:将芯步12路HTTP接口照明控制器接入软件项目

一、 前期准备

在写代码之前,我们需要先搞清楚两件事:硬件是啥钥匙在哪

  1. 硬件确认:我们使用的是 芯步 智能照明控制器12路16A (UNI-KZQ-ZM-12-16A) 。这玩意儿最大的特点就是直接连Wi-Fi,不需要买网关,插上网线/连上Wi-Fi就能上网,支持2.4G频段

  2. 获取三要素:登录芯步的控制台,拿到三个关键字符串:

    • AppId:你的应用ID,用来告诉服务器你要调用哪个应用的数据。

    • AppSecret (开发者密码):这个非常重要,是你的密钥,千万别写在代码里明文硬编码,更不要传到GitHub上。

    • Device ID:设备的唯一ID,印在设备盒子上或者在控制台都能看到

二、 核心原理:怎么发命令?

这套方案的核心就是 HTTP POST 请求。你的软件(不管是网页、手机App还是后台服务)作为客户端,向芯步的云服务器发送一条指令,云服务器再把指令推给插座。

这里有个“坑”需要注意: 芯步的接口响应非常快(大约80-120ms),但它的返回码 200 只代表“服务器收到了指令”,不代表“灯真的亮了”。如果设备掉线了,服务器也是返回200,但灯不会亮。如果需要确保设备执行了,需要去接收云端的异步消息推送

三、 技术环节:鉴权(签名计算)

它的接口格式是这样的:http(s)://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}

这里面最麻烦的就是 sign 的计算。虽然听起来复杂,其实就是 “套娃”sign = md5( md5(AppSecret) + ts )

通俗解释一下:

  1. 先把你的 AppSecret 进行MD5加密,得到一串字符串 A

  2. 获取当前的时间戳(精确到秒)ts

  3. Ats 拼在一起,再算一次MD5,结果就是 sign

具体例子(思路):假设你的密码是 abc123,当前时间是 1735689600

  1. 先算 md5(abc123) = e99a18c428cb38d5f260853678922e03

  2. 再算 md5(e99a18c428cb38d5f260853678922e03.1735689600) = xxxxxxx

这样做的目的是为了防止别人篡改请求,因为时间戳变了,签名就变了,非常安全。

四、 实战:如何控制12路灯光?

拿到签名后,就可以发命令了。对于12路控制器,它的命令格式非常简单,通常是一个JSON对象。

场景A:打开第1路,关闭第2路

场景B:我需要把所有灯都打开(全开)不需要写12行代码,直接这样发:

(注:部分版本的控制器支持 power 统控,具体可参考产品手册)

场景C:我想关掉第5路

五、 网络部署方案:公网 vs 局域网

这里有两种玩法,取决于你们公司对网络安全的变态程度。

方案一:标准云模式(简单,推荐)设备连接芯步的公网云,你的软件也调用公网API。

  • 优点: 在哪都能控制,不用配置路由器,有手就行。

  • 缺点: 如果公司断网了,你就没法关灯了(虽然现在断网的概率比停电还低)。

方案二:私有化/纯局域网模式(为了稳定和安全)如果你们的办公网络极其保密(比如军工单位),不允许设备上网,芯步也支持纯局域网控制操作步骤:

  1. 给设备插上网线,让设备拿到一个局域网IP(比如 192.168.1.50)。

  2. 你的软件直接给这个IP发POST请求:http://192.168.1.50/control

  3. Body里面直接传 {“power1”: 1} 即可。

  • 优点: 速度极快(局域网内基本无延迟),完全不依赖外网,数据不出厂区。

六、 代码集成小技巧(伪代码思路)

不管你是用 Java, Python, PHP 还是 Node.js,逻辑都是一样的。

1. 后端封装函数千万不要在每个页面都写一遍签名算法,一定要封装成一个服务。

2. 定时任务/自动化场景既然接了API,你就可以玩出花了。比如在你的软件里加上:

  • 定时任务:每天18:00,调用API关掉靠窗的那一路灯光(节能)。

  • 传感器联动:如果接入人体传感器,人走光了,API一键全关。

  • 一键情景模式

    • 汇报模式:关掉第1-5路(屏幕灯),调暗第6路(演讲台灯光)。

    • 下班模式:直接把 order 里所有的 power1power12 都设置为 0

七、 避坑指南

  1. 别用Get请求:虽然有时候浏览器能打开,但涉及到控制设备,一定要用 POST,数据格式必须是 JSON

  2. 时间戳同步:计算签名用的 ts 必须是级(10位),不是毫秒级(13位)。如果服务器时间和你电脑时间差太多,签名会验证失败。

  3. 特殊字符:如果你要给设备改名或者发播报指令(如果有语音功能),涉及到中文,芯步的私有化接口可能需要 GBK 编码,如果是公网接口直接用 UTF-8 JSON 就行,这点对接前看一眼手册最保险

总结

接入芯步的12路控制器,重点就是搞定那个“二次MD5加密”的签名算法。一旦这个通了,剩下的就是往 order 对象里塞 power1power12 的键值对了。