メインコンテンツまでスキップ

温度を公開する - Wio Terminal

このレッスンのこの部分では、Wio Terminal によって検出された温度値を MQTT 経由で公開し、後で 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. テレメトリについては、光の値を送信する代わりに、main.cpploop 関数を変更して、DHT センサーから読み取った温度値を temperature というプロパティで JSON ドキュメントに送信します。

    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 秒は 1,000 ミリ秒、1 分は 60 秒なので、10 x (1 分の 60 秒) x (1 秒の 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 ---
    WiFi に接続しています..
    接続されました!
    MQTT 接続を試みています...接続されました
    テレメトリを送信中 {"temperature":25}
    テレメトリを送信中 {"temperature":25}

💁 このコードは code-publish-temperature/wio-terminal フォルダーにあります。

😀 デバイスからテレメトリとして温度を正常に公開しました。