文章目录
一、华为云平台操作
一样的操作,购买实例->创建产品->创建设备->添加属性
首先打开华为云平台:选择接入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());
}
}
编译后烧录:
太合理了 !!!!!