ESP8266入门教程11:连接MQTT服务器

这篇具有很好参考价值的文章主要介绍了ESP8266入门教程11:连接MQTT服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

将第三方库PubSubClient下载到lib文件夹

git clone https://github.com/knolleary/pubsubclient.git

一、阿里云IOT使用

1、打开阿里云IOT官网,登录阿里云账号

https://iot.console.aliyun.com

2、创建实例

ESP8266入门教程11:连接MQTT服务器

3、新建产品

ESP8266入门教程11:连接MQTT服务器

4、自定义主题

ESP8266入门教程11:连接MQTT服务器

ESP8266入门教程11:连接MQTT服务器

 5、添加设备

ESP8266入门教程11:连接MQTT服务器

 6、查看设备配置

ESP8266入门教程11:连接MQTT服务器

 ESP8266入门教程11:连接MQTT服务器

二、连接阿里云MQTT服务器

1、修改PubSubClient.h头文件,否则无法连接阿里云MQTT服务器

将MQTT_MAX_PACKET_SIZE的值改为1024

将MQTT_KEEPALIVE的值改为65

ESP8266入门教程11:连接MQTT服务器

2、代码解析

ESP8266入门教程11:连接MQTT服务器

ESP8266入门教程11:连接MQTT服务器

ESP8266入门教程11:连接MQTT服务器

第27行:创建WIFI客户端

第28行:创建MQTT客户端

第29行:创建任务对象

第30行:定义MQTT消息发送函数

第32行:发送消息前先判断MQTT服务器是否连接成功

第37行:发送MQTT消息

第47行:定义MQTT消息接收函数

第53行:定义MQTT服务器连接函数

第54行:请求连接MQTT服务器

第59行:订阅MQTT主题

第64行:开始定时任务,每隔三秒发送一条MQTT消息

第67行:结束定时任务

第82行:设置MQTT服务器主机地址和端口号

第84行:设置MQTT消息接收回调函数

第94行:保持MQTT客户端心跳,否则会连接中断

三、测试效果

ESP8266入门教程11:连接MQTT服务器文章来源地址https://www.toymoban.com/news/detail-424055.html

四、完整代码

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Ticker.h>
#include "../lib/pubsubclient/src/PubSubClient.h"

#define WIFI_SSID "WWW"
#define WIFI_PASS "00000000"
#define MQTT_HOST "MQTT服务器地址"
#define MQTT_PORT 1883
#define MQTT_CLIENT_ID "MQTT客户端名称"
#define MQTT_USER "MQTT用户名"
#define MQTT_PASS "MQTT登录密码"

void connectWIFI() {
  // 连接WIFI热点
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  int retryCount = 1;
  while (WiFi.status() != WL_CONNECTED) {
    Serial.println("重试次数: " + String(retryCount));
    retryCount++;
    delay(1000);
  }
  Serial.println("WIFI连接成功");
  Serial.println("IP地址: " + WiFi.localIP().toString());
}

WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
Ticker ticker;

void sendMsg() {
  if (mqttClient.connected()) {
    String topic = "/a1aeNGS45Gg/";
    topic += "ESP8266";
    topic += "/user/info";
    String payload = "Hello World !";
    if (mqttClient.publish(topic.c_str(), payload.c_str())) {
      Serial.println("MQTT消息发送成功");
    } else {
      Serial.println("MQTT消息发送失败");
    }
  } else {
    Serial.println("MQTT服务器未连接");
  }
}

void recvMsg(char *topic, uint8_t *payload, size_t length) {
  Serial.println("topic: " + String(topic));
  Serial.println("payload: " + String((char *)payload).substring(0, length));
  Serial.println("length: " + String(length));
}

void connectMQTT() {
  if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASS)) {
    Serial.println("MQTT服务器连接成功");
    String topic = "/a1aeNGS45Gg/";
    topic += "ESP8266";
    topic += "/user/info";
    if (mqttClient.subscribe(topic.c_str())) {
      Serial.println("MQTT主题订阅成功");
    } else {
      Serial.println("MQTT主题订阅失败");
    }
    ticker.attach(3, sendMsg);
  } else {
    Serial.println("MQTT服务器连接失败");
    ticker.detach();
    delay(3000);
  }
}

void setup() {
  // put your setup code here, to run once:

  // 设置波特率
  Serial.begin(9600);
  Serial.println();

  // 连接WIFI热点
  connectWIFI();
  // 配置MQTT服务器
  mqttClient.setServer(MQTT_HOST, MQTT_PORT);
  // 设置回调函数
  mqttClient.setCallback(recvMsg);
  // 连接MQTT服务器
  connectMQTT();
}

void loop() {
  // put your main code here, to run repeatedly:

  // 判断MQTT服务器是否连接成功
  if (mqttClient.connected()) {
    mqttClient.loop();
  } else {
    connectMQTT();
  }
}

