MQTT协议 - arduino ESP32 通过精灵一号 MQTT Broker 进行通讯的代码详解

本文档介绍了如何使用Arduino库连接到MQTTBroker,特别是针对爱智平台的MQTT设置。作者提供了创建MQTT客户端、发布和订阅主题的步骤,并展示了发布者和订阅者的主循环代码。通过MQTT连接,两个ESP32设备实现了通讯。


前言

之前研究了一段时间的 COAP 协议结果爱智那边没有测试工具,然后 arduino 也没有找到合适的库,我懒癌发作也懒得修这库,就只能非常尴尬先暂时放一放了。不过我在 爱智APP -> 设备 -> 设置 中发现爱智中做了一个 MQTT Broker ,也就是说我能利用精灵一号,在两块ESP32 之间进行通讯了,而且 arduino 也有现成的库,然后我就突击了一下MQTT ,把这玩意给弄起来了,这里就给大家分享一下。
在这里插入图片描述


配置 MQTT Broker

在爱智APP的设备中有个设置按钮:

在这里插入图片描述
在里面可以启用精灵一号的 MQTT Broker 功能并且进行设置:
在这里插入图片描述
在 MQTT 的设置中可以配置相关参数:
在这里插入图片描述
这些参数和与下面 ESP32 中的配置有关

代码获取

我使用的 MQTT 库直接在 IDE 的库管理器里就能下载到:
在这里插入图片描述
或者去GitHub下载:

https://github.com/adafruit/Adafruit_MQTT_Library

而示例代码,老样子在灵感桌面的秘密宝库 下载代码。
或者直接 git clone:

https://gitee.com/inspiration-desktop/eap-energy-conservation.git

在这里插入图片描述
里面有两个文件夹,分别是发布者和订阅者发的示例。

代码解析

为了方便讲解逻辑,我会打乱代码的顺序可能还会进行裁剪。本 demo 基于 MQTT 库自带的 DEMO 修改而来。

创建 MQTT 客户端

#include <WiFi.h>
//#include "WiFiClientSecure.h"
#include "WiFiClient.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/************************* WiFi Access Point *********************************/

#define WLAN_SSID "EOS-Tenda"
#define WLAN_PASS "1234567890"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "192.168.128.1"

// 在爱智APP->设备->MQTT Broker 设置,可以看到并且设置
#define AIO_SERVERPORT  1883

// 在爱智APP->设备->MQTT Broker 设置,可以看到并且设置
#define AIO_USERNAME "user"
#define AIO_KEY      "passwd"

/************ Global State (you don't need to change this!) ******************/

// 爱智似乎没有这个安全模式,于是使用了 WiFiClient 
//WiFiClientSecure client;
WiFiClient client;

// 通过传入WiFi客户端和MQTT服务端以及登录详细信息来设置MQTT客户端类,注意连入爱智必须设置 cid,可能和爱智那边设置有关系。
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, "Publish_cid", AIO_USERNAME, AIO_KEY);

需要注意的是虽然 Adafruit_MQTT_Client 有可以不带 cid 的实现

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值