CATALOG

芯步24路控制器的开放接口支持HTTP和MQTT两种调用方式,分组控制的核心逻辑是:先通过设备分组接口将24个回路按需划分,再通过分组执行接口实现一键控制。以下方案涵盖分组创建、指令映射、二次开发封装三个关键环节。

解决方案:基于芯步开放接口实现24路控制器的分组控制模式

1. 背景与目标

芯步的智能通用控制器24路 (UNI-KZQ-TY-24) 提供了标准的Wi-Fi无线控制方案,支持通过HTTP接口进行远程控制。在复杂的工业或智能家居场景中,往往不需要单独控制每一个回路(例如1-24路),而是需要将多个回路组合成一个“组”(例如:灯光组、设备组、场景组)进行联动。

本文旨在指导开发者如何利用该设备的开放接口,通过二次开发实现分组控制模式,即通过软件层面的逻辑封装,将物理上的24路独立开关,重构为逻辑上的“自定义群组”,从而实现“一键执行”或“场景联动”。

2. 核心技术路径

要实现该目标,需要利用芯步开放平台的两个核心接口能力:

  1. 设备分组管理接口:用于将特定的设备(这里指24路控制器)添加到一个逻辑组中

  2. 分组执行接口:向指定的分组下发执行命令,组内设备将同步响应

由于24路控制器本身是一个拥有24个独立通道的单一设备,通常情况下无法直接通过硬件GPIO进行物理分组。因此,二次开发的策略是在云端或应用层建立“虚拟分组”

3. 详细实施方案

3.1 环境准备与鉴权

在二次开发前,需要获取必要的凭证以调用API:

  • AppIDAppSecret:在芯步控制台获取,用于身份识别。

  • 设备ID (Device ID):24路控制器在平台上的唯一标识。

  • 签名 (Sign) 计算规则:sign = md5(md5(AppSecret) + ts),其中ts为Unix时间戳

封装一个通用的请求函数来处理上述鉴权逻辑,这是所有二次开发的基础。

3.2 构建“虚拟分组”数据结构

由于只有一个物理设备(ID假设为 DEV_001),我们需要在数据库中(或内存中)构建一个映射表,代表“逻辑分组”与“物理通道”的关系。

数据结构示例 (JSON):

在此模式下,用户不再直接针对单路指令进行操作,而是针对groupId进行操作。

3.3 业务逻辑封装

二次开发的核心在于将“对分组的操作”翻译为“设备能识别的具体指令”。

第一步:封装指令转换器芯步24路控制器兼容通用的控制指令格式。假设我们需要控制第1路接通,标准指令为 {“power1”: 1};关闭第3路为 {“power3”: 0}

我们需要开发一个中间件函数 buildGroupCommand(groupId, action)

  • 输入:逻辑组ID,动作(开/关)。

  • 逻辑:查询步骤3.2中的映射表,获取该组包含的所有物理通道号(例如 [1,2,3])。

  • 输出:遍历通道号,构造一个聚合指令对象,例如 {“power1”: 1, “power2”: 1, “power3”: 1}

第二步:实现“一键全开/全关”模式例如用户点击“开启生产线A组”,后台逻辑如下:

  1. 解析得知“生产线A组”包含通道 5, 6, 7。

  2. 构造 order 参数:{“power5”: 1, “power6”: 1, “power7”: 1}

  3. 调用 设备控制接口/device/control/) 发送给 DEV_001

  4. 设备响应:3个继电器同时吸合。

第三步:实现“混合模式”(定时与互锁)除了简单的通断,还可以利用接口实现更复杂的逻辑,例如:

  • 闪断/点动:有些场景需要设备开启几秒后自动关闭(如门禁或报警器)。可以调用设备自带的 resetpoint 功能。在分组逻辑中,可以设定如果通道属于“脉冲组”,则下发 {“point1”: 1} 而非 {“power1”: 1}

  • 互锁逻辑:如果在同一分组中需要实现“一路开,另一路必须关”(例如正反转控制),需要在你的业务逻辑层进行判断。如果检测到groupId属于“互锁组”,指令转换器需要先下发一个关闭指令到互锁通道,再下发开启指令。

3.4 调用分组接口(备选方案)

如果开发者不希望自行维护复杂的通道映射,可以使用芯步原生的分组接口。但需要先将24路控制器的每一个“通道”注册为独立的“虚拟子设备”(视平台支持情况而定,通常使用第一种软件映射方案)。

原生分组控制请求示例 (HTTP POST):如果你想控制一个已经包含多个完整设备的分组,可以直接调用

4. 代码实现逻辑示例 (伪代码)

以下是以Python Flask框架为例,二次开发的一个新增接口,用于实现“按组控制”:

5. 注意事项与优化

  1. 延迟处理:由于是24路控制,如果分组中包含大量通道(如一次性控制24个回路),顺序下发24条指令会产生排队延迟。利用HTTP接口的批量能力,将多个powerX参数一次性放入order对象中,作为一个JSON包发送,这样设备端几乎可以同时执行所有动作

  2. 状态同步:在进行分组控制后,通过芯步的消息推送机制,订阅设备的状态变更。这能确保你的“分组开关”在APP上显示的状态(开/关)与实际物理设备的继电器状态保持同步

  3. 错误处理:在二次开发中,应处理接口返回的错误码。例如返回 502 表示分组不存在或设备离线,此时前端应提示“设备不在线”

  4. 本地化部署(可选):对于要求响应速度极快的工业场景,该设备支持私有化部署,API可直接指向局域网内的设备IP,从而绕过云层,进一步降低分组控制的响应延迟

6. 总结

通过上述二次开发方案,开发者无需修改硬件固件,仅需在应用服务器层建立通道映射表和指令转换中间件,即可将“智能24路远程开关模块”从单一的24个独立开关,升级为一个支持自定义情景模式群组联动的智能控制系统。该方案充分发挥了芯步接口高度开放、指令颗粒度细(精准到power1-power24)的优势。