ESP32-C3模组上跑通MQTT(1)

本文内容参考:

《ESP32-C3 物联网工程开发实战》

特此致谢!

一、远程控制的介绍

什么是远程控制?顾名思义,远程控制就是远距离控制,是指控制设备(如智能手机、计算机等网络设备)通过广域网控制被控设备的行为。远程控制不受地域的限制,比如某个人可以在异地(如公司、外地等)通过智能手机控制家中的智能灯。远程控制的控制设备和被控设备一版都需要连接到云服务器,控制设备发送的控制命令交由云服务器,再转发至被控设备上。

实际上,远程控制和本地控制很类似,本地控制是局域网内的数据通信;而远程控制是广域网的数据通信。本地控制内的服务器端可以是被控设备本身、也可以是局域网内的一台主机,用户的控制设备(如手机、计算机)必须和服务器端在同一局域网内,这是一个受限条件;远程控制的服务器端一般都是云服务器(现在规模比较大的几家云服务器厂商有阿里云、亚马逊云、腾讯云等),被控设备和用户的控制设备都需要连接到云服务器上,数据的转发、存储交由云服务器处理。

远程控制的好处是设置灵活,可突破空间的限制。相比于本地控制,远程控制需要云服务和网络流量的支持,成本比本地控制高,而且远程控制的延时往往比本地控制大,数据的泄露风险更大。虽然远程控制需要云服务器的配合,成本比本地控制高,但远程控制方便于用于远程查看被控设备的运行状态,二者各有利弊。

具体到ESP32设备。在远程控制中,无论是控制设备(智能手机)还是被控设备(如本系列文章使用的ESP32-C3),都是直接与云服务器进行连接的,数据也是交由云服务器进行转发的,所以读者需要了解被控设备和控制设备是如何与云服务器进行通信的。

目前市面上大部分的物联网设备都可以接入各种云,如小米系、阿里系、京东系等产品都会接入自家的云平台,用户只需要下载对应的App进行配网绑定,就可以使用App来查看和控制物联网设备。

如果用户的智能手机与被控设备在同一个局域网内,则可以使用本地控制;如果用户的智能手机与被控设备不在同一个局域网内,就必须使用远程控制。本地控制也有自己的使用场景与优势,应当充分发挥本地控制与远程控制的优势,打造最适宜的物联网控制技术。

二、常见的云端数据通信协议

从远程控制的拓扑结构来看,智能手机和被控设备不是直接连接的,两者都连接到云服务器(云端),智能手机发送的数据和被控设备发送的数据都是通过云端进行转发的。那么,设备与云端连接的协议是什么?数据通信的协议是什么?只有弄清楚这些协议,读者才能对远程控制有一定的认识。

目前常见的设备与云端连接的协议有HTTP协议和MQTT协议。

1. HTTP协议

HTTP的英文全称为HyperText Transfer Protocol,中文为超文本传输协议。HTTP是基于传输层之上的应用协议。HTTP协议是万维网(World Wide Web,WWW或Web)的数据通信基础,其规定了客户端与服务器端之间数据传输的格式与方式。

HTTP协议是一个客户端(用户)和服务器端(网站)之间请求和应答的标准。客户端通过网页浏览器、网络爬虫或者其它的工具与服务器建立TCP连接,然后发送请求读取服务器端数据、上传数据或表单到服务器端,并读取服务器端的响应状态(如“HTTP/1.1 200 OK”),以及返回的内容(如请求的文件、错误消息或者其它信息)。通过HTTP协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

在0.9和1.0版本的HTTP协议中,TCP连接在每一次请求和回应之后关闭。在1.1版本的HTTP协议中,引入了保持连接的机制,一个连接可以重复多个请求和回应,这样可以在每次数据请求前减少TCP握手时间和网络开销。

常见的HTTP请求方法有:

  • GET

请求指定的URI资源。

  • POST

向指定URI资源提交数据,请求服务器端进行处理(如提交表单或者上传文件)。

  • DELETE

请求服务器端删除URI所标识的资源。

举例:

在智能灯的本地控制中,客户端使用HTTP协议,可以通过HTTP请求方式来获取智能灯的开关状态(GET)或者操作智能灯的亮灭(POST),并且每个操作都会有对端的响应回复。也就是说,使用GET方法来获取智能灯的状态,使用POST方法来操控智能灯的行为。因此,HTTP协议在应用上比单纯的TCP协议更加完善与合理。

2. MQTT协议

MQTT协议是本系列文章的重点和焦点,因此放到下一篇文章中单独进行介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FIFO Generate IP核使用——FIFO写操作详解及Status Flags页配置

本文介绍了FIFO的写操作及Status Flags页的配置信息。 1 FIFO 写入操作 当FIFO的写入使能(write enable)被置位,并且FIFO未满时,数据会从输入总线(din)被添加到FIFO中,并且写入确认&#xff0…

