【ESP32】mqtt 发送和接收

news2024/12/23 15:19:01

一、首先下载MQTT-X软件

二、下载后建立mqtt,设置这些参数

点击连接,然后创建topic主题

三、程序

注释已经写的很清楚了

#include <WiFi.h> // 包含WiFi库,用于连接WiFi网络
#include <PubSubClient.h> // 包含MQTT库,用于与MQTT服务器通信

// WiFi网络名称和密码
const char *ssid = "li123";
const char *psw = "li123321";

// MQTT服务器地址
const char *mqtt_broker = "broker.emqx.io";

// 订阅的主题
const char *topic = "esp32/test";

// MQTT用户名和密码
const char *mqtt_username = "Li_MQTT";
const char *mqtt_password = "li123321";

// MQTT服务器端口号
const int mqtt_port = 1883;

// 创建WiFi客户端对象
WiFiClient espClient;

// 创建MQTT客户端对象,并传入WiFi客户端对象
PubSubClient client(espClient);

// 当接收到MQTT消息时调用的回调函数
void callback(char *topic, byte *payload, unsigned int length) {
  // 打印主题
  Serial.print("Received message on topic: ");
  Serial.println(topic);
  // 打印负载
  Serial.print("Payload: ");
  for (unsigned int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
  // 在这里可以添加处理消息的代码
}

void setup() {
  // 初始化串口通信,设置波特率为115200
  Serial.begin(115200);

  // 连接到WiFi网络
  WiFi.begin(ssid, psw);
  // 循环直到连接到WiFi
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi...");
  }
  // 打印WiFi连接成功信息
  Serial.println("Connected to WiFi");

  // 设置MQTT服务器的地址和端口号
  client.setServer(mqtt_broker, mqtt_port);
  // 设置MQTT消息回调函数
  client.setCallback(callback);

  // 循环直到连接到MQTT服务器
  while (!client.connected()) {
    // 创建一个唯一的客户端ID
    String clientId = "esp32-client-";
    clientId += WiFi.macAddress();
    // 尝试连接到MQTT服务器
    Serial.printf("Connecting to MQTT broker: %s\\n", clientId.c_str());
    if (client.connect(clientId.c_str(), mqtt_username, mqtt_password)) {
      // 如果连接成功,打印连接成功信息
      Serial.println("Connected to MQTT broker");
      // 订阅主题,以便接收消息
      client.subscribe(topic);
    } else {
      // 如果连接失败,打印错误信息
      Serial.print("Connection failed with state: ");
      Serial.print(client.state());
      // 等待2秒后重试
      delay(2000);
    }
  }
}

void loop() {
  // 检查MQTT客户端是否连接,并处理任何传入的消息
  client.loop();
  // 等待100毫秒,避免过于频繁的循环检查
//  client.publish(topic, "aa");//发送
  delay(100);
}

实验现象:

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

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

相关文章

【C++八股题整理】内存布局、堆和栈、内存泄露、函数调用栈

C八股题整理 内存布局C中的内存分配情况堆和栈的内存有什么区别&#xff1f; 堆堆内存分配慢如何优化&#xff1f;内存池内存溢出和内存泄漏是什么&#xff1f;如何避免&#xff1f;内存碎片是什么&#xff1f;怎么解决&#xff1f; 栈为什么栈的访问效率比堆高&#xff1f;函数…

奉加微PHY6233进入DTM模式;TX单音信号;

TX单音信号 参考文档"PH62XX射频测试仪器操作说明文档.pdf"进行DTM配置和操作,这里的目的是为了测试频偏: 这里先把原厂给的DTM的ihex固件下载到芯片里面去: 设置好参数后点击start按钮即可打出单音信号: 这时候频谱的信号如下: 接下来调成其他参数可以看到如下频…

一文彻底搞懂Spring, Spring MVC, Spring Boot 和 Spring Cloud 区别

1.定义说明 Spring, Spring MVC, Spring Boot 和 Spring Cloud 是Spring家族中的四个不同的项目&#xff0c;它们有各自的功能&#xff0c;并且可以在Spring应用程序中一起使用。 1&#xff09;Spring Spring是一个开源容器框架&#xff0c;它集成各类型的工具&#xff0c;通…

Android ROM和Linux内核源码在线阅读网站

1&#xff0c; Android在线代码阅读 http://www.aospxref.com/ 支持最新android源码 http://androidxref.com/ 支持到Android9 2&#xff0c; Linux内核在线阅读网站 https://lxr.missinglinkelectronics.com/ 支持在线阅读linux内核&#xff0c;uboot&#xff0c;qemu &am…

JavaScript方法链

前言 在JavaScript中&#xff0c;方法链&#xff08;Chaining Methods&#xff09;是一种编程技术&#xff0c;允许你在一个表达式中连续调用多个方法。这通常通过让每个方法返回对象自身&#xff08;this&#xff09;来实现&#xff0c;从而可以在同一行上依次调用多个方法。…

文件加密软件怎么选呢?五款人气超高的文件加密软件推荐给你

