前言
在物联网场景中,设备会部署在不同的位置,而在施工前又很难确定设备位置,后续业务又需要根据设备信息做管理。这种场景我们可以通过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给设备打标签
日志服务
通过日志服务,我们可以排查具体设备动态打标签的过程。
进入日志服务,选择对应产品,输入要查询的设备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"