arduino esp32连接阿里云物联网平台,上传和请求数据的示例代码

2023-12-30 09:58:15

要在Arduino ESP32上连接到阿里云物联网平台,并上传和请求数据,您可以使用 PubSubClient 库和 WiFi.h 库来实现。以下是一个示例代码,演示了如何使用MQTT协议将数据上传到阿里云物联网平台,并从平台上请求数据。

#include <WiFi.h>
#include <PubSubClient.h>

// Wi-Fi网络信息
const char* ssid = "Your_WiFi_SSID";
const char* password = "Your_WiFi_Password";

// 阿里云物联网平台信息
const char* mqttServer = "Your_MQTT_Server";
const int mqttPort = 1883;
const char* clientId = "Your_Client_ID";
const char* username = "Your_Username";
const char* password = "Your_Password";
const char* topic = "Your_Topic";

WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);

void setup() {
  Serial.begin(115200);

  // 连接到Wi-Fi网络
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // 设置阿里云物联网平台服务器和端口
  mqttClient.setServer(mqttServer, mqttPort);

  // 设置回调函数
  mqttClient.setCallback(callback);

  // 连接到阿里云物联网平台
  connectToMqtt();

  // 发布数据
  publishData("Hello from ESP32!");
}

void loop() {
  // 保持与阿里云物联网平台的连接
  if (!mqttClient.connected()) {
    connectToMqtt();
  }
  mqttClient.loop();

  // 请求数据
  requestData();
  
  delay(5000);
}

// 连接到阿里云物联网平台
void connectToMqtt() {
  while (!mqttClient.connected()) {
    Serial.println("Connecting to MQTT...");

    if (mqttClient.connect(clientId, username, password)) {
      Serial.println("Connected to MQTT");
      mqttClient.subscribe(topic);
    } else {
      Serial.print("Failed, rc=");
      Serial.print(mqttClient.state());
      Serial.println(" Retrying in 5 seconds...");
      delay(5000);
    }
  }
}

// 发布数据到阿里云物联网平台
void publishData(const char* data) {
  mqttClient.publish(topic, data);
  Serial.print("Published: ");
  Serial.println(data);
}

// 处理接收到的消息
void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Received: ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

// 请求数据
void requestData() {
  String requestTopic = "request/" + String(clientId);
  mqttClient.publish(requestTopic.c_str(), "");
  Serial.println("Requested data");
}

请注意,您需要将以下内容替换为自己的信息:

  • Your_WiFi_SSIDYour_WiFi_Password:您的Wi-Fi网络名称和密码。
  • Your_MQTT_Server:阿里云物联网平台的MQTT服务器地址。
  • Your_Client_ID:客户端ID,用于在阿里云物联网平台上标识设备。
  • Your_UsernameYour_Password:连接到阿里云物联网平台所需的用户名和密码。
  • Your_Topic:要发布和订阅的MQTT主题。

setup() 函数中,我们首先连接到Wi-Fi网络,然后设置MQTT服务器和端口,并连接到阿里云物联网平台。接下来,我们发布一条消息。在 loop() 函数中,我们使用 mqttClient.loop() 来保持与物联网平台的连接,并定期请求数据。当收到新消息时,将调用回调函数 callback() 进行处理。

请确保已在Arduino IDE中安装 PubSubClient 库,并将其添加到项目中。

如需指导,可私聊,适当收费

文章来源:https://blog.csdn.net/m0_52513940/article/details/135301847
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。