MQTT是基於TCP的。可以用TCP轉換MQTT嗎?所以我想用TCP協議然後切換到MQTT協議連接阿裏雲物聯網平臺,通過實驗證明是可行的。
首先,我們來分析壹下如何登錄和訪問Onenet平臺。
從它的數據格式開始。首先我們要從後臺拿出三條信息。我們以此為例。
我們把產品ID、設備名稱、設備密鑰,簡稱為三要素(具體是什麽要看妳自己的設備)。
其實阿裏雲物聯網平臺的MQTT協議是標準的,只是增加了自己的認證方式。
MQTT協議需要上傳四個參數,report live time、clientID、用戶名和密碼。
然後阿裏雲的又篡改了clientID,用戶名,密碼。
ClientID是長的,按照壹定的格式。
用戶名:設備名和密鑰。
密碼:使用加密字符串加密,加密方式為sha1或MD5。
下面就來介紹壹下。
MQTT access all發送十六進制數據。
當我們發送它時,這是壹串數據。
0x 74 0x 00 0x 04 0x4d 0x 51 0x 54 0x 54 0x 04 0xc 0 0078 0033 0x 62 0x 63 0x 7c 0x 73 0x 65 0x 63 0x 75 0x 72 0x 65 0x6d 0x6f 0x 64 0x 65 0x3d 0x 33 0x2c 0x 73 0x 69 0x 67
0x6e 0x6d 0x 65 0x 74 0x 68 0x6f 0x 64 0x3d 0x 68 0x6d 0x 61 0x 63 0x 73 0x 68 0x 61 0x 31 0x2c 0x 74 0x 69 0x6d 0x 65 0x 73 0x 74 0x 61 0x6d 0x 70 0x3d 0x 31 0x 32 0x 30 007 c 009
0x 35 0x 36 0x 37 0x 38 0x 26 0x 31 0x 32 0x 33 0x 34 0028 0x 32 0x 32 0x 37 0x 35 0x 30 0x 44 0x 45 0x 44 0x 46 0x 45 0x 34 0x 46 0x 37 0x 37 0x 34 0x 30 0x 30 0x 32 0x 45 0x 45 0x 38 0x 37 0x 45 0x 44 0x 32 0x 39 0x 43
十六進制解釋
數據長度:0x74
協議數據長度0x00 0x04
協議類型:0x4d 0x51 0x54 0x54
協議數據:0x04 0xC0
保持活動數據:0078
ClientID長度:0033
ClientID:0x 61 0x 62 0x 63 0x7c 0x 73 0x 65 0x 63 0x 75 0x 72 0x 65 0x 6d 0x6f 0x 64 0x 65 0x 3d 0x 33 0x2c 0x 73 0x 69 0x 67 0x6e 0x6d 0x 65 0x 74 0x 68 0x6f 0x 64 0x 3d 0x 68 0x 6d 0x 66 5438+0 0x 63 0x 73 0x 68 0x 65438
用戶名:0009
用戶名:0x 35 0x 36 0x 37 0x 38 0x 26 0x 31x 32 0x 33 0x 34
密碼長度:0028
密碼:0x 32 0x 32 0x 32 0x 37 0x 35 0x 30 0x 44 0x 45 0x 44 0x 46 0x 46 0x 37 0x 34 0x 30 0x 32 0x 45 0x 45 0x 38 0x 37 0x 45 0x 44 0x 32 0x 39 0x 43 0x。46 0x 44 0x 30 0x 36 0x 33 0x 38 0x 43 0x 35 0x 46 0x 36副本代碼是連接服務器的連接包。
接下來,讓我們制作壹個分發包(將數據上傳到服務器)
0x 30 0x 1D 0009 2f 7379732 f 706 f 7374 0x7b 0x 70 0x 61 0x 72 0x 61 0x6d 0x 73 0x3a 0x7b 0x 74 0x 65 0x6d 0x 70 0x3a 0x 31 0x 30 0x7d 0x7d
十六進制數據解釋
數據頭:0x30
數據長度:0x1D
TopicName數據長度:0009
TopicName數據內容:2f7379732f706f7374
Json數據:0x 7 b 0x 700 x 610x 720 x 10x 6d 0 x 73 0x 3a 0x 7 b 0x 74 0x 65 0x 6d 0 x 700 x3a 0x 310x 300 x7d 0x7d復制代碼以上是連接阿裏雲的數據包的格式和發布數據的格式。由於時間問題,訂閱的數據包分析還沒有做,所以訂閱的內容會在下次更新。