CATALOG

一、为啥要搞这个“断电保护”?

先说说咱们会遇到啥问题。共享棋牌室、茶楼这种地方,包间里的电器越来越多——灯、空调、麻将机、饮水机、门禁锁……万一哪天突然跳闸或者有人误操作把电断了,正在打麻将的客人得多扫兴?生意还怎么做?

所以咱们今天要聊的,就是怎么利用芯步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请求的编程语言都能调

也就是说,这玩意儿可以把包间里所有电器都管起来,还能远程控制。

三、断电保护的核心思路

要实现断电保护,关键在于 “检测”“恢复” 两个动作:

  1. 怎么知道断电了? —— 不是靠控制器自己报(它断电了自己也没法报),而是靠业务系统的心跳检测或者状态轮询

  2. 断电后怎么恢复? —— 恢复供电后,系统自动把电器恢复到断电前的状态。

整体流程大概是这样的:

正常运营中 → 系统记录每路设备的开关状态 → 突然断电 → 控制器离线(系统检测到心跳超时)→ 恢复供电 → 控制器重新上线 → 系统检测到设备重连 → 自动下发恢复命令 → 电器回到断电前状态

四、具体对接方案

4.1 准备工作

  1. 把8路控制器装上,按手册接好各路电器

  2. 配网,让控制器连上WiFi

  3. 在芯步控制台拿到三个东西:AppIDAppSecret、设备ID

  4. 准备一台服务器跑业务逻辑

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_01xxxxx10...12026-06-05 14:30:00

为什么要记? 因为恢复供电后,你得知道之前各个电器是开着的还是关着的,才能正确恢复。

4.4 心跳检测机制

怎么知道设备掉线了又重连了?

方案一(推荐):用芯步平台的状态回调

  • 芯步平台应该支持设备上下线的事件推送(具体可以参考官方文档配置)

  • 平台检测到设备上线/离线,主动HTTP回调你的服务器

  • 你在回调里触发恢复逻辑

方案二(兜底方案):自己轮询

  • 定时(比如每30秒)调用设备状态查询接口

  • 如果连续N次查询失败