芯步的智能包间控制器采用 HTTP 接口开放,无需网关、支持局域网私有化部署,对接门槛较低。以下方案涵盖接口协议、签名计算、命令构造、状态同步策略,以及扫码上电、定时断电、语音播报等典型场景的代码实现思路。
一、 背景与选型
在棋牌室、茶室或共享自习室的无人值守改造中,痛点在于远程控制和计时计费联动。业主需要随时查看包间状态,并在用户下单或时间结束后自动执行断电。
为何选择芯步“智能8路包间控制器”:
丰富的接口(路数) :8路设计通常覆盖了麻将机(插座)、空调(16A/30A大功率)、照明、排风扇以及门锁电磁铁,支持独立分控。
开放性:支持标准HTTP协议,不需要私有的SDK或复杂的网关,只要设备联网即可通过任何后端语言(Java, Python, PHP, Node.js)调用。
部署灵活性:支持私有化部署(局域网IP直连),无需将数据上传至芯步公共云,保护商业数据隐私,且即使外网断开,在局域网内依然可以控制。
二、 对接设计
在系统架构上,采用 “用户端小程序/App -> 业务服务器 -> 芯步设备” 的三层架构。
业务服务器:核心逻辑层。负责接收用户下单指令,计算剩余时间,调用芯步API。
芯步云/本地服务器:作为中转,负责维护设备的长连接或下发指令到路由器。
8路控制器:接收HTTP指令,执行通断电。
提示:为了避免云端网络波动,采用混合模式。常规控制走芯步公共API(维护方便),核心的开锁/关电指令同时支持局域网IP直发,作为备用通道。
三、 核心对接流程:接口调用详解
芯步的接口设计比较简洁,你只需掌握签名算法和命令格式。
1. 准备工作
在芯步开发者后台:
获取
AppId和AppSecret(开发者密码)。将设备上电并配网,获取目标设备的
Device ID(设备编号)。
2. 签名机制 (Sign)
所有接口都需要携带签名以保证安全性。签名算法为:md5( md5(AppSecret) + ts )。
ts:当前Unix时间戳(秒)。
步骤:先将
AppSecret进行MD5加密得到字符串A;将字符串A拼接上时间戳ts得到字符串B;再将字符串B进行MD5加密。
代码示意 (Python):
3. 下发控制指令 (核心)
这是业务中最常用的部分。请求地址如下:
POST https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}
关键参数解析:请求体为JSON格式。
device:设备的ID。order:具体的控制动作。针对你的8路控制器,协议通常定义线路编号为power1到power8。开启1路(如照明):
{"power1": 1}关闭4路(如空调):
{"power4": 0}批量操作:如果需要一键“清场”关闭所有包间电源,可以使用批量指令:
{"batch": {"relay": [1,2,3,4,5,6,7,8], "power": 0}}。
4. 设备状态同步(WebSocket/回调)
单纯的HTTP请求是单向的,你需要知道设备当前的真实状态(例如:用户手动按下了墙上的物理开关?或者网络断线了?)。
推荐方案:在业务系统中设置一个状态缓存表。
实时推送:芯步支持消息推送。当设备状态发生变化时,它会主动推送消息到你预先设置的服务器地址(Webhook)。你的服务器接收到推送后,更新数据库中的“包间状态”。
轮询兜底:如果没有配置推送,可以每隔30秒调用一次查询设备状态接口,获取最新状态。
四、 棋牌室业务场景实战应用
将接口能力转化为具体的无人值守功能,主要有以下几个关键场景:
第一种场景:用户下单自动通电
用户在小程序支付了“晚8点至早8点”的订单。
业务系统创建订单,状态为“待使用”。
用户点击“开房”或扫码门锁进入,或者系统在支付成功后自动下发指令。
接口调用
注:如果带有语音播报功能,可增加
{"play:gbk:16":"欢迎光临,麻将机已通电"}。
第二种场景:计时管理与定时断电(核心防跑单)
这是无人棋牌室最核心的功能,防止用户超时占用。
策略A(标准做法):业务服务器建立定时任务。订单结束时间=当前时间+购买时长。当系统时间到达结束点时,服务器主动下发
{"power2": 0}(切断麻将机电源)。策略B(设备端离线执行):为了防止在订单结束时,恰好你的服务器或网络出现故障,可以利用设备的定时任务功能。在用户下单时,通过API向设备写入一个定时任务:例如“在2小时后,关闭线路2”。这相当于给设备上了一个闹钟,即使断网,设备到点也会自动断电。
语音预警:在断电前1分钟,调用语音播报接口。
order: {"play:gbk:16":"您的包间时间即将用尽,如需续费请扫码"}。先礼后兵,用户体验更佳。
第三种场景:行政锁与清场
每天凌晨,或者打扫卫生时,需要确保所有设备关闭。调用批量控制命令:
此指令一次性将所有继电器断开,避免逐个发送请求的网络延迟。
场景四:门锁联动(电插锁)
通常第7路或第8路专门用于门锁控制。
用户下单前,门锁电路是断开的,门打不开。
用户下单成功,
order: {"power7": 1}(通电5秒后自动断开,让门锁收回锁舌)。电磁锁通常需要“点动”控制,即通电1-2秒立刻断电,否则会烧毁线圈。
点动指令
{"point": {"relay": [7], "interval": 1000}}(意思是1路通电1秒后自动断开)。
五、 局域网私有化部署进阶
如果你将控制器用在商业场景,且路由器网络质量不稳定,或者不希望受外网抖动影响,采用局域网对接模式。芯步设备支持局域网发现功能。
在路由器中给设备分配静态IP。
你的本地服务器(或部署在门店的管理端)直接通过HTTP请求该设备的局域网IP,而不是请求芯步的云端API
api.thingboot.com。这种方式下,控制指令响应速度极快(<20ms),且完全不依赖宽带出口,即使运营商光纤被挖断,你的局域网内扫码开门、断电功能依然正常。
六、 异常处理与
在开发过程中,有几点需要关注:
接口超时与重试:如果调用API返回超时,切勿立即重试(防止继电器抖动造成设备反复开关)。应在后端记录日志,延迟3秒后查询一次设备状态,确认是否真的执行失败。
设备离线处理控制器依赖WiFi。如果设备离线,API调用会立即失败。:在业务前端增加提示“当前包间网络异常,请联系店员”,或者引导用户使用蓝牙或扫码开启备用开关(如果设备支持的话)。
安全性签名用的
AppSecret绝对不要放在前端小程序代码中,必须在你的后端服务器调用。大功率负载棋牌室的空调和麻将机属于感性负载,启动电流大。请一定要确认8路控制器对应端口的额定电流是否匹配(如空调使用30A继电器端口),避免烧毁触点。
七、 总结
通过对接芯步的8路包间控制器,可以将传统棋牌室升级为24小时无人自助模式。核心对接代码工作量极小(封装一个控制类即可),主要的精力应放在业务逻辑的闭环上:如下单触发通电、计时结束前预警并断电、以及打扫模式的总闸断电。
开发流程:
在芯步后台获取
AppID并开启调试模式(此时可不验证签名,方便抓包测试)。使用 Postman 发出一条
{"power1":1}命令,看到灯亮。编写后端签名函数,将其集成到你的棋牌室管理系统中。