CATALOG

共享台球室的智能化改造中,照明控制是最基础也最关键的一环——用户开单后自动通电、时间到前提醒、超时自动断电,这些体验都依赖照明开关与软件系统的联动。以下方案围绕芯步智能照明控制器(8路)的HTTP接口,说明如何将1路物理触摸开关集成到软件项目中。

1. 解决概述

在共享台球室场景中,用户通过小程序开单后,对应的台球灯应自动亮起;用户点击“结束”或时长耗尽,灯光自动熄灭。同时,为了符合物理操作习惯,墙上的触摸开关需要保留,允许用户在打球过程中手动关灯(如暂时休息)或开灯。

痛点:物理开关直接切断电路会导致设备离线,软件无法同步状态,造成计费混乱(用户关灯但订单未结束)。

解决方案思路:采用“软件定义输入输出”的模式。物理开关不再直接控制强电负载,而是作为低压信号输入接入智能控制器;控制器负责执行通断,并通过 HTTP 主动上报状态变化,软件项目(小程序/后台)通过 API 同步状态并下发指令。

2. 硬件选型与接线方案

为了实现上述逻辑,需要选择具备多路控制开关量输入检测开放 API 的硬件。

推荐设备:芯步智能照明控制器(8路)

  • 型号参考:UNI-KZQ-ZM-8(8路版本)

  • 为什么选它

    • 8路独立控制:可覆盖台球室的多张球台,成本分摊低。单路负载能力强(10A/16A),适配大功率照明灯

    • 物理开关接入能力:设备自带开关量输入接口,正好用来接墙面的触摸开关(复位式/自复位式)。这解决了"物理按键损坏或线路复杂"的问题,将物理操作转化为低压数字信号

    • 开放性:支持 HTTP 接口,不依赖特定云平台,可私有化部署

物理触摸开关集成方案

  • 接线方式

    1. 强电端:台球室照明灯的火线接入控制器的第1路输出端(Relay 1),零线共用。

    2. 信号端:墙面的触摸开关(使用复位式自回弹开关)的两根线,接入控制器的开关量输入端(GPIO/DI 通道1)GND

    3. 电源:控制器接 5V/2A 供电,保持设备常在线。

这种接法下,触摸开关的作用是向控制器发送一个通断信号,而不是直接切断 220V 电路。

3. 软件集成架构

软件端采用 云云对接服务器直连 模式。由于芯步开放本地 API,将控制器与业务服务器放在同一局域网(如台球室本地服务器),公网则通过反向代理访问,保证响应速度。

  • 控制流(App/小程序 -> 灯光)用户点击小程序 -> 业务服务器 -> 芯步 API -> 智能控制器 -> 继电器吸合 -> 灯亮。

  • 状态流(物理开关 -> App/小程序)用户触摸墙面开关 -> 控制器检测到信号 -> 控制器切换继电器状态(本地执行) -> 控制器 HTTP 推送给业务服务器 -> 服务器更新订单状态或仅更新界面。

4. 接口对接实现与代码示例

基于 HTTP 接口,采用 POST 请求,数据格式为 JSON。假设控制器设备 ID 为 LAMP_01,需要控制第 1 路。

4.1 核心接口逻辑(设备控制)

根据设备接口规范,控制指令通过 order 字段传递

功能:远程开启第1路照明

  • URLhttp(s)://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}

  • Method:POST

  • Body (JSON)

注:如果是批量控制或更高级的继电逻辑,可使用 batchpoint 命令

4.2 触摸开关与软件的联动逻辑(状态同步)

这是关键步骤。当物理开关被按下时,控制器会切换状态。为了确保 App 端显示正确,服务器需要知道这个变化。

方案一:HTTP 消息推送(推荐)在芯步控制台中配置 HTTP 回调 URL(由你的后端提供)。

  • 当物理开关触发第1路状态改变时,控制器会主动向你的服务器发送状态包。

  • 后端接收逻辑(示例如 Node.js 接收路由):

方案二:轮询接口如果无法配置公网回调,可以采用定时轮询:GET /device/query?device=LAMP_01服务器每 2 秒请求一次该接口获取 power1 值,感知开关动作。

5. 业务场景流程设计

场景 1:用户下单(开台)

  1. 用户小程序下单并支付。

  2. 业务系统创建订单,根据球桌号(如 1号桌)拼接设备 ID(DEV_01)。

  3. 调用 API:向该设备下发 {"power1": "1"}

  4. 1号桌球灯亮起,计时开始。

  5. 存在物理开关:如果此时用户误触墙面开关试图开灯(其实是关灯),控制器关闭继电器。

  6. 业务逻辑处理:服务器收到回调 power1=0

    • 策略 A(严苛计费):视为用户暂停/作弊,服务器立即下发 {"power1":"1"} 强制开灯(需做防抖处理,如3秒内不重复下发),软件端不影响计费。

    • 策略 B(人性化):确认关灯,App 端弹窗提示“灯光已关闭,订单仍在计时,请点击开灯”。

场景 2:倒计时结束

  1. 订单剩余 0 分钟。

  2. 调用 API:向设备下发 {"power1": "0"}

  3. 灯光熄灭。即使触摸开关再怎么按,由于订单结束,逻辑上业务服务器忽略或拒绝执行开灯请求。

场景 3:无订单操作(防逃单)

  1. 用户未下单,直接按触摸开关。

  2. 控制器推送状态给服务器。

  3. 服务器检测到“该设备无进行中的订单”。

  4. 执行保护逻辑:服务器向设备下发 {"power1":"0"},强制断电(或者设置设备不响应此开关操作)。

6. 总结

通过将 1路照明触摸开关 接入 芯步 8路智能控制器开关量输入端,并利用其 开放 HTTP API状态主动推送 能力,能够完美实现“软件控制优先,物理开关辅助”的共享台球室智能照明方案。

对于开发者而言,由于控制器本身提供了完整且简洁的 HTTP 接口文档,集成工作主要集中在 业务逻辑层 的状态机维护(计费中、暂停中、空闲中),以及利用 HTTP 回调 解决物理操作与软件系统的状态同步问题。最终方案可实现远程控制、物理本地控制和无人化自动管理的高效闭环