15.MQTT协议和云平台(ESP8266)

article/2025/6/23 11:16:35

目录

MQTT 协议

什么是 MQTT 协议

为什么学习 MQTT

MQTT 的相关术语

​编辑MQTT 报文有哪些

MQTT 协议分为哪几部分组成

        固定报头

                哪些报文有固定报头

                固定报头有哪些组成

                剩余长度如何计算

                固定报头的长度范围

        可变报头

                哪些报文有可变报头

                可变报头有哪些组成

        有效载荷

                哪些报文有有效载荷

                有效载荷有哪些组成

                有效载荷的格式一定是 JSON 格式吗?

常见报文

        连接报文

                        连接报文方向

                        连接报文的固定报头

                        连接报文的可变报头

                        连接报文的有效载荷

        连接应答报文

                连接应答报文方向

                连接应答报文固定报头

                连接应答报文可变报头

                连接应答报文有效载荷

        发布报文

                发布报文方向

                发布报文固定报头

                发布报文可变报头

                发布报文有效载荷

        订阅报文

                订阅报文方向

                订阅报文固定报头

                订阅报文可变报头

                订阅报文有效载荷

        订阅确定报文

                订阅确定报文方向

                订阅确认报文固定报头

                订阅确认报文可变报头

                订阅确认报文有效载荷

        心跳报文

                心跳报文方向

                心跳报文作用

                心跳报文固定报头

                心跳报文可变报头

                心跳报文有效载荷

        心跳应答报文

                订阅报文方向

                心跳应答报文作用

                订阅报文固定报头

                订阅报文可变报头

                订阅报文有效载荷

Qos 的理解

Json 格式介绍

 工具链接

        十六进制和 ASCLL 码转换

        JSON 在线工具

云平台

常见的云平台

云平台创建设备

Mqtt.fx 验证平台功能

如何实现 STM32 连接华为云

        如何封装 MQTT 格式的报文

        如何使用 Paho 库实现 STM32 连接服务器


MQTT 协议

什么是 MQTT 协议

        MQTT 是基于订阅和发布的,建立在 TCP/IP 之上的应用层协议。

为什么学习 MQTT

        因为很多物联网平台的接入协议是 MQTT,阿里云,华为云,腾讯云等都支持 MQTT.

MQTT 的相关术语

MQTT 报文有哪些

MQTT 协议分为哪几部分组成

        分为三部分:固定报头(必须有)+可变报头(可能有)+有效载荷(可能有)

        固定报头

                哪些报文有固定报头

                        所有的报文都有固定报头

                固定报头有哪些组成

                        控制报文类型(第 1 个字节高 4 位)+ 报文类型的标志位(第 1 个字节低 4 位)+剩余长度

                剩余长度如何计算

                        最高位为符号位,低 7 位代表长度

                固定报头的长度范围

                        2—5 个字节

        可变报头

                哪些报文有可变报头

                可变报头有哪些组成

                注意:QoS 等于 0 的 PUBLISH 报文不能包含报文标识符

        有效载荷

                哪些报文有有效载荷

 

                有效载荷有哪些组成

                        不同报文类型,有效载荷不同,要去具体章节看。

                有效载荷的格式一定是 JSON 格式吗?

                        只有发布报文的有效载荷部分是 JSON 格式

常见报文

        连接报文

                        连接报文方向

                                客户端→服务端

                        连接报文的固定报头

                        连接报文的可变报头

