前言
在物聯網場景中,裝置會部署在不同的位置,而在施工前又很難确定裝置位置,後續業務又需要根據裝置資訊做管理。這種場景我們可以通過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"
附錄
- 阿裡雲IoT裝置标簽文檔 https://help.aliyun.com/document_detail/89304.html
- 規則引擎函數文檔 https://help.aliyun.com/document_detail/30555.html