• 方案介紹
    • 一、前言
    • 二、下載固件
    • 三、常用的AT指令
    • 四、ESP8266-AT指令連接華為云IOT
    • 五、華為云IOT服務(wù)器部署過(guò)程
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

ESP8266采用AT指令連接華為云服務(wù)器(MQTT固件)

05/29 10:03
325
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

更多詳細(xì)資料請(qǐng)聯(lián)系.docx

共1個(gè)文件

一、前言

本篇文章主要介紹3個(gè)內(nèi)容:

(1)ESP8266-WIFI模塊常用的AI指令功能介紹

(2)ESP8266燒寫(xiě)MQTT固件連接華為云IOT服務(wù)器。

(3)介紹華為云IOT服務(wù)器的配置過(guò)程。

ESP8266是一款功能強(qiáng)大的物聯(lián)網(wǎng)芯片,它集成了處理器、Wi-Fi網(wǎng)絡(luò)連接和TCP/IP協(xié)議棧,提供了簡(jiǎn)單而強(qiáng)大的無(wú)線網(wǎng)絡(luò)連接能力,被廣泛應(yīng)用于各種物聯(lián)網(wǎng)設(shè)備中。支持AT指令集,可以通過(guò)串口與其他設(shè)備進(jìn)行通信,可以降低設(shè)備間的通信難度。

以下是ESP8266模塊的主要特點(diǎn)和功能:

(1)小巧而強(qiáng)大:ESP8266模塊的尺寸小,但它搭載了一個(gè)高性能的32位Tensilica L106 RISC處理器,時(shí)鐘頻率為80MHz,可以通過(guò)軟件進(jìn)行固件升級(jí)。

(2)Wi-Fi連接:ESP8266支持802.11 b/g/n標(biāo)準(zhǔn),能夠?qū)崿F(xiàn)快速而穩(wěn)定的無(wú)線網(wǎng)絡(luò)連接。它可以作為Wi-Fi客戶端連接到現(xiàn)有的Wi-Fi網(wǎng)絡(luò),也可以作為Wi-Fi接入點(diǎn)(AP)提供無(wú)線網(wǎng)絡(luò)服務(wù)。

(3)TCP/IP協(xié)議棧:ESP8266集成了TCP/IP協(xié)議棧,可以通過(guò)Wi-Fi與其他設(shè)備進(jìn)行通信,包括傳輸數(shù)據(jù)、發(fā)送HTTP請(qǐng)求、執(zhí)行WebSocket通信等。

(4)GPIO引腳:ESP8266模塊具有多個(gè)通用GPIO引腳,可用于連接和控制外部設(shè)備,如傳感器、繼電器、LED等。

(5)低功耗:ESP8266在待機(jī)模式下的功耗非常低,適用于需要長(zhǎng)時(shí)間運(yùn)行的低功耗應(yīng)用。

(6)開(kāi)發(fā)環(huán)境:ESP8266的開(kāi)發(fā)可以使用多種編程語(yǔ)言和開(kāi)發(fā)平臺(tái),如Arduino IDE、MicroPython、Lua等。這使得開(kāi)發(fā)人員可以選擇最適合他們的工具進(jìn)行開(kāi)發(fā)。

image-20231214095551151

image-20231214095534811

二、下載固件

ESP8266默認(rèn)的固件不支持MQTT協(xié)議,需要重新下載固件。

鏈接:https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

三、常用的AT指令

【1】基礎(chǔ)AT指令

AT:測(cè)試 AT 啟動(dòng)

AT+RST:重啟模塊

AT+GMR:查看版本信息

AT+CMD:查詢當(dāng)前固件支持的所有命令及命令類型

AT+GSLP:進(jìn)? Deep-sleep 模式

ATE:開(kāi)啟或關(guān)閉 AT 回顯功能

AT+RESTORE:恢復(fù)出廠設(shè)置

AT+SAVETRANSLINK:設(shè)置開(kāi)機(jī) 透?jìng)髂J?/a> 信息

AT+TRANSINTVL:設(shè)置 透?jìng)髂J?模式下的數(shù)據(jù)發(fā)送間隔

AT+UART_CUR:設(shè)置 UART 當(dāng)前臨時(shí)配置,不保存到 flash

