IoT

通过设备标签实现设备地理分布展示(GIS)最佳实践

前言

在物联网场景中,设备会部署在不同的位置,而在施工前又很难确定设备位置,后续业务又需要根据设备信息做管理。这种场景我们可以通过IoT物联网平台提供的设备动态打标签功能,让程序实现,避免人工录入错误。

我们以智能自动售货柜管理为例,给大家展示设备标签功能。

西湖景区自动售卖机分布情况
image.png

技术方案

每个设备在线后,通过发送数据(publish)到IoT平台的标签更新的Topic来实现真实坐标更新。

设备标签请求Topic

       /sys/{productKey}/{deviceName}/thing/deviceinfo/update

设备标签数据Payload

{
  "id": 1570605202,
  "version": "1.0",
  "params": [
    {
      "attrKey": "coordinate",//标签(坐标key为coordinate,其他标签可自定义key)
      "attrValue": "120.14915:30.230687"//标签值
    },
    {
      "attrKey": "city",//标签
      "attrValue": "杭州"//标签值
    }
  ],
  "method": "thing.deviceinfo.update"
}

智能售货机设备本身有GPS模块,我们可以获取到对应的经纬度,通过高德地图解析服务,可以获取到当前所在城市。有了以上信息后,我们发送Payload数据到指定topic,给我们设备打上独特的标签。

image.png

日志服务

通过日志服务,我们可以排查具体设备动态打标签的过程。
进入日志服务,选择对应产品,输入要查询的设备deviceName,在关键词里输入deviceinfo,点击搜索,就可以筛选出来更新设备标签的消息记录。
image.png

点击messageID,我们可以看到这条消息的详情信息,包括上报的topic和2个设备标签数据。
image.png

扩展场景

筛选设备

当设备更新标签后,我们可以按照标签搜索符合条件的设备。
image.png

规则引擎数据流转携带标签信息

规则引擎数据处理SQL也支持通过attribute(key)函数获取key所对应的设备标签值。比如attribute('city')可以获取到值 "杭州"
使用attribute函数的SQL参考:

SELECT 
deviceName() as deviceName,
timestamp('yyyy-MM-dd HH:mm:ss') as time,
attribute('city') as city,
price, 
userId 
FROM 
"/a8*****i3B/+/user/order/data"

附录

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *