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

インターネットを介してナイトライトを制御する - Wio Terminal

このレッスンのこの部分では、Wio TerminalからMQTTブローカーに光レベルのテレメトリを送信します。

JSON Arduinoライブラリのインストール

MQTTを介してメッセージを送信する一般的な方法はJSONを使用することです。JSONドキュメントの読み書きを簡単にするArduinoライブラリがあります。

タスク

Arduino JSONライブラリをインストールします。

  1. VS Codeでナイトライトプロジェクトを開きます。

  2. platformio.iniファイルのlib_depsリストに次の行を追加します:

    bblanchon/ArduinoJson @ 6.17.3

    これにより、Arduino JSONライブラリであるArduinoJsonがインポートされます。

テレメトリの公開

次のステップは、テレメトリを含むJSONドキュメントを作成し、それをMQTTブローカーに送信することです。

タスク - テレメトリの公開

MQTTブローカーにテレメトリを公開します。

  1. config.hファイルの末尾に次のコードを追加して、MQTTブローカーのテレメトリトピック名を定義します:

    const string CLIENT_TELEMETRY_TOPIC = ID + "/telemetry";

    CLIENT_TELEMETRY_TOPICは、デバイスが光レベルを公開するトピックです。

  2. main.cppファイルを開きます。

  3. ファイルの先頭に次の#includeディレクティブを追加します:

    #include <ArduinoJSON.h>
  4. loop関数内のdelayの直前に次のコードを追加します:

    int light = analogRead(WIO_LIGHT);

    DynamicJsonDocument doc(1024);
    doc["light"] = light;

    string telemetry;
    serializeJson(doc, telemetry);

    Serial.print("Sending telemetry ");
    Serial.println(telemetry.c_str());

    client.publish(CLIENT_TELEMETRY_TOPIC.c_str(), telemetry.c_str());

    このコードは光レベルを読み取り、ArduinoJsonを使用してこのレベルを含むJSONドキュメントを作成します。これを文字列にシリアライズし、MQTTクライアントによってテレメトリMQTTトピックに公開します。

  5. コードをWio Terminalにアップロードし、シリアルモニターを使用してMQTTブローカーに送信される光レベルを確認します。

    Connecting to WiFi..
    Connected!
    Attempting MQTT connection...connected
    Sending telemetry {"light":652}
    Sending telemetry {"light":612}
    Sending telemetry {"light":583}

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

😀 デバイスからテレメトリを正常に送信しました。