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

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

参数说明:
image.png

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
 

             阿里云物联网平台客户交流群


阿里云AIoT
7 声望4 粉丝