当前位置: 首页 > article >正文

【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.kler.cn/a/306354.html

相关文章:

  • 使用CubeMX一键配置Freertos
  • Java学习--网络编程
  • 【教程】华南理工大学国际校区宿舍门锁声音设置
  • Go开发指南-Gin与Web开发
  • macOS 设置固定IP
  • 考研季来啦!考研过程中有哪些事情需要避坑?
  • 10分钟在网站上增加一个AI助手
  • 深入理解 ECMAScript 和 JavaScript
  • 服务器断电重启后报XFS文件系统错误 XFS (dm-0)_ Metadata I_O error
  • Android系列基础知识总结
  • 算力服务器和GPU服务器的区别是什么?
  • 要想实现稳定利润就来Anzo Capital 昂首资本官网
  • Android 测试手册
  • Scrapy 2.6 Spider Middleware 爬虫页中间件基本使用
  • Go 中 RPC 的使用教程
  • UART协议
  • 初识HTTP
  • 生产环境下Nuxt3如何设置部署端口号?
  • es6(1)
  • Dubbo从入门到实战
  • 9.12-kubeadm方式安装k8s+基础命令的使用
  • 【Unity】 HTFramework框架(五十六)MarkdownText:支持运行时解析并显示Markdown文本
  • 微服务实战系列之玩转Docker(十五)
  • java实现策略模式
  • 腾讯又开放了一款新的开发工具,用起来真优雅
  • Python 中常见的数据结构(二)