芯步的12路照明控制器确实是个好东西,接口开放得也很彻底。下面我从实战角度,跟你聊聊怎么通过HTTP接口把这12个回路管起来,特别是实现“分组控制”——比如一键关掉所有走廊灯,或者只控制某一排灯光。
一、搞清楚我们的目标:不仅是控制,更是“分组”管理
我们先明确一下场景。你手里有一台12路照明控制器(UNI-KZQ-ZM-12-16A),它接了12盏灯或者12组灯。
单控:调用接口告诉它“把第3路打开”。
分组控制:你把第1、3、5路定义为“左侧灯光”,然后直接发指令“关闭左侧灯光”,不管中间那几路是什么状态,一次性全关了。
我们要实现的就是后面的“分组控制”。这能让你不用关心单个设备ID,只需要关心业务场景(比如“会议室模式”、“下班全关”)。
二、准备阶段:拿到你的“钥匙”
在开始写代码之前,你得先在芯步的后台拿到几样东西,这就像进门的钥匙:
AppID 和 AppSecret:这相当于你的系统在芯步平台上的用户名和密码。在控制台的“开发设置”里能找到。
设备ID:先把那台12路控制器添加到你的账号下。在设备列表里,你会看到一个纯数字的ID(比如
123456)。建立分组:这一步是核心。你需要在接口里或者控制台手动创建一个分组,比如叫“展厅灯光”,然后把刚才那台设备(甚至多台设备)加进去。记住这个返回的
group组ID。
三、实战核心:用HTTP接口实现分组控制
芯步这里做得比较人性化,12路控制器的命令很规整。这一台设备虽然只是一个硬件,但因为分12路,我们通常把它当作12个逻辑设备来管理。
第一种场景:创建并配置分组
首先得让平台知道哪些回路属于一组。你可以调用 “维护设备分组” 接口,把设备的特定回路加到一个组里。不过需要注意,如果你想把同一台设备的第1路和第2路分到不同的逻辑组里(比如1路归“A组”,2路归“B组”),可能需要稍微动点脑筋。通常的做法是:在分组时,把设备当作最小单位。如果你需要精细到回路的分组,可以在自己的业务数据库里建一张映射表,记录“哪个分组包含了哪台设备的哪一路”。
第二种场景:开始下发分组控制命令
这是最关键的一步。假设我们已经有了一个分组ID(比如 group=100),这个分组里包含了12路中的某几个回路。现在我们想把它全关掉。
接口地址:
请求参数(JSON格式):
如果你这个分组里包含的设备都是这同一种12路控制器,并且你想把这个分组里的全部回路都关掉,最简单的写法是:
如果你觉得这样写太长了(确实12路写起来挺累),别忘了它还支持 batch 批量操作
这段代码的含义是:向
100号分组发送指令,针对relay数组里列出的所有回路,把power统一设置为0(关闭)。
四、举个更生动的例子:PHP代码片段
假设你用PHP写后台,当你点一下“下班关灯”按钮时,后端大概就是这么写的(概念代码):
五、必看的小贴士
签名机制:上面的
sign计算方式是官方常见的md5(md5(密钥).时间戳)。这一点非常重要,如果算错了,接口会直接报错401或者sign_invalid。私有化部署:芯步这套东西支持纯局域网运行。如果你是在一个保密要求高、不允许联外网(Internet)的机房里用,可以把API地址改成你们局域网内部的服务器地址,这样速度更快也更安全。
状态同步:当你通过分组控制关掉灯后,想确认是不是真的关了?可以调用获取设备状态接口,看看
power1是不是变成了