STM32物聯網項目---ESP8266微信小程序結合OneNET平臺MQTT實現STM32單片機遠程智能控制---MQTT篇(三)

?一、前言

本篇文章通過發送AT指令,與云平臺建立通訊:

1.創建云平臺

2.燒錄AT固件

3.MQTT訂閱(本篇)

4.單片機代碼編寫

5.微信小程序(下載微信開發者工具即可使用)

二、AT指令集介紹


AT指令是一種文本序列,用于控制調制解調器、手機等通訊設備。“AT"代表"Attention”,其后跟隨的文字指定要執行的命令。在ESP8266等模塊中,AT指令用于設定模塊參數、控制網絡連接和其他功能。

以下是一些常用的AT指令示例:

AT:檢測通信模塊與控制端之間的連接。
AT+RST:重置模塊。
AT+CWMODE:設置Wi-Fi工作模式(例如Station模式、AP模式)。
AT+CWJAP:連接Wi-Fi網絡。
AT指令集的優勢在于其簡單性,使得開發者能夠不必深入微控制器的復雜編程,就能夠快速實現無線通信的基本功能。

AT指令的解釋及其用途:


官方AT指令地址:ESP-AT用戶指南
https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/MQTT_AT_Commands.html#cmd-mqttpubraw
很多AT指令后面都帶有一些數字參數,可以通過上方文檔了解每個參數的意義

1.AT+MQTTUSERCFG=0,1,"CSDN","YqRZ5hrM6p","version=2018-10-31&res=products%2FYqRZ5hrM6p%2Fdevices%2FCSDN&et=2028715245&method=md5&sign=G4I0xqIYmYUtCdTTo2t%2FqQ%3D%3D",0,0,""

意義:這個指令用于配置MQTT客戶端的用戶參數。參數0指的是客戶端ID,1為MQTT版本,"CSDN"是設備名稱,"YqRZ5hrM6p"為產品ID,后面一長串是Token,最后的兩個0表示是否清理會話和是否啟用遺囑消息。
作用:設置了客戶端的認證信息和其他MQTT連接選項,這對于與MQTT代理進行通信是必要的。


2.AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1

意義:此指令用于發起到MQTT服務器的連接。參數0是客戶端ID,"mqtts.heclouds.com"是MQTT服務器地址,1883是服務器端口號,最后的1表示啟用清理會話。
作用:根據提供的服務器詳情和客戶端配置信息,指令會嘗試建立MQTT連接。


3.AT+MQTTSUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/post/reply",0

意義:指令用于訂閱MQTT主題。0是客戶端ID,"$sys/YqRZ5hrM6p/CSDN/thing/property/post/reply"是MQTT主題,最后的0是請求的服務質量(QoS)等級。
作用:向MQTT服務器表明客戶端想要接收與該主題相關的消息。


