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

インターネットを介してナイトライトを制御する - 仮想IoTハードウェアとRaspberry Pi

このレッスンのこの部分では、Raspberry Piまたは仮想IoTデバイスからMQTTブローカーに光レベルのテレメトリを送信します。

テレメトリの公開

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

タスク

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

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

  2. 仮想IoTデバイスを使用している場合は、ターミナルが仮想環境を実行していることを確認します。Raspberry Piを使用している場合は、仮想環境を使用しません。

  3. app.pyファイルの先頭に次のインポートを追加します:

    import json

    jsonライブラリは、テレメトリをJSONドキュメントとしてエンコードするために使用されます。

  4. client_name宣言の後に次の行を追加します:

    client_telemetry_topic = id + '/telemetry'

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

  5. ファイルの最後のwhile True:ループの内容を次のように置き換えます:

    while True:
    light = light_sensor.light
    telemetry = json.dumps({'light' : light})

    print("Sending telemetry ", telemetry)

    mqtt_client.publish(client_telemetry_topic, telemetry)

    time.sleep(5)

    このコードは、光レベルをJSONドキュメントにパッケージ化し、それをMQTTブローカーに公開します。その後、メッセージの送信頻度を減らすためにスリープします。

  6. 前の部分の課題と同じ方法でコードを実行します。仮想IoTデバイスを使用している場合は、CounterFitアプリが実行されており、光センサーとLEDが正しいピンに作成されていることを確認してください。

    (.venv) ➜  nightlight python app.py 
    MQTT connected!
    Sending telemetry {"light": 0}
    Sending telemetry {"light": 0}

💁 このコードはcode-telemetry/virtual-deviceフォルダーまたはcode-telemetry/piフォルダーにあります。

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