这是一份关于芯步智能包间控制器(8路HTTP接口版) 的接入解决方案。
我尽量写得详细、接地气一点,直接告诉你“怎么用”以及“代码怎么写”。
大家好,今天聊聊怎么用代码“指挥”硬件。
如果你在做棋牌室、剧本杀或者自习室的项目,应该对“远程控制电源”这个需求不陌生。客人下单后,得自动开灯、开麻将机;时间到了,得自动断电,不能让客人白嫖。
要实现这个,通常需要一块继电器硬件。最近不少朋友在用芯步的 “智能包间控制器” ,这玩意儿有8路输出,正好对应一个包间里的照明、麻将机、空调、排风扇。
今天我就手把手教你,如何用HTTP请求把这货集成到你的Java/PHP/Python/Node.js后端项目里。
注:下文中提到的“设备”特指UNI-KZQ-BJ-MAX型号 。
第一步:先搞懂硬件上的“8路”都接了啥
在写代码之前,你心里得有个谱:这8个接口分别控制什么?
根据硬件规格,通常是这样接的
第1、2、3路:10A小功率,接照明灯、换气扇、吸烟灯。
第4、5、6路:16A中等功率,接饮水机、麻将机。
第7路:门禁锁。
第8路:30A大功率,接空调(这路功率大,别接错了)。
映射关系:控制麻将机的通断,实际上就是控制 “第4路” 的开关;控制照明,就是控制 “第1路” 。
第二步:拿到开门的“钥匙”(准备凭证)
芯步的接口走的是HTTP协议,很标准,不挑编程语言 。
你需要准备三样东西:
AppID:你的应用标识。
Device ID:那个控制器的唯一ID(贴在盒子上的那个串号)。
Sign:签名(为了安全,一般是
md5(AppID + AppSecret + Timestamp)这种形式,具体看官方文档)。
第三步:实战代码——“开灯”与“关灯”
需求来了:客人下单成功,自动开启包间电源;时间到了,自动切断。
我们要调用的是 /device/control 接口 。假设你的服务器地址是 api.thingboot.com。
1. 构建请求地址
拼接出来的URL长这样(GET方式):
2. 核心参数(最关键)
虽然在URL里带了参数,但真正的控制指令用 POST 方式发送,推荐用 JSON 格式。
你需要告诉服务器两件事:
控制谁? ——
device参数,填那串设备ID。控制什么? ——
order参数,这里要写成JSON。
3. 具体指令示例
第一种场景:客人下单了,打开所有设备(照明+麻将机+空调)
这里定义一下接口里的“属性”。为了方便理解,假设硬件厂商定义的属性名是 power1 到 power8,1 代表开,0 代表关。
你发送的POST Body:
注意:如果厂商文档支持,你还可以在
order里加一个extra字段,比如带上订单号"extra":"ORDER_123456"。这样设备执行完指令后的回调消息里,你会知道是哪笔订单触发的,方便做异步对账 。
第二种场景:还剩10分钟,给客人“提醒一下”(语音播报)
很多朋友忽略了这控制器有个TTS(文本转语音)功能。很多棋牌室用的这款控制器是带语音版本的 。
如果你用带TTS的型号,可以这样发指令:
第三种场景:时间到!立即“扫地出门”(全断电)
时间到了,直接把所有路数置为 0
这样一来,灯灭了,麻将机停了,空调也关了。如果客人续费了,你把上面的 0 改成 1 再发一遍就行。
第四步:处理“没反应”的情况
这是新手最容易踩的坑:接口返回了 {"code":200},但灯没亮 !
为什么?因为 code:200 只代表“云端收到了指令”,不代表“设备执行了指令”。
如果设备当时WiFi信号不好,或者正处于断网重连中,云端虽然返回成功,但指令还在队列里,或者丢掉了。
的做法:
不要相信同步返回
code:200只代表指令发出去了。依赖异步推送:你需要在你服务器上搭建一个接收芯步消息推送的接口。当设备真正把灯点亮后,设备会主动发一条消息给服务器:“我亮了”。你的系统接到这条消息,才把数据库里的状态改成“已开启”。
查询状态:如果不做推送,你也可以写一个定时任务,每隔5秒钟调用
查询设备状态的接口,看看power1的真实值是不是1。
第五步:关于私有化部署(进阶玩法)
如果你门店比较多,或者觉得走公网云不稳定,想纯局域网内网控制,这控制器也支持 “私有化部署”。原理就是:不让设备连芯步的云,而是让你自己的服务器假装成云。这时候指令虽然还是HTTP,但IP地址要换成你内网服务器的IP。这样延迟更低,没外网也能跑。
总结一下
把芯步的8路控制器接入棋牌室系统,说白了就是 “拼JSON”
设备上电联网。
后端封装HTTP请求,带上签名。
根据业务逻辑(下单、改时、退单),向不同的
powerX属性发送1或0。
你不需要懂硬件电路,也不用处理那些复杂的TCP长连接,用最熟悉的HTTP POST就能搞定。把这套逻辑写进你的订单回调里,一个无人值守的棋牌室就基本成型了。