ThingsCloud ESP32/ESP8266 Arduino SDK

文章介绍了ThingsCloud推出的ESP32/ESP8266ArduinoSDK,该SDK支持WiFi连接、MQTT通信、设备配网、OTA升级等功能,帮助开发者便捷地将智能硬件接入物联网云平台。提供了通过Arduino库管理和PlatformIO安装SDK的方法,并包含多个示例代码,便于快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取详细代码示例和教程,请点击下边的 Github 地址,我们会持续更新教程。别忘了留下 Star,感谢支持!

https://github.com/IoT-ThingsCloud/thingscloud-esp-sdk

众所周知,ESP32/ESP8266 是风靡全球的 WiFi 芯片,同时可作为主控 MCU,支持 Arduino 开发框架。你可以随便买到各种各样的 ESP
模组和开发板。

ThingsCloud 推出了基于 ESP32/ESP8266 Arduino 的 SDK,方便智能硬件厂商和开发者快速将设备接入 ThingsCloud 云平台并生成物联网应用,完成物联网方案的快速落地。

SDK 支持特性包括:

  • WiFi 基本连接,指定 WiFi SSID/Password,连接到固定 AP。
  • WiFi 配网,可使用 ThingsX iOS/Android App,为模组快速配置 WiFi 连接信息。适合多设备的量产。
  • MQTT 一机一密,为每个模组烧录独立的证书。
  • MQTT 一型一密,为所有模组烧录相同的固件,每个模组自动获取证书。适合多设备的量产。
  • 支持 ThingsCloud MQTT 接入协议,几行代码就可以实现设备和云平台的双向数据实时传输,包括属性上报和下发、事件上报、命令接收、自定义数据流等。
  • 固件 OTA 升级,结合 ThingsCloud 的 OTA 版本管理功能。

SDK 支持通过以下方式安装:

Arduino

通过 Arduino 库管理器安装,进入 Arduino 菜单的 工具 > 管理库,搜索 ThingsCloud,选择最新版本,点击安装。有版本更新时,需要在这里点击更新。

articles/2023/20230112135745_fe9018c6306c78688e3d772b25ebb26a.png

在 Arduino 文件 > 示例 中,可以快速添加 ThingsCloud 示例代码,如下图:

articles/2023/20230112192455_2770da909b197bab9e961e401d0e616e.png

更多示例代码即将推出,欢迎您的建议。

PlatformIO

使用 VSCode + PlatformIO 开发方式,可以直接在 PlatformIO Library 中搜索 ThingsCloud,并添加到项目中。

articles/2022/20230110235709_ae88b059b93a179e98945a207f6576f9.png

示例

如使用 Arduino IDE,可在 文件 > 示例 中,直接打开以下示例代码。

01.WiFi_Basic

普通 WiFi 连接方式,指定 WiFi SSID 和密码。

  • mqtt_connect_with_access_token:每个设备使用自己的 AccessToken 连接 ThingsCloud
  • mqtt_connect_with_device_key:每个设备使用 DeviceKey 请求 AccessToken,连接 ThingsCloud
  • mqtt_connect_with_device_key_auto_create_device:每个设备使用 DeviceKey 请求 AccessToken,连接 ThingsCloud。如果 DeviceKey 的设备不存在,支持自动创建设备。
  • mqtt_connect_with_auto_device_key:每个设备自动生成唯一的 DeviceKey,请求 AccessToken,连接 ThingsCloud。

02.WiFi_Provisioning_AP_Mode

不需要指定 WiFi SSID 和密码,用户通过 ThingsX App 完成 WiFi 配网。

  • wifi_provisioning_cliam_device:WiFi 配网模式的示例,用户完成配网后领取设备。
  • wifi_provisioning_reset:通过长按按键重置配网的示例。

03.MQTT_Communicate

设备 MQTT 通信示例。

  • mqtt_attributes:设备上报设备属性、接收云平台下发属性、读取云平台的设备属性。
  • mqtt_report_event:设备上报事件的示例。
  • mqtt_recv_command:设备接收云平台下发命令的示例。

更多示例代码即将推出……

获取详细代码示例和教程,请点击下边的 Github 地址,我们会持续更新教程。别忘了留下 Star,感谢支持!

https://github.com/IoT-ThingsCloud/thingscloud-esp-sdk