AT+UART_DEF:設(shè)置 UART 默認(rèn)配置, 保存到 flash

AT+SLEEP:設(shè)置 sleep 模式

AT+SYSRAM:查詢當(dāng)前剩余堆空間和最小堆空間

AT+SYSMSG:查詢/設(shè)置系統(tǒng)提示信息

AT+SYSMSGFILTER:?jiǎn)⒂没蚪?系統(tǒng)消息 過(guò)濾

AT+SYSMSGFILTERCFG:查詢/配置 系統(tǒng)消息 的過(guò)濾器

AT+SYSFLASH:查詢或讀寫(xiě) flash 用戶分區(qū)

AT+SYSMFG:查詢或讀寫(xiě) manufacturing nvs 用戶分區(qū)

AT+RFPOWER:查詢/設(shè)置 RF TX Power

AT+SYSROLLBACK:回滾到以前的固件

AT+SYSTIMESTAMP:查詢/設(shè)置本地時(shí)間戳

AT+SYSLOG:?jiǎn)⒂没蚪?AT 錯(cuò)誤代碼提示

AT+SLEEPWKCFG:設(shè)置 Light-sleep 喚醒源和喚醒 GPIO

AT+SYSSTORE:設(shè)置參數(shù)存儲(chǔ)模式

AT+SYSREG:讀寫(xiě)寄存器

【2】Wi-Fi AT 命令集

AT+CWINIT:初始化/清理 Wi-Fi 驅(qū)動(dòng)程序

AT+CWMODE:查詢/設(shè)置 Wi-Fi 模式 (Station/SoftAP/Station+SoftAP)

AT+CWSTATE:查詢 Wi-Fi 狀態(tài)和 Wi-Fi 信息

AT+CWJAP:連接 AP

AT+CWRECONNCFG:查詢/設(shè)置 Wi-Fi 重連配置

AT+CWLAPOPT:設(shè)置 AT+CWLAP 命令掃描結(jié)果的屬性

AT+CWLAP:掃描當(dāng)前可用的 AP

AT+CWQAP:斷開(kāi)與 AP 的連接

AT+CWSAP:配置 ESP32 SoftAP 參數(shù)

AT+CWLIF:查詢連接到 ESP32 SoftAP 的 station 信息

AT+CWQIF:斷開(kāi) station 與 ESP32 SoftAP 的連接

AT+CWDHCP:?jiǎn)⒂?禁用 DHCP

AT+CWDHCPS:查詢/設(shè)置 ESP32 SoftAP DHCP 分配的 IPv4 地址范圍

AT+CWAUTOCONN:上電是否自動(dòng)連接 AP

AT+CWAPPROTO:查詢/設(shè)置 SoftAP 模式下 802.11 b/g/n 協(xié)議標(biāo)準(zhǔn)

AT+CWSTAPROTO:設(shè)置 Station 模式下 802.11 b/g/n 協(xié)議標(biāo)準(zhǔn)

AT+CIPSTAMAC:查詢/設(shè)置 ESP32 Station 的 MAC 地址

AT+CIPAPMAC:查詢/設(shè)置 ESP32 SoftAP 的 MAC 地址

AT+CIPSTA:查詢/設(shè)置 ESP32 Station 的 IP 地址

AT+CIPAP:查詢/設(shè)置 ESP32 SoftAP 的 IP 地址

AT+CWSTARTSMART:開(kāi)啟 SmartConfig

AT+CWSTOPSMART:停止 SmartConfig

AT+WPS:設(shè)置 WPS 功能

AT+MDNS:設(shè)置 mDNS 功能

AT+CWJEAP:連接 WPA2 企業(yè)版 AP

AT+CWHOSTNAME:查詢/設(shè)置 ESP32 Station 的主機(jī)

【3】TCP/IP AT 命令

AT+CIPV6: 啟用/禁用 IPv6 網(wǎng)絡(luò) (IPv6)

AT+CIPSTATE:查詢 TCP/UDP/SSL 連接信息

AT+CIPSTATUS (棄用):查詢 TCP/UDP/SSL 連接狀態(tài)和信息

AT+CIPDOMAIN:域名解析

AT+CIPSTART:建立 TCP 連接、UDP 傳輸或 SSL 連接

