CATALOG

针对芯步吸顶式红外感应开关,实现“定时状态上报”的核心思路并非由设备主动按时间周期上传——该类传感器采用事件驱动上报机制,即仅在状态发生变化(有人⇌无人)时推送数据。若需满足定时记录的需求,标准方案是由您的服务器自行实现定时拉取或通过设备配置实现周期性心跳。

以下是基于其开放接口的详细技术方案:

1. 核心对接机制解析

首先要理解设备的数据流逻辑,这直接决定了代码如何编写。

  • 数据流向:设备 ---> 芯步云 ---> 您的服务器

  • 触发条件:设备仅在红外感应状态改变(例如从“无人”变为“有人”,或“有人”变为“无人”)时,才会向云端上报数据,云端随即转发给您

  • 接口形态:根据您的部署模式(公有云或私有化),对接方式略有不同,但数据结构一致

    • 公有云模式:在控制台配置 HTTP 回调 URL,云平台 POST 数据至此地址。

    • 私有化模式:在设备配置中填写自建服务器的 URL,设备直连 POST 数据。

2. “定时状态上报”的解决方案

由于设备默认不支持按秒/分钟主动上传(无变化时不发数据),若要实现“无论有无变化,每5分钟/1小时上报一次状态”,需采用以下推荐方案

方案:应用层主动轮询(服务器拉取)

这是最符合该硬件特性的方案,即由您的业务服务器主动发起查询。由于设备是 WiFi 直连,响应极快(约 80-120ms),您可以利用定时任务(Crontab、Jenkins 或 Quartz)调用接口获取状态

  • 实现逻辑

    1. 启动一个定时器(如每 5 分钟执行一次)。

    2. HTTP 请求您的业务服务器逻辑 -> 调用芯步 设备控制 接口。

    3. 下发查询命令:虽然叫“控制接口”,但它也用于查询。针对该传感器,通常查询 infrared_target(红外感应)和 power(线路)属性。

  • 接口调用示例您需要向 https://api.thingboot.com/{AppId}/device/control/ 发起 POST 请求。

    • 请求参数

      • device: 设备 ID(如 820720)。

      • 命令内容 (order): 由于查询指令通常是获取物模型当前值,标准的做法是下发一个空查询或读取系统信息。根据文档,若要获取状态,可以尝试下发读取网络信息或状态属性的命令。注:详细指令需查阅具体产品的“设备指令”列表,通常标准的传感器支持读取当前属性。

    • 返回处理:接口会实时返回设备的当前状态,您记录到数据库即可完成“定时打点”。

    注意:如果是私有化部署且完全在内网,您可以直接通过 HTTP 请求设备在局域网内的 IP 地址,免去云端中转。

3. 关键数据传输格式定义

无论采用上述哪种方案,您都会接触到包含状态数据的 JSON 包。请确保后端解析逻辑覆盖以下字段。

状态改变时(设备 -> 云 -> 您)的推送数据包示例:

解析重点message.data 是一个数组,必须遍历读取 infrared_target 的值。

4. 私有化部署的地址配置

如果您需要数据完全不出局域网(纯内网定时上报),需按以下步骤配置

  1. 通过配网工具进入设备配置页。

  2. 寻找 “消息上报URL”“HTTP推送” 设置项。

  3. 填入您的内网服务器地址:http://[您的服务器IP]:[端口]/api/receive

  4. 设备会尝试将状态变化 POST 至该地址;若需要定时拉取,您的轮询脚本也应直接请求设备内网 IP。

5. 补充:通过配置影响上报频率

虽然不能直接修改定时上报周期,但可以通过修改 “红外无人触发持续时间” 配置项,间接影响设备状态(从而触发上报)

  • 场景:有些场景下,人离开后设备立即上报“无人”,但您觉得频率太高。

  • 操作:通过控制台或指令修改 infrared_change_0 配置项(例如设为 10m)。

  • 效果:当人离开后,设备会等待 10分钟 确认无人后,才将状态变更为“无人”并上报。这相当于过滤了短期内频繁的“无人”上报,保持了数据稳定性。

方案总结

  • 如果您需要准确的整点/间隔记录:请采用 方案一(应用轮询)。由于设备响应极快(毫秒级),设置一个每分钟执行的定时任务对服务器压力极小,且能完美实现“定时快照”。

  • 如果您只需要感知变化:直接接收 typestateHTTP 回调即可,这是最省资源的做法。