基础入门篇一MQTT.fx + ESP8266连接然也服务端

简介: 本篇主要介绍:(1) MQTT.fx客户端的安装及开始(2)使用ESP8266连接MQTT.fx客户端

MQTT.fx客户端的安装及开始

使用ESP8266连接MQTT.fx客户端

  • ESP8266的Arduino开发环境里有多个MQTT库,使用的库为主流的PubSubClient库
  • 库的获取:

    注意选择 作者名为Nick O’Leary的库

    1. 官网地址:https://pubsubclient.knolleary.net/
    2. GitHub:https://github.com/knolleary/pubsubclient/
    3. 百度网盘下载: https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取码: sizy
    4. ArduinoIDE中自带的库管理器安装
  • 库的安装教程:为Arduino IDE安装添加库 – 太极创客 (taichi-maker.com)
  • ESP8266程序:

    /*
    # 程序目的:实现ESP8266连接MQTT服务器端()然也物理网
    # 创建时间:2022-12-24
    # 函数:
    ## wifi对象:WiFi.SSID();WiFi.localIP(); WiFi.macAddress(); WiFi.mode(WIFI_STA);
    
    ## mqttClient对象:mqttClient.setServer(网站, 端口号); mqttClient.connected(); mqttClient.loop(); mqttClient.connect(订阅者的ID.c_str()); mqttClient.state();
    
    # 程序思路:串口初始化->连接wifi->设置MQTT服务器和端口号->连接MQTT服务器(自建函数)->loop函数中检查是否连接->保持客户端心跳
    
    */
    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    #include <ESP8266WiFiMulti.h>
    
    ESP8266WiFiMulti My_WifiMulti;  //wifi连接对象
    
    WiFiClient My_wifiClient;                      //Wifi对象 只有在建立mqttClient对象参数时候有用
    PubSubClient mqttClient(My_wifiClient);        //建立订阅者
    const char* mqttServerSite = "test.ranye-iot.net";  //连接的服务器 注意:不能用string类型
    
    //函数声明
    int WiFi_Connect();
    void My_connectMQTTServer();
    
    void setup() {
      Serial.begin(9600);
    
      //设置ESP8266工作模式为无线终端模式
      WiFi.mode(WIFI_STA);
    
      //wifi连接
      WiFi_Connect();
    
      //设置MQTT服务器和端口号
      mqttClient.setServer(mqttServerSite, 1883);
    
      //连接MQTT服务器
      My_connectMQTTServer();
    }
    
    void loop() {
    
      if (mqttClient.connected())  //监测是否处于连接状态
      {
        mqttClient.loop();  //为了保持客户端心跳
      } else {
        My_connectMQTTServer();
      }
    }
    
    /*
    客户端连接服务器端函数
    注意:需要提前建立mqttClient对象
    */
    void My_connectMQTTServer()
    {
      // 根据ESP8266的MAC地址生成客户端ID(避免与其它ESP8266的客户端ID重名)
      String clientID="ESP8266-" + WiFi.macAddress();//获取ESP8266的MAC地址
      //连接MQTT服务器
      if(mqttClient.connect(clientID.c_str()))//注意:这里的String.c_str是对字符串的处理
      {
        Serial.println("MQTT Server Connected.");
        Serial.print("Server Address: ");
        Serial.println(mqttServerSite);
        Serial.print("ClientId:");
        Serial.println(clientID);
        Serial.print("Client State:");
        Serial.println(mqttClient.state());
      }
      else
      {
        Serial.print("MQTT Server Connect Failed. Client State:");
        Serial.println(mqttClient.state());
        delay(3000);
      }
    }
    
    /*
    wifi连接函数
    需引 ESP8266WiFiMulti.h 库  并建立ESP8266WiFiMulti对象
    */
    int WiFi_Connect() {
      My_WifiMulti.addAP("TPLINK2.4G", "@@@@@@@@");  // Wifi1
      My_WifiMulti.addAP("username2", "password");   // Wifi2
      My_WifiMulti.addAP("username3", "password");   // Wifi3
    
      int i = 0;
      Serial.print("\n-------------Connected Time:-------------\n");
      while (My_WifiMulti.run() != WL_CONNECTED) {
        i += 1;
        Serial.print(i);
        Serial.println("->");
        delay(1000);
        if (i > 15) {
          Serial.print("\n-------------WIFI connected failed!-------------\n");
          return 0;
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 物联网
MQTT常见问题之mqtt 报 MqttException:客户机未连接如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
6月前
|
监控 物联网 Windows
MQTT常见问题之mqtt自动断开了连接如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
6月前
|
消息中间件 物联网 网络性能优化
MQTT常见问题之mqtt 连接一直显示 Not authorized to connect如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
5月前
|
消息中间件 存储 开发工具
消息队列 MQ产品使用合集之C++如何使用Paho MQTT库进行连接、发布和订阅消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
107 0
|
3月前
|
消息中间件 Arthas Java
RocketMQ—一次连接namesvr失败的案例分析
项目组在使用RocketMQ时遇到Consumer连接Name Server失败的问题,异常显示连接特定地址失败。通过Arthas工具逐步分析代码执行路径,定位到创建Channel返回空值导致异常。进一步跟踪发现,问题源于Netty组件在初始化`ByteBufAllocator`时出现错误。分析依赖后确认存在Netty版本冲突。解决方法为排除冲突的Netty包,仅保留兼容版本。
215 0
RocketMQ—一次连接namesvr失败的案例分析
|
4月前
|
消息中间件 开发工具 RocketMQ
消息队列 MQ使用问题之一直连接master失败,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 Java 物联网
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
|
3月前
|
消息中间件 监控 数据安全/隐私保护
就软件研发问题之在RocketMQ的服务端开启认证功能的问题如何解决
就软件研发问题之在RocketMQ的服务端开启认证功能的问题如何解决
|
4月前
|
消息中间件 JavaScript Linux
消息队列 MQ操作报错合集之客户端在启动时遇到了连接错误,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
下一篇
无影云桌面