Skip to content

通过互联网控制夜灯 - Wio Terminal

在本节课程中,您将把 Wio Terminal 的光照强度数据作为遥测信息发送到 MQTT 代理。

安装 JSON Arduino 库

使用 JSON 是通过 MQTT 发送消息的一种常见方式。Arduino 提供了一个 JSON 库,可以更轻松地读取和写入 JSON 文档。

任务

安装 Arduino JSON 库。

  1. 在 VS Code 中打开夜灯项目。

  2. platformio.ini 文件的 lib_deps 列表中添加以下内容作为额外一行:

    ini
    bblanchon/ArduinoJson @ 6.17.3

    这将导入 ArduinoJson,一个 Arduino 的 JSON 库。

发布遥测数据

下一步是创建一个包含遥测数据的 JSON 文档,并将其发送到 MQTT 代理。

任务 - 发布遥测数据

将遥测数据发布到 MQTT 代理。

  1. config.h 文件底部添加以下代码,以定义 MQTT 代理的遥测主题名称:

    cpp
    const string CLIENT_TELEMETRY_TOPIC = ID + "/telemetry";

    CLIENT_TELEMETRY_TOPIC 是设备将光照强度数据发布到的主题。

  2. 打开 main.cpp 文件。

  3. 在文件顶部添加以下 #include 指令:

    cpp
    #include <ArduinoJSON.h>
  4. loop 函数中,在 delay 之前添加以下代码:

    cpp
    int light = analogRead(WIO_LIGHT);
    
    DynamicJsonDocument doc(1024);
    doc["light"] = light;
    
    string telemetry;
    serializeJson(doc, telemetry);
    
    Serial.print("Sending telemetry ");
    Serial.println(telemetry.c_str());
    
    client.publish(CLIENT_TELEMETRY_TOPIC.c_str(), telemetry.c_str());

    这段代码读取光照强度,并使用 ArduinoJson 创建一个包含该强度的 JSON 文档。随后将其序列化为字符串,并通过 MQTT 客户端发布到遥测 MQTT 主题。

  5. 将代码上传到您的 Wio Terminal,并使用串口监视器查看发送到 MQTT 代理的光照强度数据。

    text
    Connecting to WiFi..
    Connected!
    Attempting MQTT connection...connected
    Sending telemetry {"light":652}
    Sending telemetry {"light":612}
    Sending telemetry {"light":583}

💁 您可以在 code-telemetry/wio-terminal 文件夹中找到这段代码。

😀 您已成功从设备发送遥测数据。