littlebot
Published on 2025-04-09 / 3 Visits
0

【源码】基于ArduinoESP8266的THiNX远程设备管理库

项目简介

THiNXLib 是专门为 ESP8266/ESP32 设备打造的固件库,其目的在于简化设备与 THiNX 云服务的集成。该库提供了设备连接、注册、状态检查、固件更新以及基于 MQTT 协议的远程通信等功能,开发者可借助它轻松将 ESP8266/ESP32 设备融入物联网(IoT)项目,实现设备的远程管理与控制。

项目的主要特性和功能

  1. 设备初始化与WiFi连接:自动连接设备到WiFi网络,支持通过WiFiManager配置SSID和密码。
  2. 设备注册与状态检查:将设备注册到THiNX云服务,定期检查设备状态并获取更新信息。
  3. MQTT通信:通过MQTT协议与THiNX云服务双向通信,支持消息的发布与订阅。
  4. 固件更新:可从THiNX云服务下载新固件并自动更新设备。
  5. 设备信息保存与恢复:保存和恢复设备的关键信息,如API密钥、设备ID、所有者ID等。
  6. 回调函数支持:提供回调函数处理从THiNX云服务接收的更新消息和配置更改。
  7. 环境变量注入:支持通过配置推送功能注入自定义环境变量,无需在设备代码中硬编码。
  8. 位置支持:支持通过WiFi或GPS模块更新设备的地理位置信息。

安装使用步骤

  1. 确保已下载本项目的源码文件。
  2. 安装依赖库:将项目中 lib 文件夹里的依赖库复制到你的 Arduino 库目录中。
  3. 配置项目:在代码中引入 THiNXLib 库,按需配置 API 密钥、设备别名、所有者ID等信息。
  4. 编译与上传:使用 Arduino IDE 编译并上传代码到你的 ESP8266/ESP32 设备。
  5. 运行设备:设备启动后会自动连接到WiFi并注册到THiNX云服务,可通过THiNX云服务进行远程管理和控制。

示例代码

```c

include "Arduino.h"

include

THiNX thx;

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

ifdef DEBUG

while (!Serial); // 等待调试控制台连接 WiFi.begin("THiNX-IoT+", "");

endif

// 输入API密钥和所有者ID thx = THiNX("71679ca646c63d234e957e37e4f4069bf4eed14afca4569a0c74abf503076732", "cedc16bb6bb06daaa3ff6d30666d91aacd6e3efbf9abbc151b4dcade59af7c12"); thx.setFinalizeCallback(finalizeCallback); thx.setPushConfigCallback(pushConfigCallback); }

void loop() { thx.loop(); }

/ 当库成功连接并注册后调用此回调函数 / void finalizeCallback () { Serial.println("*INO: Finalize callback called."); ESP.deepSleep(3e9); }

/ 处理从THiNX云服务接收到的配置更改 / void pushConfigCallback (String config) { // 解析并应用环境变量 DynamicJsonBuffer jsonBuffer(512); JsonObject& root = jsonBuffer.parseObject(config.c_str()); JsonObject& configuration = root["configuration"];

if ( !configuration.success() ) { Serial.println(F("Failed parsing configuration.")); } else { const char ssid = configuration["THINX_ENV_SSID"]; const char pass = configuration["THINX_ENV_PASS"];

if ((strlen(ssid) > 2) && (strlen(pass) > 0)) {
  WiFi.disconnect();
  WiFi.begin(ssid, pass);
  unsigned long timeout = millis() + 20000;
  Serial.println("Attempting WiFi migration...");
  while (WiFi.status() != WL_CONNECTED) {
    yield();
    if (millis() > timeout) break;
  }
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("WiFi migration failed.");
  } else {
    Serial.println("WiFi migration successful.");
  }
}

} } ```

通过以上步骤,可快速将 ESP8266/ESP32 设备集成到 THiNX 云服务中,实现远程管理和控制。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】