業務場景

1、裝置端主動上報物模型屬性,物聯網平台更新物模型屬性值
2、前端下發更新物模型屬性指令,物模型平台不更新屬性值,平台将臨時的物模型屬性值再轉發到裝置端。
3、雲平台自發向裝置端下發更新物模型屬性指令(雲平台流轉->下發物模型屬性),物模型平台不更新屬性值。
4、裝置端從物模型接收到臨時的物模型屬性值後進行其業務邏輯處理。
5、前端擷取物模型屬性值,物模型平台給真實的物模型屬性值。
6、服務端擷取物模型屬性值,物模型平台給真實的物模型屬性值。
原理
1、物模型屬性的真實值來源隻有一個,裝置端主動上報
2、物聯網平台隻有裝置端主動上報才會更新真實的物模型屬性值
剖析
1、為什麼物模型真實來源隻能是裝置端上報,下發更新物模型屬性指令為什麼都不行?
因為阿裡雲平台物模型屬性的更新機制隻認裝置上報的屬性,這又是為什麼呢?
(1)裝置上報的屬性肯定是展現了裝置目前真正的狀态
(2)指令下發也有同步和異步的,并不能保證指令一下發,裝置的真實狀态就發生了變化,這樣物模型屬性就和裝置真實的狀态不同步了。
(3)裝置端可能由于種種原因,或者其業務邏輯限制,指令下發下來并不代表一定會生效,并不代表一定要按照指令去執行
(4)指令下發過程中指令也可能被丢失,由于網絡波動,資源緊張等情況,指令被舍棄。
(5)有可能同時存在多個用戶端同時下發指令到裝置,那到底誰才是正确的呢?那當然是裝置端自己主動上報的那個咯。
2、什麼樣的物模型消息才是正确的呢?
先看協定格式:
日志服務中有物模型才能代表物模型資料更新
物模型消息隻能代表向物模型topic發送了資料,不一定是正确的
來看下錯誤的格式:
正确的格式:
從這裡可以看到,time字段和value字段是可選的,也就是物模型消息的時間戳可以有,也可以沒有,但是就是不能沒有Params字段
3、Payload格式注意事項
A、Payload格式必須為json格式
Payload上報資料會經過哪些流程?
(1) 首先,如果內建了SDK,會先經過SDK的校驗。如果沒有內建SDK或者直接使用MQTT接口進行上報
那麼會先經過平台的 《物模型消息》這一關,如果不是Json格式:
(2)然後是《物模型check》這一關,雖然滿足了json格式,但是如果不滿足Alink Json協定
(3)《物模型check》如果滿足Alink Json協定,但是部分資料不滿足物模型定義
AMQP可以正常訂閱,物模型可以正常更新資料,但是物模型資料的日志沒有生成。(後來驗證又有一條錯誤日志,感覺平台還是有bug)
AMQP:
經過後來多次驗證,發現《物模型check》還是有個錯誤日志的,平台6332也沒有定義這個錯誤碼
(4)《物模型check》如果滿足Alink Json協定,但是全部資料都不滿足物模型定義
物模型資料不會更新,AMQP正常訂閱消息,但是消息内容裡面有倆條5092的錯誤碼
日志中物模型check這一關會提示6332錯誤碼,tsl parse failed
(5)《物模型check》如果滿足Alink Json協定,也滿足物模型定義
物模型check通過,物模型資料更新正常,AMQP消息訂閱正常,内容正常
物模型check通過
物模型資料
AMQP:
B、帶time的格式和不帶time的格式都是可以成功上報的
不帶time格式:
"{"params":{"Temperature":99.99,"BatteryPercentage":88.88}}";
帶time格式
"{"params":{"Temperature":{"value":75.75,"time":1603248612000}}}";
C、如果上報的時候自帶time,那麼控制台上最新的資料按照控制台的時間排布,但是曆史資料就是按照自帶的time的資料
eg:測試時間:2020-10-24 14:46:50
驗證:當上報資料time寫死1603248612000 (2020/10/21 10:50:12)
{"params":{"Temperature":{"value":75.75,"time":1603248612000}}}
曆史資料:
但是最新資料也是他:
AMQP訂閱到的消息:
順便再看看日志記錄裡是什麼樣:
D、如果上報資料的時候不帶time
曆史資料就是最新資料
看看AMQP收到的消息:
再看看日志:
4、通過雲平台流轉至物模型屬性下發怎樣才能生效?
物模型屬性的真實值來源隻有一個,裝置端主動上報。是以不管是雲端下發指令,還是平台轉發指令(如雲平台流轉)等,裝置端需要接收到指令的後,再将該屬性進行上報
小結
本片文章隻是剖析,不講實操,把原理講通
3、Payload注意事項
4、物模型消息的正确格式
後續再逐漸更新實操文檔:
《阿裡雲物聯網平台物模型屬性下發如何才能生效》
《阿裡雲物聯網平台通過雲平台流轉實作裝置間物模型屬性的同步》
《阿裡雲物聯網雲平台物模型流轉SQL編寫技巧》