当前位置: 首页 > news >正文

ESP32连接ThingsCloud上传设备数据(智慧小灯)

#include <ThingsCloudWiFiManager.h>
#include <ThingsCloudMQTT.h>//======================================================
// 设置 ssid / password,连接到你的 WiFi AP
const char *ssid = "@Ruijie-s78A8";
const char *password = "***";
// 在 ThingsCloud 控制台的设备详情页中,复制以下设备连接信息
// https://console.thingscloud.xyz
#define THINGSCLOUD_MQTT_HOST "sh-3-mqtt.iot-api.com"
#define THINGSCLOUD_DEVICE_ACCESS_TOKEN "***"
#define THINGSCLOUD_PROJECT_KEY "***"
//======================================================bool switch1State = true;  // 1号小灯初始状态:打开
bool switch2State = false; // 2号小灯初始状态:关闭
float humidity = 60.2;ThingsCloudMQTT client(THINGSCLOUD_MQTT_HOST,THINGSCLOUD_DEVICE_ACCESS_TOKEN,THINGSCLOUD_PROJECT_KEY);// 设置 LED GPIO 引脚
const int LED_PIN = 2;
// 上报数据的间隔时间计时器
unsigned long timer1 = millis();
// 设置定时上报数据的时间间隔,单位是 ms。免费版项目请务必大于30秒,否则设备可能会被限连。
const int report_interval = 1000 * 60 * 5;void pubSensors();void setup()
{Serial.begin(115200);// 拉低 LEDpinMode(LED_PIN, OUTPUT);digitalWrite(LED_PIN, LOW);// 允许 SDK 的日志输出client.enableDebuggingMessages();// 连接 WiFi APclient.setWifiCredentials(ssid, password);
}// 必须实现这个回调函数,当 MQTT 连接成功后执行该函数。
void onMQTTConnect()
{// 这里点亮 LEDdigitalWrite(LED_PIN, HIGH);// 订阅属性上报的回复消息client.onAttributesResponse([](const String &payload){ Serial.println("attributes response: " + payload); });// 订阅属性获取的回复消息client.onAttributesGetResponse([](const String &topic, const String &payload){ Serial.println("attributes get response: " + topic + ", payload: " + payload); });// 订阅云平台下发属性的消息client.onAttributesPush([](const String &payload){Serial.println("attributes push: " + payload);DynamicJsonDocument doc(512);DeserializationError error = deserializeJson(doc, payload);if (error){Serial.printf("deserialize error: %s\n", error.f_str());return;}JsonObject obj = doc.as<JsonObject>();if (obj.containsKey("relay1")){if (obj["relay1"] == true){Serial.println("relay1 ON");// todo 输出 GPIO 控制继电器}else{Serial.println("relay1 OFF");// todo 输出 GPIO 控制继电器}} });// 读取设备在云平台上的属性client.getAttributes();// 延迟 5 秒上报首次传感器数据client.executeDelayed(1000 * 5, [](){ pubSensors(); });
}void pubSensors()
{// 每次上传前翻转switch2的状态(true <-> false)switch2State = !switch2State;switch1State = !switch1State;humidity = random(20, 90);// 这个示例模拟传感器数值,仅用于演示如何生成 JSON。实际项目中可读取传感器真实数据。DynamicJsonDocument obj(512);obj["humidity"] = humidity;obj["switch1"] = switch1State;obj["switch2"] = switch2State;char attributes[512];serializeJson(obj, attributes);// 调用属性上报方法client.reportAttributes(attributes);
}void loop()
{client.loop();// 按间隔时间上报传感器数据if (millis() - timer1 > report_interval){timer1 = millis();pubSensors();}
}

http://www.dtcms.com/a/590150.html

相关文章:

  • 网站设计公司圣辉友联一级a做爰片免费网站性恔
  • 【基于one-loop-per-thread的高并发服务器】--- Server模块
  • 免费网站推广网站在线怎么做网页啊
  • 泰安手机网站建设做校园文化的网站
  • 自助建站网站程序源码dw做网站弊端
  • 新城区网站建设做网站.服务器怎么买
  • 【教学类-98-01】20251109“兔子头像”(小班主题《小兔乖乖》)
  • 上海电子门户网站建设数据怎么用editplus做网站
  • iBiz开源:iBizPLM BOM插件来了
  • 8.游戏逆向-pxxx-获取GObject
  • 建立网站 数据分析网站怎么做动效
  • 什么软件做网站链接安宁市建设厅网站
  • 4.1.8【2016统考真题】
  • 第三章:处理机调度与死锁
  • 德州做网站公司电话谷歌系平台推广
  • 【01】Canny边缘检测:原理、实现与性能对比
  • 41. CMake
  • 11.string(上)
  • 【开题答辩全过程】以 基于SpringBoot的智慧教育系统的设计与实现为例,包含答辩的问题和答案
  • 360永久免费建网站网站建设及空间
  • 轻松阅读漫画的利器——Kotatsu漫画阅读器
  • 婚纱外贸网站怎么用PS做珠宝网站
  • 新乡网站网站建设网页制作软件是什么
  • C#权威指南第9课:方法
  • fastjson中的原生反序列化漏洞
  • 网站弹屏广告怎么做的如何修改网站后台的用户名和密码
  • Spring中如何使用@Resource注解?
  • 高频面试八股文用法篇(十二)Java 包装类缓存机制
  • 【Envi遥感图像处理】019:影像自动配准操作
  • 杭州网站开发制作公司排名邹平做网站的公司