インターネットを介してナイトライトを制御する - 仮想IoTハードウェアとラズベリーパイ
このレッスンのこの部分では、MQTTブローカーからラズベリーパイまたは仮想IoTデバイスに送信されるコマンドを購読します。
コマンドを購読する
次のステップは、MQTTブローカーから送信されたコマンドを購読し、それに応答することです。
タスク
コマンドを購読する。
-
VS Codeでナイトライトプロジェクトを開きます。
-
仮想IoTデバイスを使用している場合は、ターミナルが仮想環境を実行していることを確認します。ラズベリーパイを使用している場合は、仮想環境を使用しません。
-
client_telemetry_topic
の定義の後に次のコードを追加します:server_command_topic = id + '/commands'
server_command_topic
は、デバイスがLEDコマンドを受信するために購読するMQTTトピックです。 -
メインループの直前、
mqtt_client.loop_start()
行の後に次のコードを追加します:def handle_command(client, userdata, message):
payload = json.loads(message.payload.decode())
print("Message received:", payload)
if payload['led_on']:
led.on()
else:
led.off()
mqtt_client.subscribe(server_command_topic)
mqtt_client.on_message = handle_command