如何从5万设备中找出频繁掉线设备,长期不在线的设备?-阿里云开发者社区

开发者社区> 阿里云物联网> 正文

如何从5万设备中找出频繁掉线设备,长期不在线的设备?

简介: 通过规则引擎监听设备上下线状态变更,了解设备运行情况

产品推荐:阿里云物联网开发者工具(IoT Studio),立刻免费体验吧!  
  

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

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了。

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

2.2 配置数据流转RDS

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

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

2.3 设备当前状态

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

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

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云物联网
使用钉钉扫一扫加入圈子
+ 订阅

致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。

官方博客
开发者交流群