AT+CIPSTARTEX:建立自動(dòng)分配 ID 的 TCP 連接、UDP 傳輸或 SSL 連接

[僅適用數(shù)據(jù)模式] +++: 退出 數(shù)據(jù)模式

AT+SAVETRANSLINK:設(shè)置 Wi-Fi 開(kāi)機(jī) 透?jìng)髂J?信息

AT+CIPSEND:在 普通傳輸模式 或 Wi-Fi 透?jìng)髂J?下發(fā)送數(shù)據(jù)

AT+CIPSENDL:在 普通傳輸模式 下并行發(fā)送長(zhǎng)數(shù)據(jù)

AT+CIPSENDLCFG:設(shè)置 AT+CIPSENDL 命令的屬性

AT+CIPSENDEX:在 普通傳輸模式 下采用擴(kuò)展的方式發(fā)送數(shù)據(jù)

AT+CIPCLOSE:關(guān)閉 TCP/UDP/SSL 連接

AT+CIFSR:查詢本地 IP 地址和 MAC 地址

AT+CIPMUX:?jiǎn)⒂?禁用多連接模式

AT+CIPSERVER:建立/關(guān)閉 TCP 或 SSL 服務(wù)器

AT+CIPSERVERMAXCONN:查詢/設(shè)置服務(wù)器允許建立的最大連接數(shù)

AT+CIPMODE:查詢/設(shè)置傳輸模式

AT+CIPSTO:查詢/設(shè)置本地 TCP 服務(wù)器超時(shí)時(shí)間

AT+CIPSNTPCFG:查詢/設(shè)置時(shí)區(qū)和 SNTP 服務(wù)器

AT+CIPSNTPTIME:查詢 SNTP 時(shí)間

AT+CIPSNTPINTV:查詢/設(shè)置 SNTP 時(shí)間同步的間隔

AT+CIPFWVER:查詢服務(wù)器已有的 AT 固件版本

AT+CIUPDATE:通過(guò) Wi-Fi 升級(jí)固件

AT+CIPDINFO:設(shè)置 +IPD 消息詳情

AT+CIPSSLCCONF:查詢/設(shè)置 SSL 客戶端配置

AT+CIPSSLCCN:查詢/設(shè)置 SSL 客戶端的公用名 (common name)

AT+CIPSSLCSNI:查詢/設(shè)置 SSL 客戶端的 SNI

AT+CIPSSLCALPN:查詢/設(shè)置 SSL 客戶端 ALPN

AT+CIPSSLCPSK:查詢/設(shè)置 SSL 客戶端的 PSK

AT+CIPRECONNINTV:查詢/設(shè)置 Wi-Fi 透?jìng)髂J?下的 TCP/UDP/SSL 重連間隔

AT+CIPRECVTYPE:查詢/設(shè)置套接字接收模式

AT+CIPRECVDATA:獲取被動(dòng)接收模式下的套接字?jǐn)?shù)據(jù)

AT+CIPRECVLEN:查詢被動(dòng)接收模式下套接字?jǐn)?shù)據(jù)的長(zhǎng)度

AT+PING:ping 對(duì)端主機(jī)

AT+CIPDNS:查詢/設(shè)置 DNS 服務(wù)器信息

AT+CIPTCPOPT:查詢/設(shè)置套接字選項(xiàng)

【4】MQTT AT 命令集

AT+MQTTUSERCFG:設(shè)置 MQTT 用戶屬性

AT+MQTTLONGCLIENTID:設(shè)置 MQTT 客戶端 ID

AT+MQTTLONGUSERNAME:設(shè)置 MQTT 登陸用戶名

AT+MQTTLONGPASSWORD:設(shè)置 MQTT 登陸密碼

AT+MQTTCONNCFG:設(shè)置 MQTT 連接屬性

AT+MQTTALPN:設(shè)置 MQTT 應(yīng)用層協(xié)議協(xié)商(ALPN)

AT+MQTTSNI:設(shè)置 MQTT 服務(wù)器名稱指示(SNI)

AT+MQTTCONN:連接 MQTT Broker

AT+MQTTPUB:發(fā)布 MQTT 消息(字符串)

AT+MQTTPUBRAW:發(fā)布長(zhǎng) MQTT 消息

AT+MQTTSUB:訂閱 MQTT Topic

