温度を公開する - Wio Terminal
このレッスンのこの部分では、Wio Terminal によって検出された温度値を MQTT 経由で公開し、後で GDD を計算するために使用できるよう にします。
温度を公開する
温度が読み取られると、それを MQTT 経由で「サーバー」コードに公開して値を読み取り、GDD 計算に使用できるように保存します。マイクロコントローラーは、インターネットから時間を読み取ったり、リアルタイムクロックで時間を追跡したりしません。デバイスには必要なハードウェアがあると仮定して、これを行うようにプログラムする必要があります。
このレッスンを簡素化するために、センサーデータと一緒に時間は送信されません。代わりに、メッセージを受信したときにサーバーコードによって追加されます。
タスク
デバイスをプログラムして温度データを公開します。
-
temperature-sensor
Wio Terminal プロジェクトを開きます -
レッスン 4 で行った手順を繰り返して、MQTT に接続し、テレメトリを送信します。同じパブリック Mosquitto ブローカーを使用します。
これらの手順は次のとおりです。
-
Seeed WiFi および MQTT ライブラリを
.ini
ファイルに追加します -
WiFi に接続するための設定ファイルとコードを追加します
-
MQTT ブローカーに接続す るコードを追加します
-
テレメトリを公開するコードを追加します
⚠️ 必要に応じて、レッスン 4 の MQTT に接続するための手順 および テレメトリを送信するための手順 を参照してください。
-
-
config.h
ヘッダーファイルのCLIENT_NAME
がこのプロジェクトを反映していることを確認します。const string CLIENT_NAME = ID + "temperature_sensor_client";
-
テレメトリについては、光の値を送信する代わりに、
main.cpp
のloop
関数を変更して、DHT センサーから読み取った温度値をtemperature
というプロパティで JSON ドキュメントに送信します。float temp_hum_val[2] = {0};
dht.readTempAndHumidity(temp_hum_val);
DynamicJsonDocument doc(1024);
doc["temperature"] = temp_hum_val[1]; -
温度値は頻繁に読み取る必要はありません。短時間で大きく変わることはないた め、
loop
関数のdelay
を 10 分に設定します。delay(10 * 60 * 1000);
💁
delay
関数はミリ秒単位で時間を取るため、値を計算結果として渡すと読みやすくなります。1 秒は 1,000 ミリ秒、1 分は 60 秒なので、10 x (1 分の 60 秒) x (1 秒の 1000 ミリ秒) で 10 分の遅延が得られます。 -
これを 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 フォルダーにあります。
😀 デバイスからテレメトリとして温度を正常に公開しました。