ESP32通过MQTT协议上传数据至华为物联网平台

文章目录

一、华为云平台操作

二、esp32端定义


一、华为云平台操作

        一样的操作,购买实例->创建产品->创建设备->添加属性

首先打开华为云平台:选择接入IOTDA,并进行实例的购买:

创建产品:

 在产品详情中添加属性:

在产品中添加设备,创建设备:

点击查看设备,可以看到相关要使用到的设备信息以及MQTT接入点信息等:

设备信息:

 MQTT连接参数信息:

 至此,华为云要操作的就完毕了。。。。。

二、esp32端定义

下面是我使用的esp32连接上华为云平台并间隔2s向华为云上传信息,如下所示,大家在使用时可以改为自己的wifi信息以及,MQTT接入信息等。

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

const char* ssid = "chelsea";
const char* password = "19191919";

// 华为云MQTT配置
const char* mqtt_server = "5df46bb70c.st1.iotda-device.cn-north-4.myhuaweicloud.com";
const int mqtt_port = 1883;
const char* mqtt_client_id = "6825e2d59314d118511c1f6d_esp32_device_0_0_2025051513";
const char* mqtt_username = "6825e2d59314d118511c1f6d_esp32_device";
const char* mqtt_password = "1125d2921908d5a54869edace2a3c9a26eaf462f5954eabf58c3f5a960fa682e";

// MQTT主题
const char* mqtt_topic = "$oc/devices/6825e2d59314d118511c1f6d_esp32_device/sys/properties/report";//可改为自己的设备id

// 时间变量
unsigned long previousMillis = 0;
const long interval = 2000; // 2秒

WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("正在连接WiFi: ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi连接成功");
  Serial.println("IP地址: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("尝试连接MQTT服务器...");
    if (client.connect(mqtt_client_id, mqtt_username, mqtt_password)) {
      Serial.println("连接成功");
    } else {
      Serial.print("连接失败, 错误代码=");
      Serial.print(client.state());
      Serial.println(" 5秒后重试");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  unsigned long currentMillis = millis();
  
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    
    // 创建华为云IoT平台要求的JSON格式
    StaticJsonDocument<256> doc;
    JsonArray services = doc.createNestedArray("services");
    JsonObject service = services.createNestedObject();
    // 使用您在华为云平台上定义的服务ID
    service["service_id"] = "demo_esp32_1"; // 根据平台上定义的服务ID修改
    JsonObject properties = service.createNestedObject("properties");
    properties["message"] = "chelsea the king of north london";
    
    // 将JSON序列化为字符串
    String jsonString;
    serializeJson(doc, jsonString);
    
    // 发送消息
    Serial.print("正在发布消息: ");
    Serial.println(jsonString);
    client.publish(mqtt_topic, jsonString.c_str());
  }
}

编译后烧录: 

     太合理了 !!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值