AT+MQTTUNSUB:取消訂閱 MQTT Topic

AT+MQTTCLEAN:斷開(kāi) MQTT 連接

四、ESP8266-AT指令連接華為云IOT

下面是STM32的實(shí)際代碼,通過(guò)串口發(fā)送AT指令控制ESP8266連接華為云IOT服務(wù)器、

void ESP8266_Init(void)
{
//====================================================實(shí)現(xiàn)設(shè)備在線==================================================
    //【1】復(fù)位ESP8266
    printf("AT+RSTrn");//第一步
    delay_ms(2000);
    //【2】設(shè)置為STA模式
    printf("AT+CWMODE=1rn");//第二步
    delay_ms(1500);
    //【3】設(shè)置連接的WIFI熱點(diǎn)
    // 格式: AT+CWJAP="填寫(xiě)wifi名稱","填寫(xiě)WiFi密碼"
    printf("AT+CWJAP="123","12345678"rn");//第四步
    delay_ms(1500);
    //【4】設(shè)置MQTT的登錄名和密碼
    // 格式: AT+MQTTUSERCFG=0,1,"NULL","填寫(xiě)用戶名","填寫(xiě)密碼",0,0,""
    printf("AT+MQTTUSERCFG=0,1,"NULL","65620a943668046d0e31568c_room1","a83d06a34631b72d1b35bae5ef5e23c7ea723952c33796faa47410b107e7f4b7",0,0,""rn");//第五步
    delay_ms(1500);
    //【5】設(shè)置MQTT的ClientID
    // 格式: AT+MQTTCLIENTID=0,"填寫(xiě)ClientID"
    printf("AT+MQTTCLIENTID=0,"65620a943668046d0e31568c_room1_0_0_2023112515"rn");//第6步  客戶端ID
    delay_ms(1500);
    // 【6】設(shè)置MQTT接入地址
    // 格式: AT+MQTTCONN=0,"填寫(xiě)MQTT接入的地址",1883,1
    printf("AT+MQTTCONN=0,"124.70.218.131",1883,1rn");//第7步
    delay_ms(2000);
    
}



void ESP8266_data_publish(char *att)
{
    //	char publish_command[256];
    printf("%s",att);//第2步
    //printf("AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services":[{"service_id":"stm32","properties":{"%s":%d}}]}",0,0rn", att, data);
    //	printf("%s", publish_command);
}


int main()
{
    //【7】上傳數(shù)據(jù)
               // 格式: AT+MQTTPUB=0," 發(fā)布的主題 ","上報(bào)的json數(shù)據(jù)",0,0
               // $oc/devices/64047c741eaf704179abaa58_Temp_test/sys/properties/report ","{"services":[{"service_id":"esp8266_data","properties":{"temp": 100}}]}

               //
               //組合上傳的數(shù)據(jù)0---上傳單個(gè)
               sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services":[{"service_id":"stm32","properties":{"Temp":%d}}]}",0,0rn",
               temperature);
               
               //組合上傳的數(shù)據(jù)--上傳多個(gè)
               //sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services": [{"service_id": "stm32","properties":{"Temp":%d,"Humi":%d,"Fire":%d,"MQ-135":%d,"Water":%d,"SPO2":%d,"HR":%d}}]}",0,0rn",
               //temperature,humidity,Fire,z,Water,SPO2,HR);
               
               
               //上傳數(shù)據(jù)
               ESP8266_data_publish(MQTT_buff);
}

五、華為云IOT服務(wù)器部署過(guò)程

在華為云IOT平臺(tái)上,需要進(jìn)行設(shè)備接入、數(shù)據(jù)模型定義、規(guī)則引擎配置和應(yīng)用開(kāi)發(fā)等四個(gè)核心模塊的開(kāi)發(fā)。其中,設(shè)備接入模塊包括設(shè)備注冊(cè)、獲取設(shè)備證書(shū)、建立連接等步驟,以保障設(shè)備與云平臺(tái)之間的安全通信;數(shù)據(jù)模型定義模塊需要根據(jù)實(shí)際需求定義相應(yīng)的數(shù)據(jù)模型,包括上傳數(shù)據(jù)格式、設(shè)備屬性和服務(wù)等。規(guī)則引擎配置模塊需要完成實(shí)時(shí)消息推送、遠(yuǎn)程控制和告警等功能。應(yīng)用開(kāi)發(fā)模塊則是將完整的智能井蓋系統(tǒng)進(jìn)行打包,為用戶提供統(tǒng)一的操作接口。

