【STM32】esp8266通过MQTT连接服务器|订阅发布

1. MQTT协议

该协议为应用层协议,传输层使用的是tcp,MQTT的订阅和发布,就相当于在抖音中你关注了某个领域的博主(订阅),如果有其他人发了作品就会推给你(发布),默认已经安装好了

简单演示
订阅

mosquitto_sub -h "47.121.24.16" -p 1883  -t "A" 

mosquitto_sub 订阅指令
-h 主机ip
-p 端口号1883
-t 主题

发布

mosquitto_pub -h "47.121.24.16" -p 1883 -t "A" -m "nihaoma"

mosquitto_pub 发布指令
-h 主机ip
-p 端口号1883
-t 主题
-m 内容

在这里插入图片描述
订阅主题“A”的就可以收到

2.esp8266通过MQTT连接服务器

1.需要在单片机里面建立配置用户信息

void esp8266_connect_MQTT(const char*ip,int port,const char* user,const char* password)

//需要云服务器ip地址和端口号,以及MQTT服务器的用户名以及密码,如果是匿名用户的话,用户名和密码随便给
在这里插入图片描述
在这里插入图片描述

根据手册构建指令配置信息保存在单片机rom
在这里插入图片描述

2.eps8266连接MQTT
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接成功在服务器这边验证

isof -i |grep mosquitto   //查看链接情况

在这里插入图片描述

3.发布

单片机发布,MQTT服务器这边订阅就可以收到
在这里插入图片描述

void esp8266_Publish(const char* topic,const char*content);//发布的主题以及内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.订阅

在MQTT服务器这边发布,esp8266这边订阅,然后通过串口2返回给单片机,单片机将其给串口1,然后在串口助手上显示出来

void esp8266_subscribe(const char* topic)//订阅主题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现发送的helloworld收到成了helloword了,所以我们需要

	   uint8_t data,flag=0;uint32_t old_tick=0;while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(HAL_GetTick()-old_tick>50&&flag) //假如说收到最后一个字符后等50ms后,说明接收完了{clearbuffer();  //打印到串口1,清除缓冲区flag=0;  //防止频繁冲刷缓冲区}if(HAL_UART_Receive(&huart2,(uint8_t*)&data,1,10)==HAL_TIMEOUT)  //一个字符和另一个字符很快就能接收,如果超过10ms,就直接continue{continue;}else{	buffer[num++]=data;  //放到缓冲区里面old_tick=HAL_GetTick();//获取当前字符时间,用于和下一个字符作对比flag=1;}}

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

哈希表、算法

哈希表 hash: 在编程和数据结构中,"hash" 通常指的是哈希函数,它是一种算法,用于将数据(通常是字符 串)映射到一个固定大小的数字(哈希值)。哈希函数在哈希表中尤为重要…

探索图论中的关键算法(Java 实现)

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩!||Day031. 最短路径算法Dijkstra算法Java 实现: Bellman-Ford算法Java 实现: 2. 最小生成树算法Prim算法Java 实现: Kruskal算法Ja…

C++速通LeetCode简单第9题-二叉树的最大深度

深度优先算法递归: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right…

Conmi的正确答案——MySQL的层级递归查询(递归公共表表达式,CTE)

