MQTT協(xié)議-發(fā)布消息(服務(wù)器向客戶端發(fā)送)
發(fā)布消息報文組成:https://blog.csdn.net/weixin_46251230/article/details/129414158
在了解了發(fā)布信息的PUBLISH報文后,就可以分析出阿里云服務(wù)器向本地客戶端發(fā)送的報文數(shù)據(jù)了
實驗前需要在阿里云創(chuàng)建產(chǎn)品和設(shè)備,并創(chuàng)建簡單的溫度和濕度物模型:https://blog.csdn.net/weixin_46251230/article/details/128996719
1、用CONNECT報文連接阿里云
查看設(shè)備是否顯示在線
2、訂閱物模型主題
選擇帶有訂閱權(quán)限的Topic類
將${deviceName}用自己的設(shè)備名稱代替后,轉(zhuǎn)為十六進制,計算出字節(jié)長度,在字節(jié)最后需要加上服務(wù)質(zhì)量等級Qos,這里設(shè)置為00,不能忘記
加上固定報頭和可變報頭,組合成訂閱主題報文
發(fā)送報文,收到阿里云應(yīng)答,表示訂閱成功
3、阿里云物模型發(fā)送數(shù)據(jù)
阿里云平臺里選擇在線調(diào)試,然后設(shè)置溫度和濕度值,最后點擊設(shè)置,服務(wù)器便下發(fā)數(shù)據(jù)到客戶端
在網(wǎng)絡(luò)調(diào)試助手可以看到阿里云發(fā)送的報文,將報文復(fù)制到文本文檔進行分析
4、分析報文
報文的首字節(jié)是30,符合發(fā)布消息報文的固定報頭字節(jié),后面一個字節(jié)是AB,最高位為1,因此還有一個字節(jié)01來表示剩余長度,低位在前,高位在后,可以計算出長度為171,所以可以得到固定報頭為30 AB 01
可變報頭的首兩個字節(jié)表示報頭的長度,所以00 34是表示長度的,0x34轉(zhuǎn)為十進制為52,因此就從34后開始數(shù)52個字節(jié)作為可變報頭
將這52個字節(jié)轉(zhuǎn)為ASCII可得到阿里云物模型訂閱權(quán)限的Topic類:/sys/i6deo513xT1/Device01/thing/service/property/set
與上面發(fā)送的訂閱主題報文的一致,說明分析正確
剩下的字節(jié)就全部是有效載荷,該部分首兩個字節(jié)不是代表長度的,是真實數(shù)據(jù),將其全部轉(zhuǎn)為ASCII碼便可得到JSON格式的數(shù)據(jù),可看到溫度值為20,濕度值為66,與一開始在阿里云平臺上設(shè)置的一樣,說明服務(wù)器向客戶端發(fā)送的數(shù)據(jù)正確。文章來源:http://www.zghlxwxcb.cn/news/detail-456140.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-456140.html
到了這里,關(guān)于MQTT協(xié)議-發(fā)布消息(服務(wù)器向客戶端發(fā)送)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!