天天看點

裝置端開發常見問題(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