跳至主要内容

發佈溫度 - Wio Terminal

在本課程的這一部分中,你將通過 MQTT 發佈 Wio Terminal 檢測到的溫度值,以便稍後用於計算 GDD。

發佈溫度

一旦讀取到溫度,就可以通過 MQTT 發佈到一些“伺服器”代碼,該代碼將讀取這些值,並存儲它們以便用於 GDD 計算。微控制器不會從互聯網讀取時間,也不會開箱即用地使用實時時鐘來跟蹤時間,設備需要被編程來執行此操作,前提是它具有必要的硬件。

為了簡化本課程的內容,時間不會與傳感器數據一起發送,而是可以在伺服器代碼接收到消息後添加。

任務

編程設備以發佈溫度數據。

  1. 打開 temperature-sensor Wio Terminal 項目

  2. 重複你在第 4 課中連接到 MQTT 並發送遙測數據的步驟,你將使用相同的公共 Mosquitto 代理。

    這些步驟是:

    • 將 Seeed WiFi 和 MQTT 庫添加到 .ini 文件中

    • 添加配置文件和代碼以連接到 WiFi

    • 添加代碼以連接到 MQTT 代理

    • 添加代碼以發佈遙測數據

    ⚠️ 如有需要,請參考第 4 課中的連接到 MQTT 的說明發送遙測數據的說明

  3. 確保 config.h 標頭文件中的 CLIENT_NAME 反映此項目:

    const string CLIENT_NAME = ID + "temperature_sensor_client";
  4. 對於遙測數據,請改為發送從 DHT 傳感器讀取的溫度值,並在 JSON 文檔中的屬性 temperature 中更改 main.cpp 中的 loop 函數:

    float temp_hum_val[2] = {0};
    dht.readTempAndHumidity(temp_hum_val);

    DynamicJsonDocument doc(1024);
    doc["temperature"] = temp_hum_val[1];
  5. 溫度值不需要經常讀取 - 它在短時間內不會有太大變化,因此將 loop 函數中的 delay 設置為 10 分鐘:

    delay(10 * 60 * 1000);

    💁 delay 函數以毫秒為單位,因此為了使其更易於閱讀,該值以計算結果的形式傳遞。1,000 毫秒為一秒,60 秒為一分鐘,因此 10 x(每分鐘 60 秒)x(每秒 1000 毫秒)給出 10 分鐘的延遲。

  6. 將此上傳到你的 Wio Terminal,並使用串行監視器查看溫度是否已發送到 MQTT 代理。

    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Connecting to WiFi..
    Connected!
    Attempting MQTT connection...connected
    Sending telemetry {"temperature":25}
    Sending telemetry {"temperature":25}

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

😀 你已成功從設備發佈溫度作為遙測數據。