Mac环境下ollama部署和体验

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于ollama ollama和LLM(大型语言模型)的关系,类似于docker和镜像,可以在ollama服务中管理和运行各种LLM&…

逻辑漏洞:支付逻辑漏洞

目录 1、直接修改商品的价格 2、修改支付状态 3、修改商品数量 4、另类支付 5、修改支付接口 6、重复支付 7、最小支付和最大支付 8、越权支付 9、无线次试用 10、线程并发问题 前两天学习了逻辑漏洞中的越权漏洞,今天开始学习支付逻辑漏洞,这…

数据分析--客户价值分析RFM(分箱法/标准化)

原数据 原数据如果有异常或者缺失等情况,要先对数据进行处理 ,再进行下面的操作,要不然会影响结果的正确性 一、根据RFM计算客户价值并对客户进行细分 1. 数据预处理 1.1 创建视图存储 R、F、M的最大最小值 创建视图存储R 、F、M 的最大最小…

Sublime Vim模式配置:q关闭当前标签页

在Sublime安装目录下的->Packages文件夹下新建User文件夹创建文件Vintage.sublime-commands 路径为Sublime安装目录->Packages->User->Vintage.sublime-commands文件内容如下[{"caption": ":w - Save","command": "save"}…

淘宝新店铺一般多久开始有单

淘宝新店铺一般多久开始有单 淘宝推广可以使用3an推客。3an推客(CPS模式)给商家提供的营销工具,由商家自主设置佣金比例,激励推广者去帮助商家推广商品链接,按最终有效交易金额支付佣金,不成交不扣费。是商…

堆排序以及TOP-K问题

片头 嗨!小伙伴们,大家好!今天我们来深入理解堆这种数据结构,分析一下堆排序以及TOP-K问题,准备好了吗?我要开始咯! 一、堆排序 这里我们先假设要排成升序,也就是从左到右&#xf…

【Leetcode每日一题】 动态规划 - 简单多状态 dp 问题 - 删除并获得点数(难度⭐⭐)(70)

1. 题目解析 题目链接:740. 删除并获得点数 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 问题分析 本题是「打家劫舍」问题的变种,但核心逻辑依然保持一致。题目要求从给定的数组nums中选择…

【面试经典 150 | Kadane】环形子数组的最大和

文章目录 写在前面Tag题目来源解题思路方法一:求最大非空子数组和最小子数组和 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及…

C++:输入输出运算符重载

在C中,输入输出运算符是用于从标准输入设备(通常是键盘)读取数据或将数据输出到标准输出设备(通常是屏幕)的运算符。常用的输入输出运算符包括: 输入运算符 (>>): 用于从输入流&#xff0…

逻辑漏洞:水平越权、垂直越权靶场练习

目录 1、身份认证失效漏洞实战 2、YXCMS检测数据比对弱(水平越权) 3、MINICMS权限操作无验证(垂直越权) 1、身份认证失效漏洞实战 上一篇学习了水平越权和垂直越权的相关基本知识,在本篇还是继续学习,这…

深度学习:基于Keras,使用长短期记忆人工神经网络模型(LSTM)对股票市场进行预测分析

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《计及高阶方程分段线性化的港口电-氢综合能源系统优化调度》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

clang:在 Win10 上编译 MIDI 音乐程序

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10:x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ ,安装后大约占…

SQL 基础 | UNION 用法介绍

在SQL中,UNION操作符用于合并两个或多个SELECT语句的结果集,形成一个新的结果集。 使用UNION时,合并的结果集列数必须相同,并且列的数据类型也需要兼容。 默认情况下,UNION会去除重复的行,只保留唯一的行。…

Flutter笔记:使用Flutter私有类涉及的授权协议问题

Flutter笔记 使用Flutter私有类涉及的授权协议问题 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.cs…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-1)词向量

一句话归纳: 1)神经网络不仅可以处理图像,还可以处理文本。 2)神经网络处理文本,先要解决文本的表示(图像的表示用像素RGB)。 3)独热编码词向量: 词表:{我&am…

ensp 配置s5700 ssh登陆

#核心配置 sys undo info-center enable sysname sw1 vlan 99 stelnet server enable telnet server enable int g 0/0/1 port lin acc port de vlan 99 q user-interface vty 0 4 protocol inbound ssh authentication-mode aaa q aaa local-user admin0 password cipher adm…

Java集合框架-容器源码分析

Java集合框架-容器&源码分析 文章目录 Java集合框架-容器&源码分析[TOC](文章目录)前言一、集合框架概述二、Collection接口及其子接口(List/Set)及实现类2.1 Collection接口中方法2.2 遍历:Iterator迭代器接口&foreach(5.0新特性)2.3 Connection子接口…

SQL 基础 | AS 的用法介绍

SQL(Structured Query Language)是一种用于管理和操作数据库的标准编程语言。 在SQL中,AS关键字有几种不同的用法,主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法: 重命名列:在SELECT语句中&a…