華為云官網(wǎng): https://www.huaweicloud.com/

打開(kāi)官網(wǎng),搜索物聯(lián)網(wǎng),就能快速找到 設(shè)備接入IoTDA。

image-20221204193824815

5.1 物聯(lián)網(wǎng)平臺(tái)介紹

華為云物聯(lián)網(wǎng)平臺(tái)(IoT 設(shè)備接入云服務(wù))提供海量設(shè)備的接入和管理能力,將物理設(shè)備聯(lián)接到云,支撐設(shè)備數(shù)據(jù)采集上云和云端下發(fā)命令給設(shè)備進(jìn)行遠(yuǎn)程控制,配合華為云其他產(chǎn)品,幫助我們快速構(gòu)筑物聯(lián)網(wǎng)解決方案。

使用物聯(lián)網(wǎng)平臺(tái)構(gòu)建一個(gè)完整的物聯(lián)網(wǎng)解決方案主要包括3部分:物聯(lián)網(wǎng)平臺(tái)、業(yè)務(wù)應(yīng)用和設(shè)備。

物聯(lián)網(wǎng)平臺(tái)作為連接業(yè)務(wù)應(yīng)用和設(shè)備的中間層,屏蔽了各種復(fù)雜的設(shè)備接口,實(shí)現(xiàn)設(shè)備的快速接入;同時(shí)提供強(qiáng)大的開(kāi)放能力,支撐行業(yè)用戶構(gòu)建各種物聯(lián)網(wǎng)解決方案。

設(shè)備可以通過(guò)固網(wǎng)、2G/3G/4G/5G、NB-IoT、Wifi等多種網(wǎng)絡(luò)接入物聯(lián)網(wǎng)平臺(tái),并使用LWM2M/CoAP、MQTT、HTTPS協(xié)議將業(yè)務(wù)數(shù)據(jù)上報(bào)到平臺(tái),平臺(tái)也可以將控制命令下發(fā)給設(shè)備。

業(yè)務(wù)應(yīng)用通過(guò)調(diào)用物聯(lián)網(wǎng)平臺(tái)提供的API,實(shí)現(xiàn)設(shè)備數(shù)據(jù)采集、命令下發(fā)、設(shè)備管理等業(yè)務(wù)場(chǎng)景。

img

5.2 開(kāi)通物聯(lián)網(wǎng)服務(wù)

地址: https://www.huaweicloud.com/product/iothub.html

image-20221204194233414

開(kāi)通標(biāo)準(zhǔn)版免費(fèi)單元。

image-20230420181306316

image-20230420181322092

開(kāi)通之后,點(diǎn)擊總覽,查看接入信息。 我們當(dāng)前設(shè)備準(zhǔn)備采用MQTT協(xié)議接入華為云平臺(tái),這里可以看到MQTT協(xié)議的地址和端口號(hào)等信息。

image-20230423111235524

總結(jié):

端口號(hào):   MQTT (1883)| MQTTS (8883)	
接入地址: a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

根據(jù)域名地址得到IP地址信息:

Microsoft Windows [版本 10.0.19044.2846]
(c) Microsoft Corporation。保留所有權(quán)利。

C:Users11266>ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

正在 Ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com [121.36.42.100] 具有 32 字節(jié)的數(shù)據(jù):
來(lái)自 121.36.42.100 的回復(fù): 字節(jié)=32 時(shí)間=37ms TTL=31
來(lái)自 121.36.42.100 的回復(fù): 字節(jié)=32 時(shí)間=37ms TTL=31
來(lái)自 121.36.42.100 的回復(fù): 字節(jié)=32 時(shí)間=36ms TTL=31
來(lái)自 121.36.42.100 的回復(fù): 字節(jié)=32 時(shí)間=37ms TTL=31

121.36.42.100 的 Ping 統(tǒng)計(jì)信息:
    數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計(jì)時(shí)間(以毫秒為單位):
    最短 = 36ms,最長(zhǎng) = 37ms,平均 = 36ms