4.AT+MQTTPUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/post","{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":23.6\}}}",0,0

意義:通過此指令將消息發布到MQTT主題。0是客戶端ID,"$sys/YqRZ5hrM6p/CSDN/thing/property/post"是要發布消息的主題。緊接著的是要發布的消息內容,0,0分別表示消息的QoS等級和是否保留消息。
作用:發送一條消息到MQTT服務器,服務器則將該消息轉發給訂閱了對應主題的所有客戶端

5.AT+MQTTSUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/set",0

意義:該指令用于指示ESP8266模塊訂閱一個指定的MQTT主題,"$sys/YqRZ5hrM6p/CSDN/thing/property/set"。
作用:使ESP8266模塊能夠監聽并接收到任何發送到這個主題的消息,通常這些消息是針對設備設置或控制指令。

開始用AT指令連接MQTT

記得將下面的內容更改自己的信息

按順序從1到11上傳即可,每次成功即返回“OK”;?

?收到最后一條需要回應的數據:

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/set_reply","{\"id\":\"4\"\,\"code\": 200\,\"msg\":\"success\"}",0,0

7M6S32xnSS:設備ID

20010712:設備名稱

4:ID(要與下發的ID相同)

注:如果第11條回應了“OK”,但是沒有回應藍框部分,這時候你就要注意了,因為他對后面沒有任何影響(桀桀桀桀桀),只要發完第11條,平臺下發了藍框上面那一部分和“OK”就行。

OneNET數據下發

①:點擊運維監控

②:點擊API調試

③:物模型使用:設置設備屬性

④:填入參數

⑤:這里是接收到的數據

⑥:回應數據:產品id和設備名稱需要更改為自己的,以及里面回應的id需要和接收到的id一致

重點:先點擊一次執行,然后看串口打印助手上面的ID:

此條消息是需要在約定時間內回復的,格式為,其中設備ID和設備名稱改為自己的,id需要與下發的消息ID一致,提前放在待發送區,然后再次點擊執行,在執行有灰色變為藍色(執行右邊圓圈結束)之前,發送這條數據:

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/set_reply","{\"id\":\"28\"\,\"code\": 200\,\"msg\":\"success\"}",0,0

⑦:如果回應成功后,這個頁面會顯示code:0

成功之后在這個界面可以看到自己上傳的23.6

每次下發這個指令,修改后面的數值,云平臺的數據就會變化。

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/post","{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":23.6\}}}",0,0

三、MQTT.fx使用教程

這個軟件主要是測試上傳和下發的數據是否有問題:

1.創建工程

2.訂閱

在訂閱欄輸入以下網址:

$sys/7M6S32xnSS/20010712/thing/property/set? ? ? ? ? ? ? ? ? ? ? ? 訂閱

$sys/產品ID/設備名稱/thing/property/set

如果你的ESP8266已經連接上云平臺這個就會失敗;

3.發布

圖中2目標設備:

$sys/7M6S32xnSS/20010712/thing/property/post? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 發布

$sys/產品ID/設備名稱/thing/property/post

圖中3.發布內容:

嚴格版本:

{"id": "123","version": "1.0","params": {"temp": {"value": 12.5}}
}

隨意版本:

{"id":"123","params":{"temp":{"value":2.5}}}

發布之后,你在軟件的訂閱端也是能夠看到的:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94429.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache Ozone 2.0.0集群部署

單機部署參考:Apache Ozone 介紹與部署使用(最新版2.0.0)-CSDN博客 安裝部署 官方參考:Documentation for Apache Ozone 準備環境 環境準備參考:Linux環境下Hadoop3.4.0集群部署-CSDN博客 1->4-b 參考:Apache Ozone 介紹與部…

【計算機網絡 | 第9篇】信道的極限容量

文章目錄探秘信道的極限容量:從奈氏準則到香農定理一、信道極限容量的基本概念🤔二、奈氏準則:無噪聲情況下的碼元速率限制🐦?🔥(一)帶寬與信號傳輸的關系(二)碼間串擾問…

深入理解Linux iptables防火墻:從核心概念到實戰應用

一、概述:什么是iptables? 在Linux系統中,網絡安全防護的核心工具之一便是iptables。它絕非一個簡單的命令,而是一個功能強大的用戶態工具,與Linux內核中的netfilter框架協同工作,共同構建了Linux的防火墻體…

WebRTC音頻QoS方法一.1(NetEQ之音頻網絡延時DelayManager計算補充)

一、整體簡介 NetEQ計算的網絡延時,直接影響變速算法的決策。在變速算法里面啟動關鍵的作用。 網絡延時計算需要考慮兩種情況: 1、單純抖動的網絡延時計算,在UnderrunOptimizer類中實現; 2、在丟包亂序場景下的網絡延時計算。…

實時操作系統FreeRTOS移植到STM32VGT6

一、前言 下載平臺:STM32F407VGT6 代碼使用平臺:VSCode 編譯器:arm-none-aebi-gcc 程序下載工具:STlink 批處理工具:make 移植的FreeRTOS版本:V11.2.0 其實此方法并不局限在arm-none-aebi-gcc中,此方法對于Keil5也是可以使用的, 只不過復制的一些文件不同…

從線到機:AI 與多模態交互如何重塑 B 端與 App 界面設計

當下,界面設計已經不再是單純的“畫屏幕”。AI 的快速發展讓我們不得不重新審視:交互和視覺究竟會走向什么樣的未來?無論是移動端 App,還是復雜的 B 端產品,設計的核心都在于讓界面更懂用戶。本文嘗試從三個角度切入&a…

【智能化解決方案】大模型智能推薦選型系統方案設計

大模型智能推薦選型系統方案設計0 背景1 問題分析與定義2 模型假設與簡化3 核心模型構建3.1 決策變量與參數定義3.2 目標函數3.3 約束條件4 模型求解與驗證4.1 求解策略4.2 驗證方法4.3 模型迭代優化5 方案實施與系統設計5.1 系統架構設計5.2 工作流程5.3 關鍵算法實現5.4 時序…

【Java基礎】HashMap、HashTable與HashSet:區別、聯系與實踐指南

Java中HashMap、HashTable與HashSet的深度解析:區別、聯系與實踐指南 引言 在Java集合框架中,HashMap、HashTable與HashSet是最常用的哈希型數據結構。它們因高效的查找、插入與刪除性能(平均時間復雜度O(1)),廣泛應用…

互聯網大廠Java面試實戰:核心技術棧與場景化提問解析(含Spring Boot、微服務、測試框架等)

互聯網大廠Java面試實戰:核心技術棧與場景化提問解析 本文通過模擬面試官與求職者謝飛機的對話,深入探討互聯網大廠Java開發的核心技術棧面試問題,涵蓋Java SE、Spring生態、微服務、大數據等多個領域,結合音視頻、電商、AIGC等業…

人工智能-python-深度學習-參數初始化與損失函數

文章目錄參數初始化與損失函數一、參數初始化1. 固定值初始化1.1 全零初始化1.2 全1初始化1.3 任意常數初始化2. 隨機初始化2.1 均勻分布初始化2.2 正態分布初始化3. Xavier初始化4. He初始化5. 總結二、損失函數1. 線性回歸損失函數1.1 MAE(Mean Absolute Error&am…

Android Glide常見問題解決方案:從圖片加載到內存優化

全面總結Glide使用中的典型問題與解決方案,助力提升應用性能與用戶體驗作為Android開發中最流行的圖片加載庫之一,Glide以其簡單易用的API和強大的功能深受開發者喜愛。然而,在實際使用過程中,我們往往會遇到各種問題,…

linux系統ollama監聽0.0.0.0:11434示例

docker應用如dify訪問本地主機部署的ollama,base_url不管配"http://localhost:11434",還是"http://host_ip:11434"都會報錯。這是因為1)docker容器訪問http://localhost:11434,其實訪問的是docker容器自身的服…

Java微服務AI集成指南:LangChain4j vs SpringAI

今天想再完善一下做的微服務項目,想著再接入一個人工客服,于是學習了一下langchan4j的內容,未完一、技術定位辨析:LangChain4j vs Spring AI vs OpenAIOpenAI:AI模型提供商 提供大語言模型API(如GPT-4o&…

華為光學設計面試題

16. 題目:設計一個用于機器視覺檢測的光學系統時,如何保證在高速運動下成像的清晰度和穩定性?(出處:華為智能制造光學檢測項目組招聘面試題)17. 題目:請說明在光學系統設計中,如何權衡景深和分辨率的關系&a…

vue3和react的異同點

這是一個前端領域非常核心的話題。Vue 3 和 React 都是極其優秀的現代前端框架,它們在理念和實現上既有相似之處,也有顯著區別。 下面我將從多個維度詳細對比它們的異同點。核心哲學與設計理念特性Vue 3React設計理念漸進式框架與 “救世主”聲明式 UI 庫…

assetbuddle hash 比對

1.測試 :當在預設上的數據有修改時,生成的ab也會有修改,具體到某個ab的.manifest里會有相應的變化,AssetFileHash 會修改 如圖所示: ManifestFileVersion: 0 CRC: 2818930197 Hashes: AssetFileHash: serializedVersio…

Spring Boot `@Configuration` 與 `@Component` 筆記

Spring Boot Configuration 與 Component 筆記 1?? 基本概念注解作用是否有代理適用場景Component標記普通組件,將類交給 Spring 容器管理? 沒有 CGLIB 代理普通 Bean,工具類、過濾器、監聽器等Configuration標記配置類,用來聲明 Bean? 有…

二、JVM 入門——(三)棧

棧的定義 棧也是一塊區域,用來存放數據的。棧也叫棧內存,主管Java程序的運行。 棧是私有的,是在線程創建時創建,所以它的生命期是跟隨線程的生命期,線程結束棧內存也就釋放。 因此對于棧來說不存在垃圾回收問題&…

深度學習入門第一課——神經網絡實現手寫數字識別

昨天我們講了深度學習的大致框架,下面我們用深度學習網絡來實現一個小項目——手寫數字識別。完整代碼import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor…

Vue中的scoped屬性

理解&#xff1a; 在 .vue 文件中&#xff0c;scoped 是 <style> 標簽的一個屬性&#xff0c;作用是讓樣式只作用于當前組件&#xff0c;避免樣式污染其他組件 scoped 讓樣式只在自己的組件內生效&#xff0c;不會影響到其他組件的同名元素 舉例 沒有 scoped 的情況&…