CATALOG

芯步的智能2路交流远程控制模块提供标准的HTTP接口,这意味着你可以用任何编程语言将它集成到自己的系统中。下面从接口能力分析、控制指令实现、状态反馈机制到代码示例,完整说明二次开发的全过程。

一、 解决概述

目标:通过对芯步 UNI-KZQ-AC-2(智能2路交流控制器)进行二次开发,实现以下功能闭环:

  1. 远程控制: 通过自有软件(Web/App)独立控制第1路和第2路的通断。

  2. 状态反馈: 实时获取当前线路的实际通断状态(避免因本地物理开关操作导致软件界面状态不同步)。

  3. 线路检测: 检测线路是否存在异常(如过载断开、电压异常等,视具体硬件参数而定)。

核心技术路径:由于该设备开放 HTTP 接口,开发模式通常为 请求-响应 模式:

  • 软件后端 → 调用芯步API → 设备执行动作 → 返回结果。

  • 设备主动上报状态一般依赖于轮询(Polling)。

二、 二次开发核心设计

在进行代码编写前,采用以下分层架构来设计你的系统:

  1. 基础设施层: 芯步2路智能控制器(Wi-Fi连接)及被控电器(灯光、电机、水泵等)。

  2. 接入层/驱动层:你的业务服务器

    • 职责: 封装芯步的HTTP接口;管理设备的AppID、AppSecret、签名算法;处理并发请求。

  3. 应用层: 你的业务逻辑(如定时任务、联动规则)。

  4. 展示层: Web前端、App、小程序。

在这种架构下,前端并不直接调用硬件接口,而是请求你的后端,由你的后端完成与芯步云端的交互,这样可以有效保护你的 API 密钥,并方便进行权限控制。

三、 接口对接与功能实现详述

根据官方手册,该设备的控制核心在于 HTTPS 请求。你需要关注三个核心参数:AppID(身份)、sign(签名/Token)、ts(时间戳)。

1. 认证与签名机制 (Sign)

为了防止接口被恶意篡改,芯步通常采用动态签名验证。实现逻辑:

  • 获取当前时间戳 ts

  • AppID, AppSecret, DeviceID, ts 按特定顺序排序并拼接。

  • 进行 MD5 或 SHA256 加密生成 sign

  • 注意:需要处理时间戳过期的逻辑(通常允许前后5分钟误差)。

2. 核心控制指令开发

你需要开发一个通用函数,用于向设备发送指令。指令参数通常通过 URL 或 POST Body 传递。

  • 控制第1路闭合(开):

    • Method: GET/POST

    • URL: https://api.yoyoiot.com/device/control

    • Params: device_id=xxxx&channel=1&status=on&sign=xxx&ts=xxx

  • 控制第2路断开(关):

    • Params: device_id=xxxx&channel=2&status=off&sign=xxx&ts=xxx

关键点: 这种直接控制的方式属于 “异步指令” 。调用接口成功仅代表指令已下发给设备,不代表设备真的动作了(可能存在设备离线情况)。

3. 线路状态反馈与同步机制

这是二次开发中最重要的环节——“控制反馈闭环”。你需要保证软件界面的“开关”图标与物理灯的实际亮灭状态一致。

方案 A:主动查询(轮询机制)这是最通用且兼容性最好的方式。每隔几秒(根据实时性要求, 2s-5s),你的服务器主动调用“设备状态查询接口”。

  • 接口: 获取设备状态。

  • 返回参数示例:

  • 实现: 你需要在数据库中存储最新状态,当Web前端轮询你的服务器时,返回这些数据。

方案 B:设备上报(回调/Webhook 机制)芯步平台通常支持配置 HTTP 回调(Webhook)

  • 逻辑: 当设备状态发生变化时(无论是App控制还是手动按按钮),芯步服务器会主动把你的服务器地址(URL)发起请求,推送最新状态。

  • 优势: 实时性比较高,无需轮询,节省服务器资源。

  • 开发任务: 你需要提供一个公网可访问的API接口(如 /yoyo/callback),用于接收和处理平台推送的JSON数据,并更新数据库。

4. 代码开发逻辑示例(伪代码/逻辑流程)

