如何从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

相关文章
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
13159 0
【RESTful】RESTful API 接口设计规范 | 示例
|
关系型数据库 MySQL Docker
docker部署logstash
docker部署logstash
docker部署logstash
|
物联网 开发工具
物联网平台实用技巧:设备端检测自己是否在线
基于MQTT接入的设备靠心跳保活,但心跳是周期性的、且自动收发和超时重连,这些特性给主动检测设备端是否在线带来了一定难度。本文提供通过消息收发是否正常判定设备是否在线的原理、流程、实现方式。
4953 1
|
人工智能 自动驾驶 云栖大会
大模型赋能智能座舱,NVIDIA 深度适配通义千问大模型
9月20日杭州云栖大会上, NVIDIA DRIVE Orin系统级芯片实现了与阿里云通义千问多模态大模型Qwen2-VL的深度适配。阿里云、斑马智行联合NVIDIA英伟达推出舱驾融合大模型解决方案,基于通义大模型开发“能听会看”的智能座舱助理,让车内人员通过语音交流就能操作座舱内的各类应用,享受极致丰富的交互体验。
754 14
|
人工智能 Ubuntu Linux
RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务
开始搭建RK3568的基础虚拟机,具备基本的通用功能,主要包含了串口工具minicom,远程登陆ssh,远程传输filezilla,代码编辑工具vscode。
RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务
|
消息中间件 NoSQL Redis
【赵渝强老师】Redis消息的生产者消费者模式
消息队列在Redis中可通过List数据结构实现,支持发布者订阅者和生产者消费者两种模式。生产者通过`lpush`向List添加消息,消费者通过`rpop`或`brpop`消费消息,后者支持阻塞等待。示例代码展示了如何使用Redis的生产者消费者模式。
406 0
|
SQL 数据挖掘 数据库
SQL计算班级语文平均分:详细步骤与技巧
在数据库管理中,经常需要统计和查询各种汇总信息,如班级某科目的平均分
|
前端开发 数据库 JavaScript
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
53627 11
|
调度 项目管理 计算机视觉
『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径
该文章详细解释了如何在软件项目管理中安排进度与跟踪,特别是如何计算和利用关键路径方法(CPM)来优化项目时间管理。
|
安全 Linux Shell
Linux服务器 /etc/pam.d目录下的文件都是什么作用?
【8月更文挑战第2天】Linux服务器 /etc/pam.d目录下的文件都是什么作用?
1814 2