4.8 KiB
温度を公開する - Wio Terminal
このレッスンのこの部分では、Wio Terminalで検出された温度値をMQTTを通じて公開し、後でGDDを計算するために使用できるようにします。
温度を公開する
温度が読み取られると、それをMQTTを通じて公開し、値を読み取り、GDD計算の準備として保存する「サーバー」コードに送ることができます。マイクロコントローラーはインターネットから時間を読み取ったり、リアルタイムクロックで時間を追跡したりする機能を標準で備えていません。そのため、必要なハードウェアがある場合はデバイスをプログラムする必要があります。
このレッスンを簡略化するために、センサーのデータと一緒に時間を送信することはせず、メッセージを受信した後にサーバーコード側で時間を追加することにします。
タスク
デバイスをプログラムして温度データを公開します。
-
temperature-sensor
Wio Terminalプロジェクトを開きます。 -
レッスン4で行った手順を繰り返してMQTTに接続し、テレメトリを送信します。同じ公開Mosquittoブローカーを使用します。
この手順は以下の通りです:
.ini
ファイルにSeeed WiFiとMQTTライブラリを追加する- WiFiに接続するための設定ファイルとコードを追加する
- MQTTブローカーに接続するコードを追加する
- テレメトリを公開するコードを追加する
⚠️ 必要に応じて、MQTTに接続する手順やテレメトリを送信する手順を参照してください。
-
config.h
ヘッダーファイル内のCLIENT_NAME
がこのプロジェクトを反映していることを確認してください:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
テレメトリについては、光の値を送信する代わりに、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];
-
温度値は頻繁に読み取る必要はありません。短時間で大きく変化することはないため、
loop
関数内のdelay
を10分に設定してください:delay(10 * 60 * 1000);
💁
delay
関数はミリ秒単位で時間を受け取るため、読みやすくするために計算結果として値を渡します。1秒は1,000ms、1分は60秒なので、10 x (1分の60秒) x (1秒の1000ms)で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 --- Connecting to WiFi.. Connected! Attempting MQTT connection...connected Sending telemetry {"temperature":25} Sending telemetry {"temperature":25}
💁 このコードはcode-publish-temperature/wio-terminalフォルダーにあります。
😀 デバイスからテレメトリとして温度を正常に公開しました。
免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤った解釈について、当方は責任を負いません。