连接标志占 1 个字节,按位分为不同的功能。

                        连接报文的有效载荷

        连接应答报文

                连接应答报文方向

                        服务端→客户端

                连接应答报文固定报头

                连接应答报文可变报头

                连接应答报文有效载荷

                        连接应答报文无有效载荷

        发布报文

                发布报文方向

                        可以是客户端→服务端,也可以是服务端→客户端

                发布报文固定报头

                发布报文可变报头

                        可变报头按顺序包含主题名和报文标识符。

                发布报文有效载荷

                        有效载荷包含将被发布的应用消息。数据的内容和格式是应用特定的 Json 格式

        订阅报文

                订阅报文方向

                        客户端→服务端

                订阅报文固定报头

                订阅报文可变报头

                        可变报头包含报文标识符

                订阅报文有效载荷

                        支持一次订阅多个主题

 

        订阅确定报文

                订阅确定报文方向

                        服务端→客户端

                订阅确认报文固定报头

                订阅确认报文可变报头

                        可变报头包含等待确认的 SUBSCRIBE 报文的报文标识符

                订阅确认报文有效载荷

                        有效载荷包含一个返回码清单

        心跳报文

                心跳报文方向

                        客户端→服务端

                心跳报文作用

                        在没有任何其它控制报文从客户端发给服务的时,告知服务端客户端还活着。

                        请求服务端发送 响应确认它还活着。

                        使用网络以确认网络连接没有断开。

                心跳报文固定报头

                心跳报文可变报头

                        无

                心跳报文有效载荷

                        无

        心跳应答报文

                订阅报文方向

                        客户端→服务端

                心跳应答报文作用

                        可以通过是否收到平台的心跳应答,来判断设备是否在线

                订阅报文固定报头

                订阅报文可变报头

                        无

                订阅报文有效载荷

                        无

Qos 的理解

Qos=0:如果消息丢失,是不补发。 -- 使用 0

Qos=2:消息最靠谱,需要有往复的确认。

Json 格式介绍

一个无序的键值对集合。

使用花括号“{}”包围。

每个键值对由一个键和一个值组成,键和值之间用冒号“:”分隔,键值对之间用逗号“,”分隔。

键必须是字符串,并且用双引号""包围。

值可以是字符串、数值、布尔值、数组、对象或“null”。

 工具链接

        十六进制和 ASCLL 码转换

                https://coding.tools/cn/hex-to-ascii

        JSON 在线工具

                https://www.sojson.com/

云平台

常见的云平台

        设备需要连接云平台,远程交互云平台可以是共用的,也可以是私有的。

        共用的:阿里云 华为云 腾讯云 OneNet 巴法云

        私有的:服务器上自己部署。

云平台创建设备

        登陆云平台

华为云618年中钜惠_特价云服务器秒杀_企业上云爆款优惠券-华为云成长地图_设备接入 IoTDA-华为云华为云618年中钜惠_特价云服务器秒杀_企业上云爆款优惠券-华为云

Mqtt.fx 验证平台功能

        目的:通过 Mqtt.fx 模拟客户端设备,验证交互的过程

        1. 安装,将安装路径下的图标,发送快捷方式到桌面,并打开软件

        2. 电脑连接网络

        3. 打开设置,填入设备信息

                注意:填写的时候,先 CTRL+A 全选删除,再填入

                注意:端口是 1883

        4. 点击连接,设备显示在线

        5. 填写发布消息的主题和有效载荷,并点击发布

        6. 查看是否发布成功

        7. 切换到订阅页面,填入要订阅的主题并点击订阅

        8. 下发信息到设备并确认是否可以收到

        9. 回复收到下发的应答消息,避免平台显示超时

        10. 也可以从这里下发消息

        11. 断开设备与平台的连接,避免后续与程序冲突

                软件可以模拟封装报文和平台进行交互

如何实现 STM32 连接华为云

        如何封装 MQTT 格式的报文

                自己定义大数组,根据协议挨着字节填充

                Mqtt 库(Paho 库)

                使用联网模块中,自带的 MQTT 固件

        如何使用 Paho 库实现 STM32 连接服务器

                1. 准备 mqtt 库文件

                2. 在自己的工程目录下,新建 1 个名字为 mqtt 的文件夹

                3. 将 MQTT 的源文件全部拷贝到 mqtt 文件夹下

                4. 在 keil 工程中,新建文件夹

                5. 添加.c 文件

                6. 包含.h 的路径

                7. 函数详细的介绍

                8. 库如何使用

                9. 连接报文封装

                10. 发布报文封装

                11. 订阅报文封装

                12. 心跳报文封装


