大數據

設備端開發常見問題(1)

【】設備端上報{"Content":"Publish message to topic:/a1yYDYMf6Fw/GZDD-MQTT-T1-002/user/get,QoS=0","Reason":"No authorization"},這種問題就是topic權限對應權限不對,發佈和訂閱注意一些,如果是自定義topic,設備端訂閱過了,那麼設備上行到這個topic,雲端會下發一條,這裡平臺的機制就是基於mqtt機制做的。

【】設備端上報struct類型,一般很多客戶不知道數據格式或者在調試裡面應該如何使用,這裡有一個技巧,這個struct類型,數據格式上報一個就知道,在虛擬調試裡面,{"ss":{"t1":1,"t2":2}}

【】設備離線狀態怎麼獲取,如何能檢測到並傳到客戶自己開發的後端,,兩種方式,一種是通過服務端訂閱,訂閱實時的設備行為變化,以裡面的lastTime字段去維護設備最終狀態。

另外一種是調雲端api,GetDeviceStatus獲取設備狀態,不過這個是建立再心跳機制上的。

【】常見設備離線場景:
1.TCP長連接斷開,解決:檢查設備端網絡,本身設備端做好重連機制:MqttConnectOptionsc.setAutomaticReconnect(true)

2.心跳超時,解決:MQTT連接心跳時間為30秒至1,200秒。心跳時間不在此區間內,服務器將會拒絕連接。建議取值300秒以上。如果設備端網絡較差,值相對可以設置的大一些。

3.設備互踢,兩種情況

1.設備和物聯網平臺的連接是基於mqtt協議的,假設設置的心跳時間是300s,那麼只有超過心跳時間後,平臺還沒有收到設備端發送的心跳包,才認為設備離線。
如果在300s內,網絡恢復,您的設備重新上線(也就是說設備本來離線,平臺這邊還是認為在線的,因為沒有到300s),那平臺就認為被同一臺設備擠下線了,所以顯示kicked by the same device

2.同一組三元組信息兩個或以上設備同一時間連接,這個連接被踢掉了。

在使用sdk,設備出現這種情況,會立即自動重連 1s 2s 4s這樣重連。

https://help.aliyun.com/document_detail/44556.html?spm=5176.11065259.1996646101.searchclickresult.3bdd3a56UizOrT&aly_as=KHpyUXcP

Leave a Reply

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