C:Users11266>

image-20230423111213624

MQTT協(xié)議接入端口號(hào)有兩個(gè),1883是非加密端口,8883是證書(shū)加密端口,單片機(jī)無(wú)法加載證書(shū),所以使用1883端口比較合適。 接下來(lái)的ESP8266就采用1883端口連接華為云物聯(lián)網(wǎng)平臺(tái)。

5.3 創(chuàng)建產(chǎn)品

(1)創(chuàng)建產(chǎn)品

點(diǎn)擊右上角創(chuàng)建產(chǎn)品。

image-20230420181503524

(2)填寫(xiě)產(chǎn)品信息

根據(jù)自己產(chǎn)品名字填寫(xiě),設(shè)備類型選擇自定義類型。

(3)添加自定義模型

產(chǎn)品創(chuàng)建完成之后,點(diǎn)擊進(jìn)入產(chǎn)品詳情頁(yè)面,翻到最下面可以看到模型定義。

image-20230420181615129

模型簡(jiǎn)單來(lái)說(shuō): 就是存放設(shè)備上傳到云平臺(tái)的數(shù)據(jù)。比如:環(huán)境溫度、環(huán)境濕度、環(huán)境煙霧濃度、火焰檢測(cè)狀態(tài)圖等等,這些我們都可以單獨(dú)創(chuàng)建一個(gè)模型保存。

5.4 添加設(shè)備

產(chǎn)品是屬于上層的抽象模型,接下來(lái)在產(chǎn)品模型下添加實(shí)際的設(shè)備。添加的設(shè)備最終需要與真實(shí)的設(shè)備關(guān)聯(lián)在一起,完成數(shù)據(jù)交互。

(1)注冊(cè)設(shè)備

點(diǎn)擊右上角注冊(cè)設(shè)備。

image-20230421091842025

(2)根據(jù)自己的設(shè)備填寫(xiě)

在彈出的對(duì)話框里填寫(xiě)自己設(shè)備的信息。根據(jù)自己設(shè)備詳細(xì)情況填寫(xiě)。

(3)保存設(shè)備信息

創(chuàng)建完畢之后,點(diǎn)擊保存并關(guān)閉,得到創(chuàng)建的設(shè)備密匙信息。該信息在后續(xù)生成MQTT三元組的時(shí)候需要使用。

5.5 MQTT協(xié)議主題訂閱與發(fā)布

(1)MQTT協(xié)議介紹

當(dāng)前的設(shè)備是采用MQTT協(xié)議與華為云平臺(tái)進(jìn)行通信。

MQTT是一個(gè)物聯(lián)網(wǎng)傳輸協(xié)議,它被設(shè)計(jì)用于輕量級(jí)的發(fā)布/訂閱式消息傳輸,旨在為低帶寬和不穩(wěn)定的網(wǎng)絡(luò)環(huán)境中的物聯(lián)網(wǎng)設(shè)備提供可靠的網(wǎng)絡(luò)服務(wù)。MQTT是專門(mén)針對(duì)物聯(lián)網(wǎng)開(kāi)發(fā)的輕量級(jí)傳輸協(xié)議。MQTT協(xié)議針對(duì)低帶寬網(wǎng)絡(luò),低計(jì)算能力的設(shè)備,做了特殊的優(yōu)化,使得其能適應(yīng)各種物聯(lián)網(wǎng)應(yīng)用場(chǎng)景。目前MQTT擁有各種平臺(tái)和設(shè)備上的客戶端,已經(jīng)形成了初步的生態(tài)系統(tǒng)。

MQTT是一種消息隊(duì)列協(xié)議,使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合,相對(duì)于其他協(xié)議,開(kāi)發(fā)更簡(jiǎn)單;MQTT協(xié)議是工作在TCP/IP協(xié)議上;由TCP/IP協(xié)議提供穩(wěn)定的網(wǎng)絡(luò)連接;所以,只要具備TCP協(xié)議棧的網(wǎng)絡(luò)設(shè)備都可以使用MQTT協(xié)議。 本次設(shè)備采用的ESP8266就具備TCP協(xié)議棧,能夠建立TCP連接,所以,配合STM32代碼里封裝的MQTT協(xié)議,就可以與華為云平臺(tái)完成通信。

