esp8266连接onenet协议mqtt

img


是不是我发送到内容格式错了,esp8266连接onenet,已经显示连接到mqtt服务器啦,但是不知道怎么发送内容到onenet,上传数据

  • 请看👉 :ESP32 + MQTT 连接到中移动物联网云平台 OneNET
  • 除此之外, 这篇博客: esp8266 onenet MQTT固件的烧录中的 1、onenet MQTT固件的优势 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  esp8266要使用MQTT需要烧录AT固件,目前市场上常用的是乐鑫官网及安信可官网或者onenet官网的AT固件,不同的AT固件之间它们的AT指令可能有所差异。就目前我使用的感觉来说,我个人觉得onenet的MQTT固件是使用起来比较舒适的一个AT固件。onenet的固件发布和发送都只需一句简单的AT指令就可以完成,而乐鑫或安信可的固件发送或发布数据都需要有固定的json格式,比较麻烦,相较起来onenet的AT指令是非常简单。

    虽然说onenet官网的MQTT固件是专门针对MQTT协议的,不过经过我的测试,其他的HTTP协议或者EDP协议等都可以使用。

  • 以下回答由chatgpt基于相关博客总结生成:

    你可以按照以下步骤在ESP8266上使用MQTT协议连接OneNet云平台并上传数据:

    1. 硬件准备:
    2. 使用杜邦线将ESP8266与MCU连接。将ESP8266模块的VCC引脚连接到MCU的VCC(3.3V)引脚,将ESP8266模块的TX引脚连接到MCU的RX引脚,将ESP8266模块的RX引脚连接到MCU的TX引脚,将ESP8266模块的GND引脚连接到MCU的GND引脚。

    3. 软件准备:

    4. 安装Arduino IDE平台,并添加必要的库(如PubSubClient、ArduinoJson等)。
    5. 在OneNet平台注册账号,并创建一个产品,记录产品的ID和Master-APIkey。

    6. 配置代码:

    7. 打开Arduino IDE平台,创建一个新的Sketch。
    8. 导入必要的库并定义所需的变量,例如OneNet的服务器地址、WiFi的名称和密码、Topic等。
    9. 设置WiFi连接,连接到OneNet的MQTT服务器。
    10. 编写程序发送数据到OneNet平台,可以使用PubSubClient库的publish()方法发送MQTT消息。
    #include <PubSubClient.h>
    #include <ESP8266WiFi.h>
    
    const char* ssid = "your_SSID";
    const char* password = "your_PASSWORD";
    const char* mqttServer = "mqtt.heclouds.com";
    const int mqttPort = 6002;
    const char* clientId = "your_CLIENT_ID";
    const char* topic = "your_TOPIC";
    const char* payload = "Hello from ESP8266!";
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup_wifi() {
      delay(10);
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    }
    
    void callback(char* topic, byte* payload, unsigned int length) {
      Serial.print("Message received: ");
      for (int i = 0; i < length; i++) {
        Serial.print((char)payload[i]);
      }
      Serial.println();
    }
    
    void reconnect() {
      while (!client.connected()) {
        Serial.print("Attempting MQTT connection...");
        if (client.connect(clientId)) {
          Serial.println("connected");
          client.publish(topic, payload);
          client.subscribe(topic);
        } else {
          Serial.print("failed, rc=");
          Serial.print(client.state());
          Serial.println(" try again in 5 seconds");
          delay(5000);
        }
      }
    }
    
    void setup() {
      Serial.begin(115200);
      setup_wifi();
      client.setServer(mqttServer, mqttPort);
      client.setCallback(callback);
    }
    
    void loop() {
      if (!client.connected()) {
        reconnect();
      }
      client.loop();
    }
    

    注意替换代码中的"your_SSID"和"your_PASSWORD"为你的WiFi名称和密码,"your_CLIENT_ID"和"your_TOPIC"为你在OneNet平台上创建的产品的信息。

    1. 上传代码:
    2. 连接MCU的USB转串口模块到计算机上,选择正确的串口和开发板。
    3. 编译并上传代码到ESP8266。

    4. 监控数据上传情况:

    5. 打开Arduino IDE的串口监视器,并选择正确的波特率。
    6. 监测串口输出,如果成功连接到OneNet服务器并上传数据,将会显示"connected"。

    这样,你就可以成功地使用MQTT协议连接OneNet云平台并上传数据了。