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

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.lryc.cn/news/537683.html

相关文章:

  • NVIDIA Jetson Orin Nano 刷机过程
  • C#学习之数据转换
  • typecho快速发布文章
  • 深度学习R4周:LSTM-火灾温度预测
  • 探索Java中的集合类_特性与使用场景
  • 自动化遇到的问题记录(遇到问题就更)
  • 【云安全】云原生- K8S kubeconfig 文件泄露
  • 【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础
  • 【Linux】Ext2文件系统、软硬链接
  • ATF系统安全从入门到精通
  • 【算法专场】哈希表
  • Beszel监控Docker安装
  • 如何学习Elasticsearch(ES):从入门到精通的完整指南
  • 【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
  • CSV格式和普通EXCEL格式文件的区别
  • 使用 Vite + React 19 集成 Tailwind CSS 与 shadcn/ui 组件库完整指南
  • 【java】基本数据类型和引用数据类型
  • mybatis-lombok工具包介绍
  • 2. grafana插件安装并接入zabbix
  • 零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构
  • 为什么配置Redis时候要序列化配置呢
  • 使用爬虫获取1688商品分类:实战案例指南
  • C#打印设计器
  • Codeforces Round 1004 (Div. 2)(A-E)
  • pnpm的使用
  • vscode调试redis
  • Windows逆向工程入门之汇编指令格式与操作数类型
  • 亚远景-ASPICE 4.0与敏捷开发:如何实现高效协同
  • pptx文档提取信息
  • 蓝桥杯篇---超声波距离测量频率测量