共享棋牌室的设备控制核心难点在于:一个包间内通常有麻将机、空调、照明、门锁等多路设备,需要独立控制而非简单全开全关。芯步24路控制器正好解决这个需求——每路独立继电器,通过HTTP API即可精确控制。以下方案涵盖接口对接、签名算法、业务场景等关键环节。
1. 解决概述
在共享棋牌室(无人值守自助棋牌室)的运营场景中,对包间内各类电器(照明、麻将机、空调、通风扇、门禁锁等)进行远程、精准、实时的电源控制是痛点。
本方案的目标是解决如何将 芯步【智能通用控制器|24路】 高效对接到您的现有软件项目(如小程序、SaaS后台、APP)中。该硬件支持 HTTP API 接口,通过标准的网络请求,可实现24路通道的独立通断控制、批量控制及场景联动。
适用场景
共享棋牌室/茶室:控制包间内麻将桌电源、空调、排风扇、氛围灯带。
分时租赁空间:计时收费自动通断电,用户下单后自动开启,超时自动断电。
集中管理:后台统一管理多个房间的用电设备状态。
核心技术优势
无需网关:设备直连WiFi 2.4G,降低部署成本。
接口开放:纯HTTP通信,兼容所有主流编程语言(Java, Python, PHP, Node.js, Go)。
私有化部署:支持局域网/IP直连,数据安全可控 。
高负载能力:支持单路最大2200W阻性负载,总负载4400W,可直接接入麻将机(感性负载约350W)和1.5匹空调 。
2. 硬件设备参数与接口定义
在对接前,需明确硬件的逻辑结构与API映射关系。
2.1 设备基础信息
产品型号:UNI-KZQ-TY-24
控制路数:24 路(继电器输出)
工作电压:DC 12V 2A
网络协议:WiFi 802.11 b/g/n 2.4GHz
核心接口协议:HTTP API / 支持签名鉴权
2.2 电气特性映射表
注意:对于麻将机(电机类负载,属于感性负载),请请一定要核实启动电流,单路负载不超过350W以确保稳定性。
| 逻辑通道 | 推荐控制设备 | 命令Key | 说明 |
|---|---|---|---|
| 线路 1 | 照明灯带 | power1 | 阻性负载,开关响应快 |
| 线路 2 | 换气扇/排烟 | power2 | 阻性负载 |
| 线路 3 | 麻将机电源 | power3 | 混合负载,直接控制插座通断 |
| 线路 4 | 空调(两匹) | power4 | 通过交流接触器连接大功率空调 |
| 线路 5 | 饮水机 | power5 | 阻性负载 |
| ... | ... | ... | 最多支持24路 |
| 线路 24 | 门磁/辅助 | power24 | 信号输出或低功率负载 |
| 全线路 | 一键全关 | batch | 清理房间时的快捷操作 |
3. 详细技术对接步骤
芯步的API采用动态签名鉴权,以下是具体的对接逻辑。
3.1 鉴权流程与签名算法
所有API请求都需要通过动态签名验证,防止接口被恶意篡改 。
核心逻辑:
准备参数
AppID(应用ID)、AppSecret(开发者密码)、ts(当前Unix时间戳秒)。生成签名 (Sign)公式为:
Sign = md5( md5(AppSecret) + ts )第一步:计算
S1 = md5(AppSecret)第二步:计算
Sign = md5( S1 + ts )
不同语言的代码实现示例:
Python 实现:
Java 实现:
3.2 对接核心 API:控制单路设备
这是项目中最常用的功能,例如用户在小程序点击“开灯”。
请求地址:
https://api.thingboot.com/{AppID}/device/control/请求方式:
POSTHeader:
Content-Type: application/jsonURL参数
sign: 上一步计算的值ts: 时间戳
Body 示例
Curl 命令示例
3.3 高级指令:批量控制与场景联动
棋牌室场景下,用户结束订单时需一键关闭所有设备(麻将机、空调、灯),可调用批量指令 batch 接口,无需循环调用24次HTTP请求 。
批量全关请求体示例:
3.4 状态同步与事件监听
作为共享棋牌室系统,您关心的是用户下单自动通电和超时自动断电。
主动查询:调用
device/status类接口获取当前各路开关状态(用于控制台展示)。被动接收:芯步平台支持 "消息推送" 功能,当设备状态变化时,平台会主动向您的服务器地址推送消息。配置此功能以确保数据库中的设备状态与实际物理设备实时同步 。
4. 软件项目落地架构
4.1 业务逻辑流程设计
将对接封装为 PowerControlService 服务层,在您的业务代码中这样调用:
用户预定/下单
前端请求 -> 后端业务逻辑(检查订单有效性) -> 调用硬件接口:为该房间的设备通电 (
power3=1,power1=1)。
用户开场/使用中
心跳保持:根据订单剩余时间,不做干预或闪烁提醒(调用TTS语音模块,如支持)。
用户点击“结束”/超时
后端验证 -> 若超时已发生 -> 调用硬件接口:全关 (Batch 命令 power=0) -> 更新设备状态 -> 结算。
4.2 代码架构
在项目中创建统一的 Device Gateway (设备网关层)
4.3 异常处理与重试机制
网络抖动:由于WiFi环境的不稳定性,HTTP请求可能超时。请在代码中实现 随机间隔(或逐次增大间隔)重试(最多3次)。
设备离线:当调用API返回
device offline错误时,您的软件应在前端提示“设备不在线,请联系管理员”,并触发警报机制。
5. 共享棋牌室典型场景实战:动态电源控制流程图
以下是完整的交互流程,展示了从用户下单到设备上电的全链路数据流:
sequenceDiagram
participant User as 微信小程序/用户
participant Backend as 您的业务服务器 (Go/Java/PHP)
participant YoyoAPI as 芯步开放API
participant Device as 智能通用控制器24路
participant Load as 包间电器 (灯/麻将机)
Note over User, Load: 1. 用户下单与准备阶段
User->>Backend: 请求开单/预定包间
Backend-->>Backend: 生成订单,支付校验
Note over Backend, Device: 2. 硬件控制指令下发
Backend->>Backend: 生成动态Sign签名
(md5(md5(AppSecret)+ts))
Backend->>YoyoAPI: POST /device/control
{power1:1, power3:1}
YoyoAPI->>Device: 通过WiFi透传指令
Device->>Load: 继电器吸合,220V通电
Load-->>User: 照明亮起,麻将机通电待机
Note over Backend, User: 3. 计费中与定时巡检
loop 每分钟巡检
Backend->>Backend: 比对订单剩余时长
alt 剩余5分钟
Backend->>YoyoAPI: 可选:调用TTS语音播报提醒
YoyoAPI-->>Device: 播报"余额不足,请续费"
end
end
Note over Backend, Load: 4. 订单结束,断电解约
User->>Backend: 请求结束订单
Backend->>YoyoAPI: POST /device/control
batch command (全关)
YoyoAPI->>Device: 断开所有回路
Device->>Load: 切断电源(灯灭/麻将机停)
Backend-->>User: 订单结算完成,欢迎下次光临6. 常见问题与解决方案
Q:24路控制器全都用来控制插座,怎么接门锁?A:24路控制器输出的是12V/220V信号。如果门锁是12V直流,可直接接其中一路;如果是磁力锁(需断电开锁),可利用控制器的“常闭/常开”触点逻辑来控制门禁电源。
Q:如何确保超时断电的绝对准确性?A:由于采用HTTP请求,网络延迟可能导致秒级误差。策略:软件层(订单到期立即发指令) + 硬件层(利用控制器自带的“定时任务”功能,在云端设置一个绝对时间点的备用断电指令)。
Q:能不能对接语音播报?A:虽然24路控制器本身主要做电源控制,但芯步生态中拥有智能语音喇叭。您可以在用户开门时,额外调用一次语音API接口:{"play:gbk:16":"欢迎光临,X号包间"}。您的软件项目可以同时对接电源控制器和语音设备,实现视听觉一体化。
Q:是否必须走公网?没有网络怎么办?A:该设备支持局域网通信。如果您的棋牌室内部署了本地服务器,可以将API请求指向设备的本地IP(在设备联网设置中开启局域网控制),实现纯内网控制,速度更快且不依赖外网 。
7. 结论
将芯步24路智能分体远程电源控制器对接到共享棋牌室软件项目中,本质上是通过 HTTP 协议进行 RESTful API 调用的过程。开发者只需处理好 动态MD5签名生成 和 业务状态机(订单状态 -> 通电/断电)的映射,即可在1-2天内完成核心功能的开发。
该方案不仅解决了传统布线的复杂性,依托其24路独立控制和开放的API体系,还能为您未来增加按摩椅、空气净化器等增值服务提供充分的扩展空间。