CATALOG

芯步的智能包间控制器采用 HTTP 接口开放,无需网关、支持局域网私有化部署,对接门槛较低。以下方案涵盖接口协议、签名计算、命令构造、状态同步策略,以及扫码上电、定时断电、语音播报等典型场景的代码实现思路。

一、 背景与选型

在棋牌室、茶室或共享自习室的无人值守改造中,痛点在于远程控制计时计费联动。业主需要随时查看包间状态,并在用户下单或时间结束后自动执行断电。

为何选择芯步“智能8路包间控制器”:

  • 丰富的接口(路数) :8路设计通常覆盖了麻将机(插座)、空调(16A/30A大功率)、照明、排风扇以及门锁电磁铁,支持独立分控

  • 开放性:支持标准HTTP协议,不需要私有的SDK或复杂的网关,只要设备联网即可通过任何后端语言(Java, Python, PHP, Node.js)调用

  • 部署灵活性:支持私有化部署(局域网IP直连),无需将数据上传至芯步公共云,保护商业数据隐私,且即使外网断开,在局域网内依然可以控制

二、 对接设计

在系统架构上,采用 “用户端小程序/App -> 业务服务器 -> 芯步设备” 的三层架构。

  • 业务服务器:核心逻辑层。负责接收用户下单指令,计算剩余时间,调用芯步API。

  • 芯步云/本地服务器:作为中转,负责维护设备的长连接或下发指令到路由器。

  • 8路控制器:接收HTTP指令,执行通断电。

提示:为了避免云端网络波动,采用混合模式。常规控制走芯步公共API(维护方便),核心的开锁/关电指令同时支持局域网IP直发,作为备用通道。

三、 核心对接流程:接口调用详解

芯步的接口设计比较简洁,你只需掌握签名算法和命令格式。

1. 准备工作

在芯步开发者后台:

  • 获取 AppIdAppSecret (开发者密码)

  • 将设备上电并配网,获取目标设备的 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路控制器,协议通常定义线路编号为 power1power8

    • 开启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点”的订单。

  1. 业务系统创建订单,状态为“待使用”。

  2. 用户点击“开房”或扫码门锁进入,或者系统在支付成功后自动下发指令。

  3. 接口调用

    注:如果带有语音播报功能,可增加 {"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秒后自动断开)

五、 局域网私有化部署进阶

如果你将控制器用在商业场景,且路由器网络质量不稳定,或者不希望受外网抖动影响,采用局域网对接模式芯步设备支持局域网发现功能

  1. 在路由器中给设备分配静态IP。

  2. 你的本地服务器(或部署在门店的管理端)直接通过HTTP请求该设备的局域网IP,而不是请求芯步的云端API api.thingboot.com

  3. 这种方式下,控制指令响应速度极快(<20ms),且完全不依赖宽带出口,即使运营商光纤被挖断,你的局域网内扫码开门、断电功能依然正常。

六、 异常处理与

在开发过程中,有几点需要关注:

  1. 接口超时与重试:如果调用API返回超时,切勿立即重试(防止继电器抖动造成设备反复开关)。应在后端记录日志,延迟3秒后查询一次设备状态,确认是否真的执行失败。

  2. 设备离线处理控制器依赖WiFi。如果设备离线,API调用会立即失败。:在业务前端增加提示“当前包间网络异常,请联系店员”,或者引导用户使用蓝牙或扫码开启备用开关(如果设备支持的话)。

  3. 安全性签名用的 AppSecret 绝对不要放在前端小程序代码中,必须在你的后端服务器调用

  4. 大功率负载棋牌室的空调和麻将机属于感性负载,启动电流大。请一定要确认8路控制器对应端口的额定电流是否匹配(如空调使用30A继电器端口),避免烧毁触点

七、 总结

通过对接芯步的8路包间控制器,可以将传统棋牌室升级为24小时无人自助模式。核心对接代码工作量极小(封装一个控制类即可),主要的精力应放在业务逻辑的闭环上:如下单触发通电、计时结束前预警并断电、以及打扫模式的总闸断电。

开发流程:

  1. 在芯步后台获取 AppID 并开启调试模式(此时可不验证签名,方便抓包测试)

  2. 使用 Postman 发出一条 {"power1":1} 命令,看到灯亮。

  3. 编写后端签名函数,将其集成到你的棋牌室管理系统中。