吸顶式红外感应开关通常只输出“有人/无人”的布尔信号,但结合芯步的开放接口和物模型配置,可以实现更精细的状态反馈——包括触发持续时间调节、状态变化事件回调、以及与后端系统的联动。以下方案基于官方产品手册整理。
1. 背景与目标
吸顶式智能红外感应开关(产品型号参考:PIR-01/IR系列)通常用于检测移动的人体。通过二次开发,我们可以利用其开放的HTTP API,实时获取人员活动状态(有人进入、无人离开、持续时间等),从而联动楼宇自动化系统(BAS)、安防监控或能源管理系统(如自动关灯/开空调)。
核心目标:将物理开关的感应数据转化为软件层面的可编程事件。
2. 核心技术路径
二次开发主要基于事件驱动机制,而非轮询。
注册回调/消息推送:设备检测到状态变化时主动向服务器发送数据。
接口调用:通过API获取设备当前状态或配置参数。
数据解析:根据物模型(Thing Model)解析JSON数据包。
3. 关键物模型定义
在对设备进行开发前,需理解红外传感器的核心数据模型。以下是该产品的关键属性与方法:
3.1 状态属性(只读/上报)
| 属性标识符 | 数据类型 | 值说明 | 含义 |
|---|---|---|---|
infrared_target | Bool / Int | 1 (有人) / 0 (无人) | 核心状态:当前是否检测到活动人员 |
power | Bool / Int | 1 (通) / 0 (断) | 继电器/线路通断状态(如果是智能开关) |
3.2 事件触发(Event)
| 事件标识符 | 触发条件 | 上报数据 |
|---|---|---|
infrared_detect | 红外状态发生变化(有人变无人,或无人变有人) | 携带当前infrared_target状态 |
3.3 可配置参数(用于调节灵敏度/逻辑)
| 配置项 | 可选值 | 作用 |
|---|---|---|
infrared_change_1 | 0 (马上) / 1s / 2s... | “有人”触发持续时间:防止抖动,需维持该时间才判定为有人。 |
infrared_change_0 | 0 / 30s / 1m / 5m... | “无人”触发持续时间:检测到无人后,延迟多长时间上报“无人”事件。 |
infrared_enable | 0 / 1 | 红外模块的软开关 |
4. 开发环境准备与鉴权
在开始编码前,需在完成以下配置
获取凭证
AppID:应用唯一标识。AppSecret:开发者密码(用于计算签名)。
设备ID:获取目标吸顶开关的Device ID(如
110748)。网络环境:确保设备已配网且在线(Web控制台可查)。
签名计算规则
所有API请求需携带签名进行鉴权,具体算法如下
参数
ts= 当前Unix时间戳(秒)。算法
sign = md5( md5(AppSecret) + ts )注意:这是双重MD5计算,先将Secret进行一次MD5,再将结果字符串拼接时间戳后进行第二次MD5。
5. 实施步骤详解
第一阶段:设备配置(优化反馈逻辑)
为了避免频繁误报或无效上报,首先通过API配置设备的触发延迟参数,使其适应你的应用场景。例如,如果用于人员滞留监测,将“无人延迟”设置为较长的时间(如5分钟),避免人短暂离开立即触发“无人”事件。
示例:下发配置命令(HTTP API)请求地址POST https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}
请求体
注:部分配置项可能需要通过设备自身的闪存配置接口写入,具体请参照设备手册。
第二阶段:服务端接收状态反馈(最核心环节)
这是实现“人员活动状态反馈”的关键。由于传感器主动上报数据,你需要准备一台具有公网IP或域名的服务器来接收数据。
1. 设置消息接收服务器在芯步控制台中,配置“API推送”URL(例如:http://yourdomain.com/api/pir/callback)。当infrared_detect事件触发时,平台会向该地址发送POST请求。
2. 接收数据格式解析当有人走进感应区时,你的服务器会收到如下JSON数据包:
3. 服务端处理伪代码(示例)收到数据后,即可实现业务逻辑:
第三阶段:主动查询状态
如果服务端未成功接收回调,或者需要定时巡检保证状态一致性,可以通过API主动查询设备的当前状态。
请求示例GET https://api.thingboot.com/{AppID}/device/status/?device=110748&sign={sign}&ts={ts}
返回示例
6. 典型应用场景逻辑优化
在实际应用中,单纯依靠“有人/无人”往往不够,以下是如何利用参数提升反馈质量:
第一种场景:节能与照明
需求:人走灯灭,但不能让人在如厕时(静止)误判为无人离开。
方案:设置
infrared_change_0为 300秒(5分钟)。如果5分钟内持续检测不到移动,才判定为无人并关灯。注意:红外对静止物体不敏感,若需检测静坐,改用雷达传感器。
第二种场景:区域拥挤度统计
需求:统计该区域是否有人活动。
方案:开发端忽略频繁的“进入/离开”事件,而是记录
infrared_target = 1的有效工作时长。比如从收到1开始计时,直到收到0结束,上报一次“活动时段”。
第三种场景:故障与离线反馈
机制:结合设备的
boot事件。如果设备重启或上线,服务器会收到{"name":"boot"}通知,业务系统需将此状态标记为初始化或未知状态,避免误报“无人”。
7. 总结
通过芯步开放接口对吸顶式智能红外感应开关进行二次开发,主要工作量集中在服务端的事件接收处理上。
先调参:利用
infrared_change_0和infrared_change_1配置延时上报参数,匹配业务场景。抓事件:使用HTTP回调接收
infrared_detect事件,实现对人员活动的实时反馈。保底:使用
device/status接口作为兜底查询,保证数据最终一致性。
该方案无需对硬件固件进行修改,完全基于标准API实现,开发周期短,且可无缝集成到现有的智慧办公或智慧楼宇系统中。