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

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

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"
}

参数说明:

参数 类型 说明
status String 设备状态,online上线,offline离线
productKey String 设备所属产品的唯 一标识
deviceName String 设备名称
time String 此条消息发送的时间点
utcTime String 此条消息发送的UTC时间点
lastTime String 状态变更前 最后一次通信时间
说明 可能是PUBLISH,PING等。
utcLastTime String 状态变更前最后一次通信的UTC时间
clientIp String 设备公网出口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
 
阿里云物联网平台客户交流群

 


请使用浏览器的分享功能分享到微信等