到了这里,关于ESP8266入门教程11:连接MQTT服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)

    具体如何在阿里云创建一个 MQTT 服务器我就不写出来了,可以去百度一下(主要是我忘了,不好演示)。 有关 MQTT 报文的一些标识在我前面的 一篇文章 中讲过,感兴趣的可以去看看( 有关代码部分讲解的内容也在那里 ,这里就不细讲了,主要讲如何连接的) 插一嘴,如果

    2024年02月06日
    浏览(52)
  • STM32通过esp8266连接WiFi接入MQTT服务器

    上文我们讲到如何搭建本地MQTT服务器http://t.csdn.cn/aHNcO,现在介绍如何通过stm32连接MQTT 一.首先我们初始化esp8266这里我们使用的是USART4与其通信代码如下 二.通过数据间隔时间来判断是否是一串数据如果间隔时间大于30ms则判定为不是一串数据,接收缓冲器清零。 代码如下!

    2024年02月07日
    浏览(50)
  • ESP8266物联网开发入门教程

    B站本图文链接https://b23.tv/F7tPcAm 先消除一下零基础爱好者的担忧:这玩意有点C语言基础就能搞,学不会我就把键盘吃了 教程适用于刚入门得小白,根据教程自行拓展就可以用8266开发出属于自己的智能家电,希望能帮助到大家|・ω・`) 一:需要的硬件:电脑、8266开发板(笔

    2023年04月08日
    浏览(50)
  • ESP8266入门教程12:自动配网

    下载第三方库WiFiManager到lib文件夹  ​git clone https://github.com/tzapu/WiFiManager.git 第2行:包含WiFiManager库的头文件 第12行:创建WiFiManager对象 第14行:配置自动配网热点名称 1、编译并上传固件,然后使用手机连接名称叫做“ESP8266-Auto”的WIFI热点 2、点击【Configure WiFi】开始配网,

    2024年02月12日
    浏览(49)
  • esp8266模块--MQTT协议连接服务器实现数据接收和发送+源码

    首先推荐中国移动的代码,我觉得中国移动的代码更为合理:(但是有一些其他的模块在里面) OneNET开发板代码、资料--2020-09-27--标准板、Mini板bug修复 - 开发板专区 - OneNET设备云论坛 (10086.cn) 以及这位b站up做的视频:(wifi模块在p9节) 【挽救小白第一季】STM32+8266+小程序智能

    2024年02月08日
    浏览(58)
  • ESP8266-01 MQTT固件烧录并连接阿里云服务器

    1、烧录工具:flash_download_tool :   链接:https://pan.baidu.com/s/1jJJ07G56jNJ3SrOwstPzVA?pwd=8i93  提取码:8i93 2、串口调试助手:串口调试助手 3、阿里云配置生成工具: 链接:https://pan.baidu.com/s/13tjpFwGMeR0juS5OSEBiJQ?pwd=61me  提取码:61me 4、USB TO TTL 5、esp8266 01s 6、AT固件:下载   向esp8266烧

    2024年02月06日
    浏览(65)
  • ESP8266入门教程03:点亮LED灯

    ESP8266默认是高电平工作,所以想要点亮LED只需要给相应的引脚设置低电平即可。  第11行:使用pinMode(pin, mode)来设置GPIO口工作模式,pin取值范围0 ~ 16,数字引脚0-15可设置为INPUT、OUTPUT、INPUT_PULLUP模式(输入、输出、上拉输入);数字引脚16可设置为INPUT、OUTPUT、INPUT_PULLDOWN_16模式

    2024年02月14日
    浏览(52)
  • STM32+ESP8266+DHT11通过MQTT协议连接新版ONENET云平台上传数据

    项目讲解视频 新版 云平台搭建视频演示 单片机代码修改演示视频 APP参数修改 实物演示 前段时间ONENET云平台进行了升级更新,此前平台的多协议接入(包含旧版MQTT、HTTP、EDP、Modbus、TCP透传等)接口已经隐藏,后续应该会下架,为了能够后续继续使用ONENET云平台,就需要学

    2024年02月09日
    浏览(40)
  • ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】

    最近在跟着几个大佬的教学视频做项目。陆续会更新记录一些要点,便于后期总结笔记的时候进行引用。 也可以帮助有心跟着一起复刻的宝子们,更好地捋清思路。 【本系列教程 - 总目标】: 使用ESP系列板卡,通过MQTT进行数据通信,达到远程控制多个传感器的效果。 ◆配

    2024年01月19日
    浏览(46)
  • 【ESP8266教程】零基础入门学用物联网-基础知识篇(太极创客团队)学习笔记

    提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考         NodeMCU上的D2引脚引出ESP82

    2024年04月29日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包