LIERDA
隨著 5G 時代的來臨,萬物互聯的偉大構想正在成為現實。2021年全球智能物聯網處于爆發式增長通道,設備數量超過250億臺。海量的設備接入和設備管理對網絡帶寬、通信協議以及平臺服務架構都帶來了很大挑戰。
通信協議作為聯通物與物的橋梁,在物聯網架構中起著關鍵作用。上周我們已經在《【技術分享】以利爾達MB960/860模組為例,教你快速接入MQTT協議(上)》一文中介紹了MQTT協議的基礎知識,本周將介紹接入阿里云平臺MQTT協議的具體步驟,幫助大家快速上手。
MQTT AT指令接入
1、設置服務端IP或域名
AT+MQTTCFG="host",0,"host_name",1883
:服務端的IP或域名:1~2000字節字符串。阿里云公共實例接入:a1oGs******.iot-as-mqtt.cn-shanghai.aliyuncs.com
a1oGs******為本示例產品的productKey。
cn-shanghai為本示例所在地域。
示例
AT+MQTTCFG="host",0,"gg0*******.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
實現說明
●如果設置IP無需任何操作,只需IP滿足地址格式。
●如果設置域名,需先使用AT+CFUN=0和AT+NCONFIG=PCO_IE_TYPE,PCO這兩條AT命令開啟DNS服務器,再次重啟,之后才能使用域名連接。
2、設置客戶端標識
AT+MQTTCFG="clientid",,
< Link_ID >連接ID:取值0~2。
客戶端標識符:字符串類型,1~128字節字符串。
示例
AT+MQTTCFG="clientid",0,"8677**********|securemode=2,signmethod=hmacsha1|"
實現說明
如果連接NB-IOT平臺,則需根據平臺規則來設置客戶端標識。
3、連接服務端
AT+MQTTCONN=,,,,
< Link_ID >連接ID:取值0~2。
SSL TCP連接使能:
0:不采用;
1:采用SSL TCP連接。
will_flag 遺囑標志,取值0或1:
0:不帶遺囑;
1:CONNECT報文帶有遺囑。
用戶名:0~512字節的字符串。
密碼:0~512字節的字符串。
注:阿里云平臺用戶名及密碼需用三元組生成,生成方式請參考阿里云平臺提供的密碼生成文檔。
示例
AT+MQTTCONN=0,0,0,"8677******&gg0*******","91C3E702***************************755*****"
實現說明
在連接前需要設置服務端ip和clientid,不同的平臺連接使用的用戶名和密碼需要根據平臺要求進行設置。如果是加密連接還需要設置證書,并使ssl_enable為1。設置will_flag為1時,還需要設置遺囑。
連接失敗時的錯誤碼如下:
● 0:返回正確;
● 1:未知錯誤;
● 2:申請內存失敗;
● 3:參數檢查錯誤;
● 80:網絡連接狀態錯誤(可是未撥號/時間不對/服務器關閉);
● 81:MQTT設置版本錯誤;
● 82:clientid錯誤;
● 83:服務器拒絕客戶端連接;
● 84:用戶名或者密碼錯誤;
● 85:訂閱失敗#訂閱失敗會導致斷連;
● 86:取消訂閱失敗;
● 87:發布失敗;
● 88:當前未連接;
● 89:當前已有連接又再次發起連接;
● 90:創建客戶端失敗;
● 91:該linkid已創建客戶端又再次發起創建;
● 92:該linkid未創建客戶端;
● 93:當前MQTT狀態不允許執行該操作。
查詢連接時的狀態如下:
● state=1 MQTT is initial(未配置)
● state=2 MQTT is connecting
● state=3 MQTT is connected
● state=4 MQTT is disconnected
說明:需要注意,MQTT內部實現是先使用設置的MQTT版本連接,失敗之后會使用MQTT3.1版本來連接。
4、訂閱MQTT消息
AT+MQTTSUB=,,,[,,][,,]
< Link_ID >連接ID:取值0~2。
報文標識符:取值1~65535。
主題名:0~512字節字符串。一次最多可訂閱3個主題。
訂閱消息QOS等級:取值0~2。
示例
AT+MQTTSUB=0,1,"/gg0*******/867********/user/test",1
收←◆+MQTTSUBACK: 0,1,0
OK
收←◆+MQTTRECV: 0,0,0,0,/gg0*********/867*********/user/test,qtwtewtytweyt
實現說明
訂閱異常包括:
● 報文處理異常,包括非連接、網絡異常狀態下收到上位機下發該AT命令、報文參
數異常等。
● 超時未收到服務端回復,包括服務端回復的報文異常。
● 返回85訂閱失敗,斷連。
5、發布一個消息
AT+MQTTPUB=,,,,,
< Link_ID >連接ID:取值0~2。
報文標識符:取值1~65535。
發布消息QOS等級:取值0~2。
保留標志:取值0~1。
主題名:0~512字節字符串。
有效載荷:0~1500字節字符串。
示例:AT+MQTTPUB=0,1,0,0,"/gg0*******/8677*********/user/test","this is a test"
收←◆+MQTTPUBACK: 0,1,0
OK
收←◆+MQTTRECV: 0,0,0,0,/gg0********/8677*********/user/test,this is a test
實現說明
●該命令用于發布時,如果在timeout時間內沒有收到報文確認,則會打印ERROR。在收到一個QOS大于0的報文確認消息時,會打印+MQTTPUBACK_MSGID:,其中msgid為PUB報文的信息id。當查詢發布消息時,查詢的結果為發布的次數。當MQTT服務器不支持topic為0字節的字符串時,如果發送0字節的topic消息,則會導致斷連。
●該命令最多允許2個發布消息在重傳隊列中,超過2個發布消息會直接返回ERROR,不會發送。重傳隊列會嘗試5次重傳,之后就會清除重傳隊列里的發布消息。
●在斷連之后計數會清零。計數達到最大值建議反轉,最大值4294967295(unsigned int)。在NB-IoT場景下最大的發包長度不能超過SEND_MAX_LEN(1358)字節,如果超出長度則會發送失敗。失敗時會打印實際的發送長度,用戶需要保證發包長度不能超過SEND_MAX_LEN(1358)字節長度。
例如:用戶在非加密連接的情況下發送1500字節內容,實際包長度為包頭長度和包體長度之和,為1505字節。包頭長度為1505-1500=5字節,根據SEND_MAX_LEN(1358)長度限制,可以發送的包體的長度為SEND_MAX_LEN-包頭長度=1358-5=1353字節.
[1541.451]→◇AT+MQTTPUB=0,1,0,0,"","adebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbade
bcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabad
bceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbe
bebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbd
badbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabb
dbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbab
cbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbb
ebfadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbad
babadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdb
befbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcb
dbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbeb
fbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadeb
cbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadb
ceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfadebcbcbabcbdb
dbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfb
babbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcb
cbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbce
ebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebeb
dbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbad
babadbceebbbebfbbabbdbbefbbebebdbadebcbcbabcbdbdbdbadbabadbceebbbebfbbabbdb
befbbebebd"
[1541.461]收←◆
[Error]:Please don't send a message longer than 1358 bytes. Message length which
contains header and payload is 1505 bytes.
[1541.969]收←◆
+MQTTCLOSE=0,128
ERROR: 0,1,110
ERROR
-
物聯網
+關注
關注
2928文章
46028瀏覽量
389552
發布評論請先 登錄
利爾達RedCap模組通過OpenHarmony 生態兼容性測評!

【教程】設備通過MQTT協議接入OneNET平臺,建立可視化界面

MQTT網關接入工業物聯網平臺解析
MQTT.fx 連接Onenet 多協議接入平臺 MQTT協議(舊版)詳解

MQTT智能網關接入物聯網平臺:實現高效連接與數據交互
鋇錸PLC網關快速實現三菱、西門子PLC轉MQTT協議

鋇錸技術Modbus轉MQTT網關:橋接Modbus協議與MQTT協議

鋇錸Modbus轉MQTT網關支持一鍵接入華為云

評論