mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接
大家好,超子又和大家見面了,超子我能力有限,技術不高,有什么錯誤的地方,歡迎板磚。今天我們一起構建MQTT協議中的CONNECT報文,連接OneNet物聯網平臺,然后進行通信。前面的文章中,超子介紹阿里云平臺的時候詳細分析了MQTT協議中的所有報文,所以這里就不再講了,我們直接開始構建。
首先是CONNECT報文的固定報頭是,0x10 ??,??是剩余長度,我們需要確定了可變報頭和負載后才能計算出剩余長度。
CONNECT報文中的可變報頭用來設置信息和各種功能,OneNet物聯網平臺和阿里云的一樣,所以直接把阿里云的可變報頭拿過來就行,簡化的16進制書寫,去掉0x,結果如下:
00 04 4D 51 54 54 04 C2 00 64
CONNECT報文中的負載包含客戶端ID,用戶名和密碼這3個重要的消息,先總結下各種信息對應的什么內容。
客戶端ID:對應設備ID
用戶名:對應產品ID
密碼:對應設備鑒權信息
我們一起來找一下相關的信息在什么地方。
先看負載中的用戶名,也就是產品ID。首先進入我們的開發者中心,然后進入我們的產品詳情頁面,點擊左側導航欄,選擇產品概況,進入該頁面后,就可以看到紅圈中的產品ID了,長度6,我們把產品ID字符串322049換成16進制是0x33 0x32 0x32 0x30 0x34 0x39 ,我們還得加上兩個字節表示長度6,最終的16進制,簡化書寫,去掉0x后的結果:
00 06 33 32 32 30 34 39
再看負載中的客戶端ID和密碼,也就是設備ID和設備的鑒權信息。左側導航欄,選擇設備列表,進入頁面后,選擇紅圈中的詳情,然后可以進入設備的詳情頁面 。
上圖中,我們可以看到設備ID和設備的鑒權信息,它們分別對應負載中的客戶端ID和密碼。我們先構建客戶端ID,把設備ID字符串586465703換成16進制是0x35 0x38 0x36 0x34 0x36 0x35 0x37 0x30 0x33,長度是9,我們在最前面加入2個字節表示長度9,最終的16進制,簡化書寫,去掉0x結果如下:
00 09 35 38 36 34 36 35 37 30 33
接著構建密碼,密碼對應鑒權信息,把字符串123456換成16進制是0x31 0x32 0x33 0x34 0x35 0x36,長度是6,我們在最前面加入2個字節表示長度6,最終的16進制,簡化書寫,去掉0x結果如下:
00 06 31 32 33 34 35 36
到此整個負載就搞定了,接下來我們把客戶端ID+用戶名+密碼連接起來,簡化16進制,去掉0x結果如下:
00 09 35 38 36 34 36 35 37 30 33 00 06 33 32 32 30 34 39 00 06 31 32 33 34 35 36
我們一起數一下,整個負載部分共計27字節 。剩余長度=可變報頭+負載=10+27=37,37/128=0,一個字節就能搞定,換成16進制就是0x25,最后我們把固定報頭、可變報頭和負載連接起來,簡化16進制,去掉0x:
10 25 00 04 4D 51 54 54 04 C2 00 64 00 09 35 38 36 34 36 35 37 30 33 00 06 33 32 32 30 34 39 00 06 31 32 33 34 35 36
到此CONNECT報文構建完畢,我們用網絡助手實測一下,OneNet平臺提供的不是域名,是IP地址,端口號是6002,那么網絡助手中,遠程主機地址就是
183.230.40.39:6002
我們實際測試一下CONNECT報文,看看設備是不是在線了。
OneNet回復我們的CONNACK報文中,我們看最后1個字節是0x00,表示正確,說明我們的CONNECT報文正確。
CONNECT報文成功發送后,我們看到設備列表中,對應的設備的設備狀態顯示了在線。CONNECT報文中我們設置的keep alive的時間是100s,按協議標準要求,1.5倍時間也就是150s內,沒有數據發送的話,服務器可以把我們踢下來。如果我們沒有什么數據要發送的話,可以通過發送PING報文,來保持連接,不被踢下來。
今天我們就把CONNECT報文搞定了,接下來我們要實驗一下平臺的下發命令和數據上傳。
總結
以上是生活随笔為你收集整理的mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cpc卡内计费信息异常包括_妈妈网广告投
- 下一篇: 镭威视监控怎么复位_三大原因导致海康威视