華為云的MQTT協(xié)議接入幫助文檔在這里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

img

業(yè)務(wù)流程:

img

(2)華為云平臺(tái)MQTT協(xié)議使用限制

描述 限制
支持的MQTT協(xié)議版本 3.1.1
與標(biāo)準(zhǔn)MQTT協(xié)議的區(qū)別 支持Qos 0和Qos 1支持Topic自定義不支持QoS2不支持will、retain msg
MQTTS支持的安全等級(jí) 采用TCP通道基礎(chǔ) + TLS協(xié)議(最高TLSv1.3版本)
單帳號(hào)每秒最大MQTT連接請(qǐng)求數(shù) 無(wú)限制
單個(gè)設(shè)備每分鐘支持的最大MQTT連接數(shù) 1
單個(gè)MQTT連接每秒的吞吐量,即帶寬,包含直連設(shè)備和網(wǎng)關(guān) 3KB/s
MQTT單個(gè)發(fā)布消息最大長(zhǎng)度,超過(guò)此大小的發(fā)布請(qǐng)求將被直接拒絕 1MB
MQTT連接心跳時(shí)間建議值 心跳時(shí)間限定為30至1200秒,推薦設(shè)置為120秒
產(chǎn)品是否支持自定義Topic 支持
消息發(fā)布與訂閱 設(shè)備只能對(duì)自己的Topic進(jìn)行消息發(fā)布與訂閱
每個(gè)訂閱請(qǐng)求的最大訂閱數(shù) 無(wú)限制

(3)主題訂閱格式

幫助文檔地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

image-20221207153310037

對(duì)于設(shè)備而言,一般會(huì)訂閱平臺(tái)下發(fā)消息給設(shè)備 這個(gè)主題。

設(shè)備想接收平臺(tái)下發(fā)的消息,就需要訂閱平臺(tái)下發(fā)消息給設(shè)備 的主題,訂閱后,平臺(tái)下發(fā)消息給設(shè)備,設(shè)備就會(huì)收到消息。

(4)主題發(fā)布格式

對(duì)于設(shè)備來(lái)說(shuō),主題發(fā)布表示向云平臺(tái)上傳數(shù)據(jù),將最新的傳感器數(shù)據(jù),設(shè)備狀態(tài)上傳到云平臺(tái)。

這個(gè)操作稱為:屬性上報(bào)。

幫助文檔地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html

image-20221207153637391

5.6 MQTT三元組

MQTT協(xié)議登錄需要填用戶ID,設(shè)備ID,設(shè)備密碼等信息,就像我們平時(shí)登錄QQ,微信一樣要輸入賬號(hào)密碼才能登錄。MQTT協(xié)議登錄的這3個(gè)參數(shù),一般稱為MQTT三元組。

接下來(lái)介紹,華為云平臺(tái)的MQTT三元組參數(shù)如何得到。

(1)MQTT服務(wù)器地址

要登錄MQTT服務(wù)器,首先記得先知道服務(wù)器的地址是多少,端口是多少。

幫助文檔地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home

image-20230411141412090

MQTT協(xié)議的端口支持1883和8883,它們的區(qū)別是:8883 是加密端口更加安全。但是單片機(jī)上使用比較困難,所以當(dāng)前的設(shè)備是采用1883端口進(jìn)連接的。

根據(jù)上面的域名和端口號(hào),得到下面的IP地址和端口號(hào)信息: 如果設(shè)備支持填寫(xiě)域名可以直接填域名,不支持就直接填寫(xiě)IP地址。 (IP地址就是域名解析得到的)

華為云的MQTT服務(wù)器地址:121.36.42.100
華為云的MQTT端口號(hào):1883

(2)生成MQTT三元組

華為云提供了一個(gè)在線工具,用來(lái)生成MQTT鑒權(quán)三元組: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打開(kāi)這個(gè)工具,填入設(shè)備的信息(也就是剛才創(chuàng)建完設(shè)備之后保存的信息),點(diǎn)擊生成,就可以得到MQTT的登錄信息了。

下面是打開(kāi)的頁(yè)面:

image-20221207154917230

  • 更多詳細(xì)資料請(qǐng)聯(lián)系.docx
    下載

相關(guān)推薦