【ESP32】mqtt 发送和接收

2024-09-02 22:52
文章标签 发送 mqtt 接收 esp32

本文主要是介绍【ESP32】mqtt 发送和接收,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、首先下载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() {// 初始化串口通信,设置波特率为115200Serial.begin(115200);// 连接到WiFi网络WiFi.begin(ssid, psw);// 循环直到连接到WiFiwhile (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()) {// 创建一个唯一的客户端IDString 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);
}

实验现象:

这篇关于【ESP32】mqtt 发送和接收的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131301

相关文章

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

HTTP协议 HTTPS协议 MQTT协议介绍

目录 一.HTTP协议 1. HTTP 协议介绍 基本介绍: 协议:  注意: 2. HTTP 协议的工作过程 基础术语: 客户端: 主动发起网络请求的一端 服务器: 被动接收网络请求的一端 请求: 客户端给服务器发送的数据 响应: 服务器给客户端返回的数据 HTTP 协议的重要特点: 一发一收,一问一答 注意: 网络编程中,除了一发一收之外,还有其它的模式 二.HTT

【知识分享】MQTT实战-使用mosquitto客户端连接emqx服务器

一、简介     MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的通信协议,旨在实现物联网设备之间的低带宽、高延迟的通信。MQTT协议设计简洁,使用TCP/IP协议进行通信,适用于各种网络环境,尤其适合在有限的网络带宽和不稳定的网络连接条件下进行通信。     MQTT的工作原理是基于发布/订阅模式的消息传递,它包括两个主要

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示; 代码如下: Demo07.jrxml <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]

前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32+VSCODE环境搭建。 安装ESP32-IDF https://dl.espressif.cn/dl/esp-idf/?idf=4.4 直接复制上面链接,进入idf下载界面。

使用Vant Uploader 文件上传,后端java中MultipartFile接收不到文件问题解决

问题 在Uploader组件 after-read回调函数将获取的file对象上传到服务器。 <van-uploader:after-read="uploadFile"/>uploadFile(file) {const data = new FormData();data.

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignName(签名名称)和 TemplateCode(模板code); 二、代码实现 1、项目结构 【/c

springboot项目编写发送异常日志到企微工具包

1.创建基础Bean public final class ThreadFactory implements java.util.concurrent.ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;priva