Arduino & IoT Academy · レッスン

センサーのトピックをパブリッシュする

読み取り値を名前付きトピックに送信します。

レッスン 3/413 ステップ

「センサーのトピックをパブリッシュする」はCoddyKit上の無料Arduino & IoT Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはArduino & IoT Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Arduino & IoT Academyコースには全4レッスンが含まれています。

データの送信はパブリッシュ

接続後は、値を共有するために1回呼び出すだけです。トピックに値をpublishすると、ブローカーがサブスクライバーに配信します。

分かりやすいトピックを選ぶ

home/garden/soilのような説明的なトピックパスを選びます。適切な名前を付けると、大きくなったシステムでも読み取りや振り分けが簡単になります。

home/garden/soil/moisture

publish呼び出し

基本形ではトピックとメッセージを指定します。どちらも単純な文字列なので、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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MQTTがIoTに適する理由
  2. ブローカーに接続する
  3. センサーのトピックをパブリッシュする
  4. コマンドを購読して実行する
← Arduino & IoT Academyに戻る