ThingsCloud 是物联网设备统一接入平台和低代码应用开发平台。可以帮助任何需要数字化升级的组织和企业,在极短的时间内搭建物联网应用,并适应不断变化的发展需求。ThingsCloud 支持智能传感器、执行器、控制器、智能硬件等设备接入,实现数据采集、分析、控制,还可以灵活配置规则,生成项目应用 SaaS 和用户应用 App,这一切无需任何复杂的代码开发。

  • 官网:https://www.thingscloud.xyz/
  • 控制台:https://console.thingscloud.xyz/
  • 教程:https://docs.thingscloud.xyz/tutorials
  • 文档:https://docs.thingscloud.xyz
  • 设备接入:https://docs.thingscloud.xyz/guide/connect-device/
  • 博客:https://www.thingscloud.xyz/blog/
  • B站:https://space.bilibili.com/1953347444

articles/2023/20230112114634_afd61232cd029fca77eaebe67e12beaf.png

### ThingsCloud 平台接入的数据格式代码 在将 ESP32 设备接入 ThingsCloud 平台时,通常会采用 MQTT 协议进行通信。为了满足平台需求并参考 OneNet 的 JSON 格式设计数据结构,以下是基于 `sprintf` 函数构建的 JSON 数据格式示例。 #### 物模型创建 在 ThingsCloud 或类似的 IoT 平台上,首先需要定义物模型以描述设备的功能和属性。假设我们已经创建了一个包含温度、湿度以及开关状态的物模型,则其对应的 JSON 结构如下: ```json { "temperature": 25.5, "humidity": 60.0, "switch_status": true } ``` 此结构中的字段名称应与平台上配置的物模型保持一致[^3]。 #### 数据上报代码示例 以下是一个完整的 C++ 示例程序,展示如何利用 `sprintf` 构建 JSON 字符串并通过 MQTT 发送至 ThingsCloud 平台。 ```cpp #include <WiFi.h> #include <PubSubClient.h> // WiFi 和 MQTT 参数 const char* ssid = "your_wifi_ssid"; const char* password = "your_wifi_password"; const char* mqtt_server = "mqtt.thingscloud.cn"; // 替换为实际服务器地址 const int mqtt_port = 1883; const char* client_id = "esp32_client"; // 定义客户端对象 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"); } bool connect_mqtt() { if (!client.connected()) { Serial.printf("Attempting MQTT connection... %s\n", client_id); if (client.connect(client_id)) { Serial.println("connected"); return true; } else { Serial.printf("failed, rc=%d try again in 5 seconds\n", client.state()); } } return false; } void publish_data(float temperature, float humidity, bool switch_status) { const size_t capacity = JSON_OBJECT_SIZE(3); // 计算所需缓冲区大小 DynamicJsonDocument doc(capacity); // 填充 JSON 对象 doc["temperature"] = temperature; doc["humidity"] = humidity; doc["switch_status"] = switch_status; // 将 JSON 转化为字符串 String json_str; serializeJson(doc, json_str); // 打印调试信息 Serial.print("Publishing message: "); Serial.println(json_str); // 上报到指定主题 client.publish("/devices/your_device_id/data", json_str.c_str()); // 替换 your_device_id } void loop() { if (!client.connected()) { connect_mqtt(); } client.loop(); static unsigned long last_publish_time = 0; if (millis() - last_publish_time > 5000) { // 每隔 5 秒发送一次数据 last_publish_time = millis(); float temp = random(20, 30); // 随机生成温度值 float humi = random(40, 70); // 随机生成湿度值 bool status = digitalRead(D4); // 获取 GPIO D4 的开关状态 publish_data(temp, humi, status); } } void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, mqtt_port); } void loop() {} ``` 以上代码实现了以下几个功能: 1. 连接 WiFi 网络。 2. 使用 PubSubClient 库建立与 ThingsCloud 的 MQTT 连接。 3. 利用 Arduino Json 库动态生成 JSON 数据,并将其发布到指定的主题下。 #### 注意事项 - **JSON 格式的匹配**:确保 JSON 中的键名完全对应于 ThingsCloud 平台上所定义的物模型属性名称。 - **Topic 主题设置**:根据 ThingsCloud 文档调整 MQTT Topic 地址,例如 `/devices/{device_id}/data`。 - **安全性考虑**:如果涉及敏感数据传输,请启用 TLS 加密连接[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值