センサーのトピックをパブリッシュする
読み取り値を名前付きトピックに送信します。
「センサーのトピックをパブリッシュする」はCoddyKit上の無料Arduino & IoT Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはArduino & IoT Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Arduino & IoT Academyコースには全4レッスンが含まれています。
データの送信はパブリッシュ
接続後は、値を共有するために1回呼び出すだけです。トピックに値をpublishすると、ブローカーがサブスクライバーに配信します。
分かりやすいトピックを選ぶ
home/garden/soilのような説明的なトピックパスを選びます。適切な名前を付けると、大きくなったシステムでも読み取りや振り分けが簡単になります。
home/garden/soil/moisturepublish呼び出し
基本形ではトピックとメッセージを指定します。どちらも単純な文字列なので、MQTTはペイロードの中身を問いません。
client.publish("home/garden/temp", "23.5");ペイロードは単なるテキスト
ペイロードは単純なバイト列です。それが数値、単語、構造化データのいずれであっても、その意味は自分で決めます。
数値は変換が必要です
センサーの値は浮動小数点数であることがよくあります。publishする前に、dtostrfまたはString()を使って文字列に変換します。
char buf[8];
dtostrf(temp, 4, 1, buf);
client.publish("home/temp", buf);構造化データはJSONで送信する
複数の値をまとめるには、ペイロードをJSON形式にします。1つのメッセージで温度と湿度を一緒に送信できます。
client.publish("home/dht", "{\"t\":23.5,\"h\":55}");ブローカーに大量送信しない
毎秒何千回もpublishすると、電力と帯域幅を無駄に消費します。適切な間隔を設けて、メッセージを有用な頻度に保ちます。
millisで時間を測る
数秒ごとにpublishするには、delayではなくmillis()を使います。待機中もデバイスが応答可能な状態を保てます。
if (millis() - last > 5000) {
last = millis();
publishReading();
}最新の測定値を保持する
retainフラグを追加すると、ブローカーが最新の値を保存します。新しいダッシュボードには、接続した瞬間にデータが表示されます。
client.publish("home/temp", buf, true);値ごとに1つのトピックを使う
.../tempや.../humidityのように、各測定値に専用のトピックを割り当てます。きれいに分離しておくと、サブスクライバーがシンプルになります。
成功したことを確認する
publish呼び出しは、成功するとtrueを返します。結果をログに記録するか、デスクトップのMQTTクライアントで確認して、ボードからデータが送信されたことを確かめます。
確認テスト
新しいダッシュボードに、センサーが次の値をpublishする前でも、最後の温度をすぐ表示したいとします。何が役立つでしょうか。
まとめ
センサーデータをpublishするために、値を文字列に変換し、分かりやすいトピックを選び、millisで送信タイミングを管理し、最新の値を保持する方法を学びました。🎉
AI チューターと学ぶ C++ — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「センサーのトピックをパブリッシュする」レッスンは無料ですか?
はい。「センサーのトピックをパブリッシュする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Arduino & IoT Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Arduino & IoT Academyコースには全4レッスンが含まれています。
「センサーのトピックをパブリッシュする」で何を学びますか?
読み取り値を名前付きトピックに送信します。 ブラウザで直接実行するハンズオンコードでArduino & IoT Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Arduino & IoT Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのArduino & IoT Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「センサーのトピックをパブリッシュする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このArduino & IoT Academyレッスンでコードを書いて実行できますか?
はい。すべてのArduino & IoT Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- MQTTがIoTに適する理由
- ブローカーに接続する
- センサーのトピックをパブリッシュする
- コマンドを購読して実行する