インターネットを介してナイトライトを制御する - 仮想IoTハードウェアとRaspberry Pi
このレッスンのこの部分では、Raspberry Piまたは仮想IoTデバイスからMQTTブローカーに光レベルのテレメトリを送信します。
テレメトリの公開
次のステップは、テレメトリを含むJSONドキュメントを作成し、それをMQTTブローカーに送信することです。
タスク
テレメトリをMQTTブローカーに公開します。
-
VS Codeでナイトライトプロジェクトを開きます。
-
仮想IoTデバイスを使用している場合は、ターミナルが仮想環境を実行していることを確認します。Raspberry Piを使用している場合は、仮想環境を使用しません。
-
app.py
ファイルの先頭に次のインポートを追加します:import json
json
ライブラリは、テレメトリをJSONドキュメントとしてエンコードするために使用されます。 -
client_name
宣言の後に次の行を追加します:client_telemetry_topic = id + '/telemetry'
client_telemetry_topic
は、デバイスが光レベルを公開するMQTTトピックです。 -
ファイルの最後の
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ブローカーに公開します。その後、メッセージの送信頻度を減らすためにスリープします。
-
前の部分の課題と同じ方法でコードを実行します。仮想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フォルダーにあります。
😀 デバイスからテレメトリを正常に送信しました。