智宇物聯 專注于提供高穩定、高速率的三網物聯網卡
白城物聯網入門,如何使用MQTT協議,連接Tlink物聯網平臺
- 作者:智宇物聯
- 發表時間:2022年10月16日
- 來源:智宇物聯
大家好,超子又和大家見面了,超子我能力有限,技術不高,有什么錯誤的地方,歡迎板磚。今天我們一起構建MQTT協議中的CONNECT報文連接Tlink物聯網平臺。在前面的文章《Tlink物聯網平臺使用心得(1)建立產品和設備》中,超子介紹了Tlink平臺如何建立設備組和設備,以及傳感器的相關設置,這些內容需要大家提前掌握。然后我們來構建報文。
首先是CONNECT報文的固定報頭是,0x10 ??,??表示剩余長度,我們需要確定了可變報頭和負載后才能計算出剩余長度,所以暫時待定。
CONNECT報文中的可變報頭用來設置信息和各種功能,Tlink物聯網平臺和阿里云物聯網平臺的一樣,所以直接把阿里云的可變報頭拿過來就行,簡化的16進制書寫,去掉0x,結果如下:
00 04 4D 51 54 54 04 C2 00 64
CONNECT報文中的負載包含客戶端ID,用戶名和密碼3個重要的消息,先總結下各種信息對應的什么內容。

用戶名和密碼說明
客戶端ID:對應設備的序列號
用戶名:如上圖所示,是固定的MQTT
密碼:如上圖所示,是固定的MQTTPW
用戶名和密碼已經確定下來了,我們一起來找一下客戶端ID的信息在什么地方。

設備序列號
我們在左側的導航欄中,進入設備管理界面,可以看到我們上一篇文章中新建的兩個設備,紅圈所示就是設備的序列號,也就是我們需要的客戶端ID。我們先以開關設備為例,設備的序列號長度是16,我們把設備序列號字符串換成16進制,而且前面還得加上兩個字節,表示長度16,最終的16進制,簡化書寫,去掉0x后的結果如下:
00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34
再看負載中的用戶名,是固定的MQTT,長度4個字節,那么換成16進制,然后前面再加上兩個字節,表示長度4,最終的16進制,簡化書寫,去掉0x后的結果如下:
00 04 4D 51 54 54
再看負載中的密碼,是固定的MQTTPW,長度6個字節,那么換成16進制,然后前面再加上兩個字節,表示長度6,最終的16進制,簡化書寫,去掉0x后的結果如下:
00 06 4D 51 54 54 50 57
到此整個負載就搞定了,接下來我們把客戶端ID+用戶名+密碼連接起來,簡化16進制,去掉0x結果如下:
00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34 00 04 4D 51 54 54 00 06 4D 51 54 54 50 57
我們一起數一下,整個負載部分共計32個字節 。剩余長度=可變報頭+負載=10+32=42,42/128=0,一個字節就能搞定,換成16進制就是0x2A,最后我們把固定報頭、可變報頭和負載連接起來,簡化16進制,去掉0x的最終結果如下:
10 2A 00 04 4D 51 54 54 04 C2 00 64 00 10 32 33 4C 36 39 38 4F 4A 44 53 30 51 31 4D 47 34 00 04 4D 51 54 54 00 06 4D 51 54 54 50 57
到此CONNECT報文構建完畢,我們用網絡助手實測一下,Tlink物聯網平臺提供的域名和端口號如下所示:
mq.tlink.io:1883
我們實際測試一下CONNECT報文,看看能不能正常的連接上Tlink物聯網平臺。

網絡助手實際測試報文
使用網絡調試助手軟件發送報文后,Tlink物聯網平臺回復我們的CONNACK報文中,我們看最后1個字節是0x00,,說明我們的CONNECT報文正確。如此一來我們今天的任務就圓滿完成了。