ESP32通过MQTT连接阿里云平台实现消息发布与订阅

文章目录

前言

一、准备工作

二、阿里云平台配置

 三、代码实现

总结


前言

本文将介绍如何使用ESP32开发板通过MQTT协议连接阿里云物联网平台,并实现消息的发布与订阅功能。我们将使用Arduino IDE进行开发,并借助PubSubClient库实现MQTT通信。

一、准备工作

  • ESP32开发板
  • Arduino IDE
  • 阿里云物联网平台账号
  • PubSubClient库

二、阿里云平台配置

1. 登录阿里云物联网平台

2. 创建产品与设备,获取设备三元组(ProductKey、DeviceName、DeviceSecret)

3. 配置Topic,例如:

  • 发布Topic: /a1xxxxxx/${deviceName}/user/update
  • 订阅Topic: /a1xxxxxx/${deviceName}/user/get

 三、代码实现

#include <WiFi.h>
#include <PubSubClient.h>// WiFi配置
const char* ssid = "your_wifi_ssid";
const char* password = "your_wifi_password";// 阿里云MQTT配置
const char* mqtt_server = "iot-xxxxxx.mqtt.aliyuncs.com";
const int mqtt_port = 1883;
const char* mqtt_clientId = "your_client_id";
const char* mqtt_username = "your_device_name&your_product_key";
const char* mqtt_password = "your_device_secret";WiFiClient espClient;
PubSubClient client(espClient);void setup_wifi() {delay(10);Serial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());
}void callback(char* topic, byte* payload, unsigned int length) {Serial.print("Message arrived [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < length; i++) {Serial.print((char)payload[i]);}Serial.println();
}void reconnect() {while (!client.connected()) {Serial.print("Attempting MQTT connection...");if (client.connect(mqtt_clientId, mqtt_username, mqtt_password)) {Serial.println("connected");client.subscribe("/a1xxxxxx/${deviceName}/user/get");} else {Serial.print("failed, rc=");Serial.print(client.state());Serial.println(" try again in 5 seconds");delay(5000);}}
}void setup() {Serial.begin(115200);setup_wifi();client.setServer(mqtt_server, mqtt_port);client.setCallback(callback);
}void loop() {if (!client.connected()) {reconnect();}client.loop();// 发布消息示例static unsigned long lastMsg = 0;if (millis() - lastMsg > 5000) {lastMsg = millis();String msg = "Hello from ESP32";client.publish("/a1xxxxxx/${deviceName}/user/update", msg.c_str());Serial.println("Message published");}
}

其中,setup_wifi()用于连接WiFi网络,callback()用于处理接收到的MQTT消息,reconnect()用于处理MQTT连接与重连。


总结

通过本文,能够成功实现了ESP32与阿里云物联网平台的MQTT通信。

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

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

相关文章

Ubuntu下载安装Docker-Desktop

下载 Ubuntu | Docker Docs 预备工作 Ubuntu增加docker apt库-CSDN博客 安装 sudo apt-get updatesudo apt install gnome-terminal# sudo apt install -y docker-composesudo apt-get install ./docker-desktop-amd64.deb 测试 sudo docker run hello-worldHello from D…

Python爬虫实战:获取笔趣阁图书信息,并做数据分析

注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 1. 环境准备与反爬策略 python import requests from bs4 import BeautifulSoup import pandas as pd import re import time import random from fake_useragent …

前端实现防抖功能的详细解读

在前端开发中&#xff0c;防抖&#xff08;Debounce&#xff09; 是一种优化技术&#xff0c;用于限制某个函数在短时间内被频繁调用的次数。它的核心思想是&#xff1a;在一定时间内&#xff0c;无论触发多少次事件&#xff0c;只执行最后一次操作。防抖通常用于处理用户输入、…

通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!

欢迎来到涛涛聊AI。 在DeepSeek-V3模型的参数描述中&#xff0c;你可能会看到类似“671B 37B 128K”这样的标记。这些字母和数字的组合看起来像密码&#xff0c;但其实它们揭示了模型的“大脑容量”和“工作方式”。我们用日常生活的比喻来解释&#xff1a; 一、数字含义&…

node.js + html调用ChatGPTApi实现Ai网站demo(带源码)

文章目录 前言一、demo演示二、node.js 使用步骤1.引入库2.引入包 前端HTML调用接口和UI所有文件总结 前言 关注博主&#xff0c;学习每天一个小demo 今天是Ai对话网站 又到了每天一个小demo的时候咯&#xff0c;前面我写了多人实时对话demo、和视频转换demo&#xff0c;今天…

unity学习42:动画状态机:混合动画状态 blend tree

目录 1 动画状态机 1.1 新建动画状态 2 混合动画状态 blend Tree 2.1 new blend Tree 2.2 blend tree state 和普通的 state的属性不同 2.3 双击blend tree 进入下一层 blend tree内部 2.3.1 blend tree 内部 2.3.2 blend type 2.3.3 参数类型默认是float&#xff0…

集成测试总结文档

1. 集成测试的定义 集成测试&#xff08;Integration Testing&#xff09;是在单元测试之后&#xff0c;将多个独立的软件模块或组件组合在一起进行测试的过程&#xff0c;目的是验证这些模块之间的接口、数据传递、协作逻辑是否符合设计要求&#xff0c;并发现因集成引发的缺…

Mybatisplus——Mybatisplus3.5.2版本使用Page分页插件查询,records有数据但是total显示0

目录 一、问题背景 debug 执行Mybatisplus使用Page分页插件查询时&#xff0c;发现 Page 里面的records有数据但是total显示0。 二、问题产生的原因 未配置MybatisPlus的分页插件拦截器导致的或者因mybatis-plus版本3.4或3.5版本导致原先的分页插件paginationInterceptor无法…

Android10 音频参数导出合并

A10 设备录音时底噪过大&#xff0c;让音频同事校准了下&#xff0c;然后把校准好的参数需要导出来&#xff0c;集成到项目中&#xff0c;然后出包&#xff0c;导出方式在此记录 设备安装debug系统版本调试好后&#xff0c; adb root adb remount adb shell 进入设备目录 导…

C#(Winform)通过添加AForge添加并使用系统摄像机

先展示效果 AForge介绍 AForge是一个专门为开发者和研究者基于C#框架设计的, 也是NET平台下的开源计算机视觉和人工智能库 它提供了许多常用的图像处理和视频处理算法、机器学习和神经网络模型&#xff0c;并且具有高效、易用、稳定等特点。 AForge主要包括: 计算机视觉与人…

后端开发:高效数据库查询优化实战指南

在后端开发中&#xff0c;数据库查询性能直接影响整个应用的响应速度和用户体验。低效的查询可能导致系统响应缓慢&#xff0c;甚至出现卡顿现象。本文将深入探讨数据库查询优化的实用技巧&#xff0c;并结合代码示例&#xff0c;帮助开发者提升数据库操作的效率。 一、理解查…

【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy

【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型&#xff5c;Andrej Karpathy 大型语言模型&#xff08;LLM&#xff09;工作原理与使用指南核心观点模型训练三阶段1. 预训练阶段2. 后训练阶段&#xff08;Post-training&#xff09;3. 强化学…

【苍穹外卖】学习

软件开发整体介绍 作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程&#xff0c; 以及软件开发过程中涉及到的岗位角色&#xff0c;角色的分工、职责&#xff0c; 并了解软件开发中涉及到的三种软件环境。那么这一小节&#xff0c;我们将从 软件开发流程、角色…

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十五节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;RoutineControl_0x31服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x31服务、例程控制、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x31服…

yanshee机器人初次使用说明(备注)-PyCharm

准备 需要&#xff1a; 1&#xff0c;&#xff08;优必选&#xff09;yanshee机器人Yanshee 开发者说明 2&#xff0c;手机-联网简单操控 / HDMI线与显示器和键鼠标-图形化开发环境 / 笔记本&#xff08;VNC-内置图形化开发环境/PyCharm等平台&#xff09;。 3&#xff0c;P…

#渗透测试#批量漏洞挖掘#致远互联AnalyticsCloud 分析云 任意文件读取

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

win11 MBR 启动 如何把我的硬盘改 GPT win11 的 UEFI 启动

bootrec /fixboot bootrec /rebuildbcd bootrec /scanos 相当于你的硬盘从MBR转换为GPT&#xff0c;并从传统的BIOS启动&#xff08;即MBR&#xff09;转换为UEFI启动&#xff08;即GPT&#xff09;&#xff0c;你需要执行以下步骤。请注意&#xff0c;这些步骤涉及数据操作&a…

Flask框架入门完全指南

一、初识Flask&#xff1a;轻量级框架的魅力 1.1 Flask框架定位 Flask作为Python最受欢迎的轻量级Web框架&#xff0c;以"微核心可扩展"的设计哲学著称。其核心代码仅约2000行&#xff0c;却支持通过扩展实现完整Web开发功能。这种设计使得开发者可以&#xff1a; …

SQL与数据库程序设计

1.1986年&#xff0c;10月美国国家标准局颁布了SQL语言的美国标准&#xff0c;称为SQL86 2.SQL(Structured Query Language)又称为结构化查询语言 3.建立索引的主要目的是加快查找的速度 4.在基本表上建立一个或者多个索引 5. 一个基本表是最多只能建立一个聚簇索引 6.CAL…

Windows Server 中配置 Active Directory:从零到精通

Windows Server 中配置 Active Directory:从零到精通 引言 在企业 IT 基础架构中,Active Directory(AD)扮演着至关重要的角色。它是 Windows Server 提供的一种目录服务,能够集中管理用户、计算机和权限。对于初学者来说,搭建 Active Directory 可能会觉得复杂,但实际…