在ESP32上使用MQTT

使用MQTT协议需要连接到一个MQTT Broker,可以使用以下步骤在ESP32上使用MQTT:

  1. 安装MQTT库到您的Arduino IDE
    在Arduino IDE库管理器中,搜索并安装PubSubClient库

  2. 连接到Wi-Fi网络
    在ESP32上连接到Wi-Fi,以便连接到MQTT Broker。

  3. 连接到MQTT Broker
    您需要知道MQTT Broker的IP地址和端口号,以及MQTT Broker所需的用户名和密码。根据这些信息,在ESP32上使用以下代码连接到MQTT Broker。

    //连接到MQTT Broker
    #include 
    #include 
    
    const char* ssid = "YourWiFiSSID";
    const char* password = "YourWiFiPassword";
    const char* mqtt_server = "YourMQTTBrokerIPAddress";
    
    //初始化MQTT client
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup_wifi() {
       //连接到WiFi
       WiFi.begin(ssid, password);
    
       while (WiFi.status() != WL_CONNECTED) {
           delay(1000);
       }
    }
    
    void reconnect() {
       // Loop until we're reconnected
       while (!client.connected()) {
           // Attempt to connect
           if (client.connect("ESP32Client", "mqtt_user_name", "mqtt_password")) {
               //连接成功
               client.subscribe("test/auth");
           } else {
               //连接失败
               delay(5000);
           }
       }
    }
    
    void setup() {
       //初始化串口输出
       Serial.begin(115200);
    
       //连接到WiFi
       setup_wifi();
    
       //连接到MQTT Broker
       client.setServer(mqtt_server, 1883);
    }
    
    void loop() {
       //连接MQTT Broker
       if (!client.connected()) {
           reconnect();
       }
       //接收消息
       client.loop();
    }
  4. 发送和接收MQTT消息
    在ESP32上使用以下代码发送和接收MQTT消息。

    //发送MQTT消息
    client.publish("test/data", "Hello from ESP32");
    
    //接收MQTT消息
    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 setup() {
       //初始化串口输出
       Serial.begin(115200);
    
       //连接到WiFi
       setup_wifi();
    
       //连接到MQTT Broker
       client.setServer(mqtt_server, 1883);
    
       //订阅MQTT消息
       client.setCallback(callback);
    }
    
    void loop() {
       //连接MQTT Broker
       if (!client.connected()) {
           reconnect();
       }
       //接收消息
       client.loop();
    }

通过这些步骤,您可以在ESP32上轻松地使用MQTT协议。

Leave a Comment

豫ICP备19001387号-1