芯步的复合开关设备提供了标准化的开放接口,支持HTTP和MQTT两种对接方式。以下方案围绕“故障检测-事件推送-告警分发”这条链路展开,你可以根据实际部署环境(公网/私有化)和编程语言偏好进行调整。
解决方案:基于芯步开放接口的智能门禁照明复合开关故障告警系统二次开发
1. 概述与设计
针对“智能门禁照明复合开关”的二次开发,核心在于利用设备现有的状态上报与心跳机制,结合HTTP/MQTT推送能力,构建一个独立的告警中台。
核心目标:实时监测复合开关控制的门磁状态、照明负载通断及设备在线情况。
触发机制
被动上报:门被非法打开、照明灯故障(电流/电压异常)时,设备实时上报数据。
主动探测:定时巡检设备最后上线时间,判定“设备离线”故障。
通知方式:集成第三方通知渠道(如钉钉、微信、邮件、本地声光报警器)。
系统架构流程图:
graph TD
A[智能复合开关设备] -->|HTTP/MQTT推送| B(芯步云平台)
B -->|消息转发| C[用户自建告警服务器]
C -->|数据解析与逻辑判断| D{故障类型判定}
D -- 非法开门 --> E[推送安保告警]
D -- 照明/电路故障 --> F[推送设备维修告警]
D -- 设备离线/心跳丢失 --> G[推送网络/断电告警]
E --> H[第三方通知渠道]
F --> H
G --> H
H --> I[管理员/运维人员]2. 智能复合开关的关键接口解析
在进行二次开发前,需理解芯步此类复合开关(如型号:UNI-KG-KC)的接口特性。其核心接口分为两类:下行控制(服务器发指令给设备)和 上行推送(设备上报状态给服务器)。
2.1 设备上行消息(故障数据源)
设备会在状态变化时向您的服务器推送 JSON 数据。您需要在芯步控制台配置您的 HTTP 接收 URL 或 MQTT 订阅主题。
主要关注以下推送数据:
设备状态推送
触发:门锁打开/关闭、照明开关动作、电量/电流异常。
字段解析:通常包含
device_id(设备ID)、power(继电器状态)、door_status(门磁状态,需确认该型号是否支持外接门磁)。
设备上下线消息(关键告警源) :
上线:设备联网成功(
type: connect)。下线:设备断开连接(
type: disconnect)。这里的reason字段非常重要:若为timeout通常代表断网或断电,是典型的故障告警触发点。
透传/异常数据:如果照明灯具出现过载或短路,复合开关内部的保护机制可能会触发断电并上报特定错误码。
2.2 下行控制接口(用于故障修复/复位)
当接收到告警后,管理员可能希望通过远程操作进行初步修复。
接口地址
http(s)://api.thingboot.com/{AppId}/device/control/请求方式:POST
关键参数
device:目标设备ID。order: 控制指令。例如{"power": 0}表示关闭照明,{"power": 1}表示重启照明尝试恢复。
3. 故障告警逻辑的二次开发实现
二次开发的核心工作是编写业务逻辑处理程序。以下分三个典型故障场景阐述开发方案。
3.1 第一种场景:门禁未关/非法开门告警
实现逻辑
数据接收:服务器接收到设备推送的状态数据。
逻辑判断
解析数据中的门磁状态(假设字段为
lock或contact)。若状态为
open,且当前系统时间处于“布防时段”(如深夜23:00-06:00),或该状态持续时间超过阈值(如5分钟)。
动作触发:生成告警事件。
伪代码示例
3.2 第二种场景:照明负载故障(灯具损坏/线路异常)
实现逻辑
数据采集:复合开关具备电压/电流检测功能(需确认具体参数)。当照明开启时,电流低于阈值(灯具损坏)或高于阈值(短路)。
数据接收:设备推送包含
current或load_status字段的数据。匹配判定:指令下发状态(
power:1)与实际电流值(current:0)不符,则判定为故障。
二次开发处理流程
服务器维护一个设备状态表。
若指令要求开灯,但收到的功率为0,则输出“灯具断路故障”。
立即调用告警接口,并管理员切断电源避免风险。
3.3 第三种场景:设备离线/心跳中断告警
实现逻辑
设备默认会发送心跳包。如果连续一段时间未收到设备消息,或收到 disconnect 消息。
消息接收:收到
type: disconnect。策略优化:由于网络波动可能导致频繁上下线,使用滑动窗口策略。
收到
disconnect后不立即告警,而是标记为“疑似离线”。启动定时器(例如30秒)。若30秒内未收到
connect,则确认真实故障。调用芯步查询接口,确认设备当前状态。
4. 告警通知体系的集成(输出端)
在识别到故障后,需要通过多种渠道将信息送达。
4.1 企业微信/钉钉/飞书机器人(最推荐,免费且实时)
实现:在您的服务器代码中,集成企业微信 Webhook。
场景:当触发“非法开门”时,群机器人自动发送卡片消息,包含设备位置、现场照片(需另配摄像头)、处理按钮。
进阶操作:可在消息卡片中附带“远程关灯”或“重启门禁”的链接。点击链接调用芯步的下行接口
[citation:2],实现直接在 IM 内修复故障。
4.2 语音播报告警(现场声光)
硬件:若现场有芯步的“智能语音喇叭”。
集成:在告警逻辑中,顺便调用语音喇叭的接口:
http://[喇叭IP]/speak?text= "仓库门未关闭,请立即检查"。同时,可以通过复合开关的接口,控制现场灯光闪烁(例如每隔1秒开关一次照明)作为视觉提醒。
4.3 数据持久化与统计看板
目的:便于追踪偶发性故障。
开发:将接收到的所有状态数据存入 MySQL/PostgreSQL。建立一个运维看板,统计“最常离线”或“灯泡故障率最高”的设备,进行预测性维护。
5. 私有化部署与网络容灾
芯步支持私有化部署,这对门禁系统至关重要,因为断网不能导致门禁失控。
局域网纯闭环
如果您的园区有本地服务器,开启私有化模式。所有故障告警数据在局域网内传输,延迟更低(<10ms),且断外网不影响告警逻辑(例如外网断了,但本地短信网关或警铃依然可以触发)。
离线缓存策略
在二次开发的服务端增加缓存(Redis)。即使告警接收端(如第三方 IM API)挂了,服务器也要保留最近 24 小时的故障记录,待恢复后补推。
6. 总结实施步骤
在具体落地实施时,可以按以下顺序推进:
环境准备:在芯步控制台创建应用,获取
AppId和AppSecret,配置消息推送 URL(通过内网穿透工具或在公网服务器上进行本地测试)。数据捕获:编写简单的 HTTP 接口打印
Request Body。让复合开关插拔一次,观察具体的 JSON 数据结构,确认门磁和灯的字段名。逻辑编码:根据字段编写
if-else判定逻辑(延时容错)。通道打通:配置企业微信机器人,将解析出的“故障文本”发到手机上进行测试验证。
闭环测试:模拟故障(比如拔掉照明灯、手动关门不到位),检查通知是否触发及恢复后是否发送了恢复通知。