场景:用户在 Web 端点击“打开第1路”

  1. 前端操作: 点击按钮,显示“加载中”。

  2. 后端接收:receiveRequest('open_channel_1')

  3. 生成签名: 后端计算 sign

  4. 调用接口:http_get('https://api.yoyoiot.com/ctrl?ch=1&status=1&sign=xxx')

  5. 解析响应:

    • 若返回 {"code":200, "msg":"success"}:告知前端“指令下发成功”,并乐观锁更新界面为“开启状态”。

    • 若返回错误码(如 501 设备离线):告知前端设备不在线。

  6. 异步确认(关键步骤):

    • 方案A:前端轮询 -> 2秒后前端再次请求后端获取最新状态 -> 后端查询缓存或再次调用查询接口 -> 返回真实状态 -> 前端修正界面。

    • 方案B:被动接收 -> 设备执行完成后,芯步服务器请求你的Callback -> 更新数据库 -> 前端若长连接(WebSocket)则实时收到变化。

四、 高级应用场景与优化

1. 互锁逻辑开发

如果2路控制的是同一个电机的正反转(如电机正转/反转),绝不能同时闭合两个继电器。开发策略: 在你的业务后端添加防呆逻辑。

  • 当收到 开启通道1 的请求时,代码先判断 通道2 当前状态是否为 on

  • 如果是 on,先调用 关闭通道2 接口,成功后再调用 开启通道1,或直接拒绝请求并报错。

2. 故障报警系统

基于状态查询接口,开发一个定时任务(例如每 1 分钟执行一次)。

  • 查询设备 online 状态。如果离线,发送告警(钉钉/邮件)。

  • 线路检测:如果硬件支持电压/电流反馈,可以设定策略:如果继电器状态为 on,但检测到 voltage 为 0,判定为“设备异常”,并自动尝试复位。

3. 私有化部署与内网穿透

手册提到支持自建消息服务器和纯局域网环境。

  • 场景: 如果你的服务器和设备在同一局域网内(或通过VPN连接),开发时应调用设备的内网IP(如果支持本地API)。

  • 优势: 速度更快,且不依赖外网带宽,数据更安全。

五、 开发注意事项

  1. 超时设置: 控制指令发出后,由于 Wi-Fi 信号问题,设备响应可能在 1-3 秒。你的 HTTP 客户端(如 Python requests, Java HttpClient)需设置合理的超时时间( 5s 以上),防止请求被中断。

  2. 调用机制处理: 你的系统需要具备调用机制。如果用户连续点击两次“关闭”,第一次执行成功,第二次应直接返回“已关闭”,而不是再去调用硬件接口报错。

  3. 日志记录: 专门为硬件接口建立一个日志模块,记录每一次请求的 Request 和 Response。在排查“灯为什么没亮”这类问题时,这是唯一证据。

六、 总结

基于芯步开放接口的二次开发,核心在于 “桥接”你需要通过 HTTP 协议将所有功能无缝集成到你现有的业务系统中。通过上述方案,你不仅实现了基础的“开”和“关”,还通过 “轮询+回调” 的双重机制解决了工业控制中至关重要的 “状态反馈” 问题,使非智能设备在你的系统中变得“智能”起来。

控制器产品方案:
4路共享空间智能控制器MINI:怎么把4路包间电源智能控制器MINI对接到自己的项目中
查看 >>
怎么在网咖电竞包间管理中对接智能设备以实现多包间批量开关控制
查看 >>
怎样在照明控制中对接智能硬件以实现多达24路独立线路控制
查看 >>
怎样在无人值守包间设备控制中接入智能设备以实现HTTP接口远程独立控制通断
查看 >>
剧本杀密室包间场景:怎样把HTTP接口包间控制器接入到自己的项目中
查看 >>
线路场景方案:
怎样接入8路防水防尘控制箱来实现远程控制8路线路
查看 >>
如何在车间设备机柜电源控制中对接智能设备来实现线路状态反馈控制
查看 >>
如何接入智能 24 路远程开关控制模块来实现远程控制24路线路
查看 >>
怎么接入24 路智能分体远程设备集中控制模块以实现线路状态反馈控制
查看 >>
怎么在写字楼办公区三路线路管理中接入智能硬件以实现设备联动控制
查看 >>
反馈用途方案:
怎样在实验室设备电源管理中对接智能硬件以实现设备运行状态反馈
查看 >>
怎么在调度站语音播报中接入智能设备以实现设备状态语音反馈
查看 >>
如何对接24路高集成度控制器以实现负载状态反馈控制
查看 >>
如何对接15W 智慧园区语音终端来实现设备状态语音反馈
查看 >>
怎样对接60A带计量数显额定 13200W 断路器来实现电路状态反馈控制
查看 >>