一、为啥要搞这个“断电保护”?
先说说咱们会遇到啥问题。共享棋牌室、茶楼这种地方,包间里的电器越来越多——灯、空调、麻将机、饮水机、门禁锁……万一哪天突然跳闸或者有人误操作把电断了,正在打麻将的客人得多扫兴?生意还怎么做?
所以咱们今天要聊的,就是怎么利用芯步8路智能包间控制器 + 它的开放接口,自己搭一套异常断电保护机制。说白了就是:让系统在意外断电时能自动响应,而不是等人发现再去处理。
二、用到的硬件是啥?
主角是芯步的 “智能包间控制器|Max”(也叫UNI-KZQ-BJ-MAX)。
简单介绍一下这哥们儿的本事:
8路独立控制:每路都能单独用HTTP接口控制开和关
各路负载能力
第1、2、3路:10A,接照明、换气扇这些
第4、5、6路:16A,接饮水机、麻将机
第7路:10A,接门禁电磁锁
第8路:30A,接2匹空调
联网方式:WiFi 2.4G,直接连路由器,不需要网关
接口协议:开放HTTP接口,任何能发HTTP请求的编程语言都能调
也就是说,这玩意儿可以把包间里所有电器都管起来,还能远程控制。
三、断电保护的核心思路
要实现断电保护,关键在于 “检测”和 “恢复” 两个动作:
怎么知道断电了? —— 不是靠控制器自己报(它断电了自己也没法报),而是靠业务系统的心跳检测或者状态轮询。
断电后怎么恢复? —— 恢复供电后,系统自动把电器恢复到断电前的状态。
整体流程大概是这样的:
正常运营中 → 系统记录每路设备的开关状态 → 突然断电 → 控制器离线(系统检测到心跳超时)→ 恢复供电 → 控制器重新上线 → 系统检测到设备重连 → 自动下发恢复命令 → 电器回到断电前状态
四、具体对接方案
4.1 准备工作
把8路控制器装上,按手册接好各路电器
配网,让控制器连上WiFi
在芯步控制台拿到三个东西:
AppID、AppSecret、设备ID准备一台服务器跑业务逻辑
4.2 接口怎么用
控制器用的是标准HTTP接口,控制指令长这样
签名规则(以PHP为例)
控制单路的指令格式
开第1路:
{"power1":"1"}关第1路:
{"power1":"0"}同理
power2~power8控制其他路
批量控制
全开:
{"batch":{"power":1}}全关:
{"batch":{"power":0}}指定多路开:
{"batch":{"relay":[1,3,5,7],"power":1}}
先断后通(重置类操作)
意思是先把这几路断开,等2秒后再通电——这个功能对某些需要重启的设备特别有用。
4.3 状态记录怎么做
核心思想:任何对设备的操作,都要在数据库里留一份状态记录。
比如每次调用控制接口的同时,更新Redis或MySQL里这张表:
| 包间ID | 设备ID | 线路1状态 | 线路2状态 | ... | 线路8状态 | 更新时间 |
|---|---|---|---|---|---|---|
| room_01 | xxxxx | 1 | 0 | ... | 1 | 2026-06-05 14:30:00 |
为什么要记? 因为恢复供电后,你得知道之前各个电器是开着的还是关着的,才能正确恢复。
4.4 心跳检测机制
怎么知道设备掉线了又重连了?
方案一(推荐):用芯步平台的状态回调
芯步平台应该支持设备上下线的事件推送(具体可以参考官方文档配置)
平台检测到设备上线/离线,主动HTTP回调你的服务器
你在回调里触发恢复逻辑
方案二(兜底方案):自己轮询
定时(比如每30秒)调用设备状态查询接口
如果连续N次查询失败