CATALOG

芯步的4路灯光控制器接口确实挺简单的——核心就是一个HTTP请求,签名算好、指令拼对,剩下的就是开关逻辑了。下面我按实际对接顺序来写,从签名到代码到后续扩展都覆盖到。

一步一步来:把4路灯光控制器接到你的软件里

大家好啊!今天咱们聊聊怎么把芯步那个4路远程灯光控制模块,快速对接到你自己的软件项目里。

不管你是做门店管理系统、智慧办公平台,还是搞智能家居中控,只要需要远程控制灯光,这篇文章应该都能帮上忙。

一、咱们要控制的是个啥设备?

先简单认识一下这个硬件。芯步的智能照明控制器4路(型号:UNI-KZQ-ZM-4),说白了就是一个装在配电箱里的小盒子。它有什么特点呢?

  • 4路独立控制:可以分别控制4路灯,互不影响。比如一路管收银台射灯,二路管用餐区主灯,三路管装饰灯带,四路管卫生间照明。

  • 电压和功率:工作电压AC100-250V(咱们国内220V直接就能用),每路最大支持10A。这意味着每路接几百瓦甚至上千瓦的LED灯都没问题,一个店铺用足够了。

  • 联网方式:用的是2.4G WiFi,不支持5G频段,这点配网时要注意一下

简单来说,这设备就是一个“能联网的智能开关”,你给它发指令,它就帮你合上或断开对应的继电器,灯就亮了或灭了。

二、对接前要准备什么?

动手之前,先把这几样东西准备好:

  1. 硬件设备:一台4路控制器,接好线、通上电、连上WiFi。

  2. 开发者账号:去芯步开放平台注册一个账号。

  3. 应用ID和开发密码:登录控制台后,创建一个应用,系统会给你一个AppId,然后自己设置一个开发密码(App Secret)。这两个东西相当于你的“用户名”和“密码”,调用接口时要用。

  4. 设备ID:在控制台的设备列表里,或者直接看设备外壳上的标签,找到你的设备ID(就是一串数字)

三、核心步骤:怎么发指令?

准备工作做完,接下来就是重头戏——怎么用代码控制它开灯关灯。

第一步:搞懂接口地址

接口地址长这样:

http(s)://api.thingboot.com/{你的AppId}/device/control/?sign={签名}&ts={时间戳}

这里有三样东西是动态的:

  • {你的AppId}:替换成你的应用ID。

  • {ts}:当前的时间戳,精确到秒。

  • {sign}:签名,用来验证你的身份,需要按照规则计算出来

第二步:学会算签名

很多人在签名这一步会被卡住,但其实特别简单。官方的签名规则是:

sign = md5(md5(开发者密码) + "." + 时间戳)

翻译成人话,分三步走:

  1. 先把你的开发密码做一次MD5加密。

  2. 把上一步的结果加上一个点“.”,再加上时间戳(比如1704067200),拼成一个新字符串。

  3. 把这个新字符串再做一次MD5加密,得到的32位字符串就是sign。

举个例子:假设你的开发密码是abc123,时间戳是1704067200

  • 第一步:md5(“abc123”) = e99a18c428cb38d5f260853678922e03

  • 第二步:拼起来 ”e99a18c428cb38d5f260853678922e03” + “.” + “1704067200” = ”e99a18c428cb38d5f260853678922e03.1704067200”

  • 第三步:md5(“e99a18c428cb38d5f260853678922e03.1704067200”) 得到的结果就是sign。

注意:所有计算都用小写字母。

实际开发时,你不需要手动算,写个函数就行。后端代码或者前端需要调接口的地方,都实时计算这个签名。

第三步:拼请求包

芯步的接口支持POST方式,数据用JSON格式。一个典型的开关灯指令是这样的:

这个命令的意思是:让设备ID为820720的控制器,把第1路打开(1)第2路关闭(0)第3路打开(1)第4路关闭(0)

  • power1power2power3power4 分别对应4个回路。

  • 1表示开,0表示关。

如果你想只控制其中一路,其他的保持不变,也可以只传一个参数,比如只关掉第2路:{“device”:820720, “order”:{“power2”:0}}。但是为了方便和省事儿,通常把4个状态都带上,避免出现意料之外的“误动作”。

第四步:完整调用示例

我把上面三步串起来,用Python给大家写个简单的例子:

需要注意的是,接口返回200只代表平台成功接收了指令并下发给了设备,不代表设备已经执行成功了。如果设备刚好断网,或者继电器坏了,你可能收不到执行反馈。在要求比较严格的场景(比如收银台必须关灯),对接云端的消息推送,通过异步消息确认设备真正执行了命令。

四、进阶玩法:不只是开和关

如果你以为只能简单的开关,那就太小看它了。它还支持一些更高级的玩法:

  1. 批量控制:如果你店里有好几台控制器,想一键关掉所有灯,可以同时传多个设备ID,用逗号或竖线分隔。比如 device”820720|820721|820722”,一次请求关掉三台设备。

  2. 分组控制:你可以在芯步的控制台把某几路灯(可能跨不同控制器)设成一个分组。然后直接调用分组控制接口 group/control,一次操作控制整个分组的开关。比如“所有展示柜照明”设为一组,“打烊全关”设为一组。

  3. 延时通断:有时候我们不是立即开关,而是想延迟几秒。比如楼道灯,人走后延迟30秒再关。接口支持pointreset这些命令,可以实现先通后断、先断后通的效果。格式像这样:{“point”:{“relay”:[1,3],“interval”:1000}} 表示让第1、3路在1秒后接通。

五、在软件项目中怎么集成?

上面讲的是最底层的接口调用,那在实际的软件项目中,你应该怎么设计呢?总不能每次点个按钮都去现拼签名吧?

我的是:在你的后端服务器封装一层自己的API

你可以写一个“灯光控制服务”,对外提供简单的RESTful接口,比如 POST /api/light/control,请求体就传 {“device_id”: “xxx”, “power1”: 1, “power2”: 0}。后端收到请求后,再去帮你做签名、拼参数、调用芯步的接口。这样做有几个好处:

  • 前端只需要调用你自己的接口,不用操心签名逻辑和设备ID管理。

  • 可以在你自己的服务里做权限控制——只有店长才能关总闸,普通店员只能调亮度。

  • 方便记录操作日志:谁在几点关了哪盏灯,出了问题好追溯。

如果你们的项目偏简单,比如就是一个小程序直接控制,前端直接调芯步的接口也是可以的,但注意要把AppId和开发密码放在服务端计算,不要写在前端代码里。

六、写在最后

有的朋友可能会想:“这个只能控制4路,我店铺比较大,十几路怎么办?”其实芯步还有8路、24路的型号,命令格式和签名逻辑完全一样,只是power参数从4个变成8个或24个

另外,如果你想做更智能的控制——比如根据人走过自动开灯、根据环境亮度自动调节——可以搭配芯步的人体传感器或光照传感器一起用。传感器检测到数据后会推送到你的服务器,你收到消息后再调用控制接口完成联动

希望这篇文章能帮到你!对接过程中如果遇到具体问题,可以留言交流~