如何从5万设备中找出频繁掉线设备,长期不在线的设备?——设备管理运维类

文章介绍了如何通过物联网平台的规则引擎监听并处理设备的上下线状态变化。设备状态变更会生成特定topic的消息,服务端订阅后可获取信息。接着,配置SQL查询设备状态并流转至RDS,以历史记录确保在乱序消息中获取最新的设备状态。最后,通过查询设备_status_history表来获取设备的当前状态,主要依据lastTime排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过规则引擎监听设备上下线状态变更

1.设备上下线状态消息

当设备连接到IoT物联网平台,设备离线,在线状态变更会生成特定topic的消息,我们服务端可以通过订阅这个topic获得设备状态变更信息。
**

设备的上下线状态流转的Topic格式:

/as/mqtt/status/{productKey}/{deviceName}

payload数据格式:

{
    "status":"online|offline",
    "productKey":"pk13543",
    "deviceName":"deviceName1234",
    "time":"2018-08-31 15:32:28.205",
    "utcTime":"2018-08-31T07:32:28.205Z",
    "lastTime":"2018-08-31 15:32:28.195",
    "utcLastTime":"2018-08-31T07:32:28.195Z",
    "clientIp":"123.123.123.123"
}

参数说明:

参数类型说明
statusString设备状态,online上线,offline离线
productKeyString设备所属产品的唯一标识
deviceNameString设备名称
timeString此条消息发送的时间点
utcTimeString此条消息发送的UTC时间点
lastTimeString状态变更前最后一次通信时间
说明 可能是PUBLISH,PING等。
utcLastTimeString状态变更前最后一次通信的UTC时间
clientIpString设备公网出口IP

2.通过规则引擎流转设备状态

2.1 配置SQL

SELECT productKey,deviceName,
timestamp() as timestamp ,
status,
time as currentTime ,lastTime,clientIp
FROM "/as/mqtt/status/a1Xr8ofpSst/+" WHERE 

这样我们就可以从消息体获取到设备的status,currentTime和lastTime了。

规则引擎数据处理操作界面


2.2 配置数据流转RDS

规则引擎数据流转操作界面

在device_status_history表中,执行SQL统计出来设备上下线情况

2.3 设备当前状态

由于极端情况下频繁上下线,设备上下线的消息是乱序的,平台不保证上下线消息先后顺序,因此要根据lastTime排序,以最新时间的状态为准。

SELECT productKey,deviceName,status,lastTime,clientIp
FROM device_status_history
order by lastTime DESC

物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn
 
阿里云物联网平台客户交流群

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值