http://www.hkcw.cn/article/iwkmlafZyg.shtml

相关文章

文件索引:数组、二叉树、二叉排序树、平衡树、红黑树、B树、B+树

参考链接:https://www.bilibili.com/video/BV1mY4y1W7pS 数据结构可视化工具:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 问题引出:一般是什么原因导致从磁盘查找数据效率低? 通过索引来更快的查询数据&a…

制作开发AI试衣换装小程序系统介绍

AI试衣换装小程序系统主要主要用于用户通过AI试衣换装小程序,上传自己想要试穿的衣服和自己的模特照片、选择上衣、裤子、裙子、帽子、鞋子、耳环。一键生成换装成自己试穿衣服的照片。 ai换装试衣小程序系统的主要功能模块有:账号注册登录、会员中心、照…

I2C Host Adapter (1)

是一家领先的嵌入式系统工具供应商,可简化各种通信协议的开发和调试。公司提供一系列产品,旨在帮助工程师和开发人员更高效地使用 I3C、I2C等协议。 I2C协议诞生到现在已经快50年了,然而现有市面上的I2C Adapter还没有简单好用,可…

Linux系统查看指定进程ID(PID)的详细信息

在Linux系统中&#xff0c;查看指定进程ID&#xff08;PID&#xff09;的详细信息可通过多种命令实现&#xff0c;以下是常用方法及操作步骤&#xff1a; &#x1f50d; 一、基础信息查看 1. ​​ps 命令​​ ps -p <PID> -o pid,ppid,user,%cpu,%mem,cmd,stat,time #…

计算机视觉---YOLOv6

一、YOLOv6 背景与定位 YOLOv6 由美团视觉团队开发&#xff0c;于 2022 年 6 月开源&#xff0c;定位为工业级实时目标检测模型。其设计目标是在精度与速度之间实现更优平衡&#xff0c;尤其针对 GPU 和边缘设备优化&#xff0c;适合工业检测、自动驾驶、安防等场景。相比 YOL…

Linux中的mysql逻辑备份与恢复

一、安装mysql社区服务 二、数据库的介绍 三、备份类型和备份工具 一、安装mysql社区服务 这是小编自己写的&#xff0c;没有安装的去看看 Linux换源以及yum安装nginx和mysql-CSDN博客 二、数据库的介绍 2.1 数据库的组成 数据库是一堆物理文件的集合&#xff0c;主要包括…

mysql(十四)

目录 多表查询 1.准备工作 2--创建表格 3--插入数据 2.笛卡尔积查询 3.内连接查询 1--隐式内连接 格式 查询 2--显示内连接&#xff08;Inner join .. on &#xff09; 格式 查询 4.外连接查询 1--左外连接查询&#xff08;LEFT OUTER JOIN .. ON &#xff09; 格式 查询 2-- 右…

莫言谈给冯巩起名“闭嘴”原因 饭局趣事揭秘

莫言谈给冯巩起名“闭嘴”原因 饭局趣事揭秘!6月2日,作家莫言在个人社交账号上分享了一段趣事。他提到前年冬天在一个饭局上初次见到相声演员冯巩。冯巩握住莫言的手称赞他的小说写得好,并表示这得益于一个好笔名。冯巩还透露自己最近也想尝试写作,希望莫言能为他起个笔名。…

Windows采用npx方式本地部署n8n

windows本地部署n8n 1.安装node.js n8n Github首页: https://github.com/n8n-io/n8n 2.解决npx报错 Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。尝试新的跨平台 PowerShell https://aka.ms/pscore6PS C:\WINDOWS\system32> npx -v npx : 无…

存款10万不敢生病的中年人有多难?这是一个残酷的事实!