数据库:oceanbase-ce 递归sql主体: WITH RECURSIVE country_area_tree AS (-- 非递归部分,初始化查询SELECT id, area_name, parent_id, 0 AS levelFROM country_areaWHERE id 589004044419077UNION ALL-- 递归部分,找到子节点S…

聚类_K均值

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs1.数据预处理 #创建基于高斯分布的样本点, x是点的坐标,y是所属聚类值 x, y make_blobs(n_samples100, centers6, random_state100, cluster_std0.6) # 设置图形尺寸…

2. 变量和指令(omron 机器自动化控制器)——1

机器自动化控制器——第二章 变量和指令 1 2-1 变量一览表MC通用变量轴变量▶ 轴组变量 运动控制指令的输入变量输入变量的有效范围▶ 枚举体一览表 运动控制指令的输出变量运动控制指令的输入输出变量 2-1 变量一览表 MC功能模块使用的变量分为两类。 一类是监视轴等的状态及…

电脑提示丢失mfc140u.dll的详细解决方案,mfc140u.dll文件是什么

遇到电脑显示“缺少 mfc140u.dll 文件”的错误其实是比较常见的。这种提示通常表示某个应用程序在尝试运行时未能找到它所需的关键 DLL 文件,导致无法正常启动。不过,别担心,本文将一步步引导你通过几种不同的方法来解决这个问题,…

VSCode拉取远程项目

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

el-input设置后缀显示单位并阻止滚轮微调

项目中收集form表单信息时,有时会需要在el-input后面显示单位,效果如图: 当然,我们可以直接在输入框后面加上单位,但直接给输入框上加单位不管是视图上还是用户体验上看起来都要好一点 element-plus / element-ui给我…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 01 安装 nodejs 环境

文章目录 下载安装测试 这里让我们去看看如何安装一下 nodejs 的环境 下载 通过官网进行下载安装包 官网 https://nodejs.org/zh-cn点击 下载 Node.js (LTS) 开始下载 安装 下载完成之后,双击进行安装 开始进行安装了 这样,node.js 就安装好了 测试 …

unity3d入门教程三

unity3d入门教程三 8.1游戏脚本8.2脚本的使用8.3认识脚本组件8.4帧率9.1游戏脚本9.2获取节点和组件9.3MonoBehaviour9.4父节点与子节点9.5组件的属性9.6脚本的单步调试 8.1游戏脚本 通过程序控制对象属性(如运动,修改transform的位置属性) …

SpringCloudAlibaba:Seata

1. 面试题 2.1 你简历上写用微服务boot/cloud做过项目,你不可能只有一个数据库吧?谈谈多个数据库之间如何处理分布式事务? 2.2 阿里巴巴的Seata-AT模式如何做到对业务的无侵入? 在一阶段,Seata 会拦截“业务 SQL”&a…

逆向学习系列(三)adb的使用

由于是记录学习,我就用结合自己的理解,用最通俗的语言进行讲解。 adb是android debug bridge的简写,其作用就是将电脑和手机相连接,用电脑控制手机。 一、adb哪里来 我使用的adb一般都是安装模拟器的时候,模拟器自带…

MySQL基础——DQL

DQL(Data Query Language,数据查询语言)是SQL中的一个子集,主要用于查询数据库中的数据。DQL的核心语句是 SELECT,它用于从一个或多个表中提取数据,并能够通过各种条件进行过滤、排序和聚合操作。下面是DQL…

【学习笔记】手写Tomcat 二

目录 响应静态资源 HTTP协议请求格式 1. 解析请求信息 创建解析请求类 HttpRequest 2. 创建静态资源目录 webs 3. 封装响应信息 创建静态资源处理器 StaticResourceHandler 创建响应类 HttpResponse 然后就可以调用响应类了 测试 静态资源的路径说明 作业 1. 绘制…

JNI 详细介绍

一 介绍 java调⽤c,c代码可以通过JNIEnv执行java代码。 安卓NDK 已经对JNI环境进行了集成,我们可以通过android studio来快速搭建一个项目。 二 项目搭建 打开android studio 创建工程,创建工程选择模板Native C 三 模板格式介绍 生成的…

非关系型数据库Redis

文章目录 一,关系型数据库和非关系型数据可区别1.关系型数据库2.非关系型数据库3.区别3.1存储方式3.2扩展方式3.2事务性的支持 二,非关系型数据为什么产生三,Redis1.Redis是什么2.Redis优点3.Redis适用范围4. Redis 快的原因4.1 基于内存运行…

直播标准权威发布,阿里云RTS获首批卓越级评估认证

近期举办的2024“可信云大会”上,中国信通院正式发布了2024年上半年音视频领域最新评估结果。阿里云超低延时直播,以首批卓越级,通过中国信通院超低延时直播性能及服务质量分级测试。 标准发布,权威量化直播体验质量 从直播元年发…

神经网络通俗理解学习笔记(0) numpy、matplotlib

Numpy numpynumpy 基本介绍Ndarray对象及其创建Numpy数组的基础索引numpy数组的合并与拆分(重要)numpy数组的矩阵运算Numpy数组的统计运算numpy中的arg运算numpy中的神奇索引和比较 Matplotlib numpy numpy 基本介绍 numpy 大多数机器学习库都用了这个…

【Echarts】使用多横坐标轴展示近十五天天气预报

现在手机都有天气app,使用echarts展示十五天天气预报的需要你遇到过这样离大谱的需求吗&#xff1f;如果没有或许你能从中找到些许思路。 效果 看效果是不是有点那么个意思,开局一张图,代码全靠ctrl c。不多说上代码。 vue模板引擎代码 <template><div ref"xA…