ESP32 之 ESP-IDF 教学(十六)——MQTT客户端(ESP-MQTT)

本文介绍了如何使用ESP-IDF构建ESP32程序,包括MQTT协议的基础概念、ESP-MQTT的配置步骤,如TCP/SSL连接、遗嘱设置和事件处理,以及实战示例。适合初学者快速上手ESP32的MQTT应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨!

↓↓↓通过下方对话框进入专栏目录页↓↓↓
优快云 请求进入目录       _ O x

是否进入ESP32教学导航(基于ESP-IDF)?

       确定

一、MQTT简介

MQTT协议(消息队列遥测传输协议),是一种基于publish/subscribe(即发布与订阅)模式的轻量通讯协议。此协议基于TCP/IP。

MQTT是一种低开销、低带宽占用的即时通讯协议。轻量、简单、开放和易于实现的。其最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。使其在物联网、小型设备、移动应用等方面有较广泛的应用。如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

二、ESP-MQTT介绍

1、简介

ESP-MQTTMQTT协议的一个实现

特性:

  • 支持基于 TCPSSL(使用mbedtls)、WebsocketWebsocket Secure的MQTT实现。
  • 配置方便,代码极少
  • 面向对象设计,多实例
  • 功能齐全的客户端实现。支持订阅、发布、认证、遗嘱、保持ping和3个QoS级别

2、配置

① URI

目前支持的协议:

协议 URI schemes
TCP mqtt
SSL mqtts
Websocket ws
Websocket Secure wss

URI示例
mqtt://mqtt.eclipseprojects.io:基于TCP协议的MQTT,端口号为默认1883
mqtt://mqtt.eclipseprojects.io:1884:同上,端口号自定义为1884
mqtt://用户名:密码@mqtt.eclipseprojects.io:1884:同上,再加上用户名和密码

mqtts://mqtt.eclipseprojects.io:基于SSL,端口默认8883,也可以自定义端口号如上
ws://mqtt.eclipseprojects.io:80/mqtt:基于WebSocket
wss://mqtt.eclipseprojects.io:443/mqtt:基于Websocket Secure

一个简单的示例:

// 创建MQTT配置,最简单的配置只需要填写URI
const esp_mqtt_client_config_t mqtt_cfg = {
   
    .uri = "mqtt://mqtt.eclipseprojects.io",
};
// 传递配置,创建一个MQTT客户端
esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);

// 注册事件
// 注:每个mqtt客户端都携带一个自己的事件循环,esp-mqtt并没有使用默认事件循环
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, EventHandle函数, client);

// 启动mqtt客户端
esp_mqtt_client_start(client);

② SSL

待续

③ 遗嘱

MQTT允许在客户非正常断开连接时,通过遗嘱(LWT)消息通知其他客户。

配置在esp_mqtt_client_config_t结构体中lwt_开头的配置:

  • lwt_topic: 遗嘱topic。
  • lwt_msg: 遗嘱内容。
  • lwt_msg_len:遗嘱内容长度。
    如果遗嘱字符串不是标准C字符串(以’\0’结尾),则此项必填。
  • lwt_qos: 遗嘱的消息服务质量
  • lwt_retain: 消息保留标志。

④ 其余配置

其余配置请查看官方文档中对于esp_mqtt_client_config_t的说明&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augtons正(单片机)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值