文件加密软件怎么选呢&#xff1f;以下是五款人气超高的文件加密软件&#xff0c;包括安企神在内&#xff0c;它们各自具有独特的功能和优势&#xff1a; 安企神 功能特点&#xff1a;安企神是一款功能强大的企业级文件加密软件&#xff0c;提供全方位的数据安全保护。它采用先…

TPAMI 2024|如何在动态世界中捕捉每一个细节?智能视觉识别的突破,开放长尾识别技术详解!

题目&#xff1a;Open Long-Tailed Recognition in a Dynamic World 动态世界中的开放长尾识别 作者&#xff1a;Ziwei Liu; Zhongqi Miao; Xiaohang Zhan; Jiayun Wang; Boqing Gong; Stella X. Yu 源码链接&#xff1a; https://liuziwei7.github.io/projects/LongTail.ht…

Java项目: 基于SpringBoot+mysql网上订餐系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql网上订餐系统分前后台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单…

Ollydbg提示:xxxxxx可能不是一个 32 位 PE 文件,无论如何都尝试载入吗?

原标题&#xff1a;OD提示C:\Users\XuanRan\Desktop\xxxx.exe’可能不是一个个 32 位 PE 文件,无论如何都尝试载入吗? 它的意思就是告诉你&#xff0c;OD现在只能用于32位软件。 如果要调试64位程序&#xff0c;去使用x64dbg x64dbg下载链接&#xff1a; https://github.com…

代码随想录算法训练营第32天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

目录 509. 斐波那契数1、题目描述2、思路3、code4、复杂度分析 70. 爬楼梯1、题目描述2、思路3、code 746. 使用最小花费爬楼梯1、题目描述2、思路3、code4、复杂度分析 509. 斐波那契数 题目链接&#xff1a;link 1、题目描述 斐波那契数 &#xff08;通常用 F(n) 表示&…

503错误

503 Service Temporarily Unavailable 我在学习ES-IK分词器时restart es后发现刷新网页报了503错误 后面发现是由于浏览器缓存或存储的Cookies引起的&#xff0c;需要清除缓存和Cookies 然后在游览器设置中找到 ​​ 然后刷新发现可以了

从初阶到顶尖:腾讯产品经理五级能力模型深度解读

产品经理在互联网企业中扮演着至关重要的角色&#xff0c;他们负责从需求分析到产品落地的整个生命周期。在腾讯的产品经理能力模型中&#xff0c;能力被分为五个等级&#xff08;Level 1 到 Level 5&#xff09;&#xff0c;每个等级代表了产品经理在通用能力、专业知识、专业…

【Python报错已解决】“ModuleNotFoundError: No module named ‘mne‘”

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述1.1 报错示例&#xff1a;当我们尝试导入MNE-Python库时&#xff0c;可能会看到以下错误…

基础动销方案:开启稳健起步之路

在当今竞争激烈的商业世界中&#xff0c;如何让产品或服务实现有效动销&#xff0c;是企业生存与发展的关键所在。而基础动销方案&#xff0c;正是企业迈出稳健第一步的重要策略。 基础动销到底有多重要呢&#xff1f;它能在产品或服务推出初期&#xff0c;通过一系列营销手段达…

2025毕业季:如何用Java SpringBoot构建医疗就诊平台?掌握最新技术,开启医疗信息化大门

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的&#xff0c;所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

2.【R语言】RStudio的下载和安装

2.1 RStudio的介绍 RStudio 是一种集成开发环境 (Integrated Development Environment, IDE)&#xff0c;主要用于 R 语言的开发和数据分析。它为 R 语言的使用者提供了一系列便捷的工具和功能&#xff0c;使得编写、调试和执行 R 代码变得更加高效和直观。以下是对 RStudio 主…

面向电商与营销的AI一键试衣:打造个性化购物体验

随着人工智能技术的迅猛发展,虚拟试衣功能正在逐渐改变消费者的在线购物体验。本文将介绍一项名为“Kolors”的项目,它利用先进的AI技术,为电商平台和营销活动提供了一键试衣功能。通过精确调整和优化服装在生成图像中的外观,Kolors使得虚拟试衣体验更加自然和逼真。 一、项…

nginx 部署前端vue项目

文章目录 一、什么是nginx&#xff1f;二、nginx 部署前端vue项目步骤2.1 安装nginx2.1.1 windows环境安装2.1.2 linux环境安装 2.2 打包vue项目 2.3 配置nginx 一、什么是nginx&#xff1f; Nginx是一款轻量级的HTTP服务器&#xff0c;采用事件驱动的异步非阻塞处理方式框架&…

JDK7前时间相关类(Data,SimpleDataFormat,Calender)

Data时间类 世界标准时间&#xff1a;格林尼治时间&#xff08;GMT&#xff09; 目前世界标准时间&#xff08;UTC&#xff09;已经替换为&#xff1a;原子钟 中国标准时间&#xff1a;世界标准时间8小时 总结&#xff1a; 1.如何创建日期对象&#xff1f; Data data new…