跳至主要内容

通過互聯網控制你的夜燈 - Wio Terminal

在本課程的這一部分,你將從你的 Wio Terminal 發送光線水平的遙測數據到 MQTT broker。

安裝 JSON Arduino 庫

使用 JSON 通過 MQTT 發送消息是一種流行的方法。有一個 Arduino 的 JSON 庫,使讀取和寫入 JSON 文檔變得更容易。

任務

安裝 Arduino JSON 庫。

  1. 在 VS Code 中打開夜燈項目。

  2. platformio.ini 文件中的 lib_deps 列表中添加以下額外行:

    bblanchon/ArduinoJson @ 6.17.3

    這將導入 ArduinoJson,一個 Arduino 的 JSON 庫。

發佈遙測數據

下一步是創建一個包含遙測數據的 JSON 文檔並將其發送到 MQTT broker。

任務 - 發佈遙測數據

將遙測數據發佈到 MQTT broker。

  1. config.h 文件的底部添加以下代碼,以定義 MQTT broker 的遙測主題名稱:

    const string CLIENT_TELEMETRY_TOPIC = ID + "/telemetry";

    CLIENT_TELEMETRY_TOPIC 是設備將發佈光線水平的主題。

  2. 打開 main.cpp 文件

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

    #include <ArduinoJSON.h>
  4. loop 函數內的 delay 之前添加以下代碼:

    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 broker 的光線水平。

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

💁 你可以在 code-telemetry/wio-terminal 文件夾中找到此代碼。

😀 你已成功從你的設備發送遙測數據。