前言

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

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

西湖景区自动售卖机分布情况
图片

技术方案

每个设备在线后,通过发送数据(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,给我们设备打上独特的标签。
图片
通过云端API给设备打标签
图片
​​API列表​​

日志服务

通过日志服务,我们可以排查具体设备动态打标签的过程。
进入日志服务,选择对应产品,输入要查询的设备deviceName,在关键词里输入deviceinfo,点击搜索,就可以筛选出来更新设备标签的消息记录。
图片
点击messageID,我们可以看到这条消息的详情信息,包括上报的topic和2个设备标签数据。
图片

扩展场景

筛选设备
当设备更新标签后,我们可以按照标签搜索符合条件的设备。
图片
规则引擎数据流转携带标签信息
规则引擎数据处理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"

附录

物联网平台产品介绍详情:​​https://www.aliyun.com/product/iot/iot_instc_public_cn​​
图片

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

阿里云AIoT
7 声望4 粉丝