CATALOG

共享自习室的灯光控制看似简单,但要在“用户扫码开灯”和“管理员集中管理”之间取得平衡,需要一套可靠的架构方案。以下从设备选型、接口对接、场景逻辑三个层面展开说明。

解决方案:共享自习室灯光电源集中控制 —— 基于芯步开放平台的 16 路分体远程控制器接入方案

1. 背景与需求分析

在共享自习室的运营中,电力控制(特别是座位灯和取电插座)是关键环节。传统方案往往面临布线复杂、成本高、无法与订单系统联动等问题。

核心需求:

  • 分区控制:自习室通常划分为“静音区”、“键盘区”、“小黑屋”等,需要将 16 路输出按物理座位灵活分组。

  • 订单联动:用户下单开始计时,座位灯自动亮起并供电;订单结束前预警,结束后自动断电。

  • 远程运维:管理员无需进入现场,可通过后台或小程序远程重启设备、查看继电器状态。

  • 低成本部署:利用现有 WiFi 网络,避免铺设长距离的控制信号线。

选用设备:采用芯步 16 路分体远程控制器(如基于 ESP32 或类似工业级 16 路继电器模块)。该设备支持 WiFi 无线连接,具备 16 路独立 IO 输出,可直接控制 220V 灯光或插座,且开放标准的 HTTP 接口

2. 整体设计

本方案采用“设备直连云端+业务系统集成”的架构,无需中间网关,降低故障点。

  • 设备层:16 路控制器安装在强电箱内,分别接入 16 个座位的灯光/插座线路。

  • 网络传输层:设备通过 2.4G WiFi 连接路由器,采用 MQTT/HTTP 协议与芯步云平台保持长连接

  • 平台层(芯步开放平台) :负责设备状态维持、指令转发和数据透传。

  • 应用层(您的软件项目) :包括用户端小程序(扫码开灯)、管理后台(总控大屏)、后端服务器(业务逻辑与订单处理)。

3. 接入实施步骤

3.1 硬件端配置(16 路控制器的初始化)

在将硬件集成到软件之前,需要完成设备的物理安装与网络配置:

  1. 接线定义:将控制器的 16 路继电器输出端(COM/NO)串联至座位的 LED 灯管或插座火线端。注意:16 路模块通常功率较大,需配备独立开关电源或强电接入

  2. 网络配网:通过芯步提供的配置工具或串口助手,将设备连接到自习室场地的 WiFi 热点。将路由器设置为双频隔离,仅使用 2.4G 频段以保证兼容性和穿墙能力

  3. 获取唯一标识:在芯步控制台中,记录下该设备的 Device IDAPI Key。这是后续软件寻址和控制这台 16 路设备的“身份证”。

3.2 软件对接:芯步开放接口集成

芯步的开放机制非常标准,兼容市面上主流的开发语言(Java, Python, PHP, Go 等)。对接过程主要围绕 设备控制接口状态回调机制 展开

核心工作:封装 HTTP 请求芯步控制接口基于 RESTful 风格。在您的后端代码中,需要封装一个通用的设备控制函数。

  • 请求地址http(s)://api.thingboot.com/{AppId}/device/control/

  • 请求方法:POST

  • 鉴权方式:动态 sign 签名 + ts 时间戳(防止重放攻击)。

  • 核心 Payload 数据结构

针对“16路分体”设备,JSON 命令体中必须包含 device ID 和具体的 order 指令。

技术亮点:由于是“分体”控制,我们必须利用 channel 参数来指定 1-16 路中的具体某一盏灯,而不是整体开关。

项目管理:在您的项目中创建一个 YoyoIoTService 类,负责处理签名生成和请求发送。例如,当用户在小程序点击“开灯”时,后台调用该方法,传入对应的座位号(映射为 channel 值)。

3.3 业务场景联动逻辑(关键)

这是将硬件变成“智能系统”的灵魂。需要在您的软件数据库中设计座位表,并建立 座位号 —— 控制器设备ID —— Channel 通道号 的映射关系。

  • 第一种场景:用户扫码落座

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

    2. 后端服务器收到支付回调,查询订单对应的座位映射关系:座位A -> 控制器SN:123456, 通道: 05

    3. 后端调用芯步 API:{"device":"123456", "order":{"channel":5, "power":1}}

    4. 座位 05 号灯亮起,插座通电。

    5. 优化体验:利用芯步的上行消息推送,服务器收到设备执行成功的回执后,再通知小程序开锁或显示“入座成功”。

  • 第二种场景:用户暂离/结束

    1. 用户点击“暂时离开”:API 下发 power:0 关灯,但订单状态保留为“暂离”。

    2. 用户点击“结束学习”:API 下发 power:0 关灯,订单结算。

    3. 防误判机制:为了避免用户关灯离开后灯被他人恶意打开,控制逻辑应锁定在“只有当前订单用户或管理员”可操作该继电器。

  • 第三种场景:管理员后台集中管控

    1. 在管理后台(Web 端)制作一个 4x4 的网格按钮,代表现场 16 个座位。

    2. 管理员点击“全部关闭”:后台循环调用 16 次 API,或如果该控制器支持批量指令(视具体固件支持),一次性关闭所有通道。

    3. 定时任务:设定每晚 23:00,服务器自动向该控制器发送全关指令,防止过夜忘关。

4. 软件功能模块实现细节

为了将 16 路控制器无缝融入现有项目,开发以下核心模块:

1. 设备状态同步服务虽然可以通过 HTTP 主动控制,但为了让界面实时显示灯的真实状态(例如物理开关被人误触),需利用芯步的消息推送机制。在芯步控制台配置您的后端回调 URL,当设备状态变化时(哪怕是在本地按键操作),平台会主动推送当前状态给您的服务器,服务器更新数据库中的“开关”字段,确保 App 端显示真实状态

2. 心跳与断网重连机制共享自习室客流量大,网络稳定性至关重要。16 路控制器应配置自动重连逻辑。如果 WiFi 断开,设备应进入本地自控模式(或者保持最后状态)。您的软件后端在调用接口时,需捕获超时异常,并提供“一键重试”或“网络异常提示”功能。

3. 分时分区策略利用 16 路独立的特性,您可以实现精细化节能:

  • A区(靠窗) :白天光线好,继电器输出 80% 电量或仅控制氛围灯。

  • B区(小黑屋) :24 小时全时照明。

  • 人走灯灭(联动传感器) :如果自习室座位安装了人体传感器(同样来自芯步),当传感器检测到无人 15 分钟后,服务器自动调用 API 关闭该座位的对应通道

5. 总结

  1. 开发工作量极小:芯步提供的是标准 HTTP API,您无需编写任何 TCP 层或 MQTT 底层代码,只需在现有后端代码中增加几行发送 HTTP 请求的工具类即可

  2. 部署灵活:设备直连 WiFi,无需额外购买网关,适合已有网络覆盖的共享自习室改造项目

  3. 高扩展性:目前的 16 路方案解决了灯光问题。未来如果引入“智能音柱”(背景音乐)或“烟雾传感器”,可以用同一套接口规范进行管理,无需重构系统

通过以上步骤,您只需关注芯步的 HTTP 接口调用细节,就能快速将 16 路分体控制器的强大硬件能力,转化为共享自习室软件项目中稳定、可控的“能源管理系统”。