人到了中年,就会遇到更多的危险,婚姻破裂,失业,房贷,子女的学业,这些都是他们生命中的最后一根救命稻草。不过只要有足够的资金,一切都会迎刃而解。问题是,一个拥有十万元存款的中年人能否应付中年危机?有人说,这是一个残酷的事实。一、存款10万元意味着什么?说实话…

通讯录Linux的实现

产品底层思考&#xff1a; 人员如何存储 -> 链表 &#xff08;增删改 但是排序不适合&#xff09;文件存储 -> 人员数据的格式 name:xxx,phone:xxx人员信息 -> 姓名、电话 引出2 name:xxx,phone:xxx,age:xxx,addr,xxx name:yyy,phone:yyy,age:yyy,addr,yyy 实现通讯录…

Python:操作 Excel 格式化

🔧Python 操作 Excel 格式化完整指南(openpyxl 与 xlsxwriter 双方案) 在数据处理和报表自动化中,Python 是一把利器,尤其是配合 Excel 文件的读写与格式化处理。本篇将详细介绍两大主流库: openpyxl:适合读取与修改现有 Excel 文件xlsxwriter:适合创建新文件并进行复…

阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及参考

云服务器ECS是阿里云众多云产品中&#xff0c;最受用户关注的产品&#xff0c;阿里云服务器提供多样化的计算能力&#xff0c;支持x86、Arm架构&#xff0c;涵盖CPU、GPU等多种服务器类型&#xff0c;满足各种用户需求。其便捷易用特性包括分钟级交付、通用API和性能监控框架&a…

【笔记】Windows 下载并安装 ChromeDriver

以下是 在 Windows 上下载并安装 ChromeDriver 的笔记&#xff1a; ✅ Windows 下载并安装 ChromeDriver 1️⃣ 确认 Chrome 浏览器版本 打开 Chrome 浏览器 点击右上角 ︙ → 帮助 → 关于 Google Chrome 记下版本号&#xff0c;例如&#xff1a;114.0.5735.199 2️⃣ 下载…

ABP-Book Store Application中文讲解 - Part 4: Integration Tests - TBD

ABP-Book Store Application中文讲解 - Part 4: Integration Tests 本章用于介绍如何做集成测试。 1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - Part 3: Creating, Updating and Deleting Books 项目之间…

房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块

房屋租赁系统 JavaVue.jsSpringBoot&#xff0c;包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块 百度云盘链接&#xff1a;https://pan.baidu.com/s/1KmwOFzN9qogyaLQei3b6qw 密码&#xff1a;l2yn 摘 要 社会的发展和科学技术的进步&#xf…

用wireshark抓包分析学习USB协议

用 wireshark 抓包分析学习 USB 协议 1 框架 上图是使用USB协议通信的两个设备的实现细节。看起来比较复杂&#xff0c;可以看下面的示意图&#xff1a; 整个框架分为三层&#xff1a;Function Layer、USB Device Layer 和 USB Bus Interface Layer&#xff1b;黑色双向箭头代…

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量&#xff0c;C就是通道数这只是一个二维张量所以通道为1&#xff0c;H就是高&#xff0c;W就是宽&#xff0c;所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

加拿大没邀请,莫迪不去G7 双边关系紧张所致

据知情人士透露,由于新德里与渥太华关系冷淡,印度总理莫迪或将缺席6月中旬在加拿大举行的七国集团(G7)峰会。这可能将是莫迪六年来首次缺席该峰会。消息人士表示,对于加拿大将于6月15日至17日主办的G7峰会,印方迄今未收到加方正式邀请,且印方也没有表明参加意愿。在进行…

6岁女童被男子拖进小巷 警方通报 嫌疑人已被拘留

6月3日,湖南娄底市公安局娄星分局通报了一起事件。5月20日下午,嫌疑人刘某某(男,38岁)酒后行至娄底市娄星区涟滨中街附近,拖拽一名6岁女童进入居民区巷子。幸好被居民及时制止并报警。接警后,民警迅速赶到现场将刘某某控制。经侦查,刘某某涉嫌寻衅滋事已被拘留,并将依…