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

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

IoTデバイスは、MQTTを使用してtest.mosquitto.orgと通信し、光センサーの読み取り値を含むテレメトリ値を送信し、LEDを制御するコマンドを受信するようにコード化する必要があります。

このレッスンのこの部分では、ラズベリーパイまたは仮想IoTデバイスをMQTTブローカーに接続します。

MQTTクライアントパッケージをインストールする

MQTTブローカーと通信するには、MQTTライブラリのpipパッケージをラズベリーパイにインストールするか、仮想デバイスを使用している場合は仮想環境にインストールする必要があります。

タスク

pipパッケージをインストールする

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

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

  3. 次のコマンドを実行してMQTTのpipパッケージをインストールします:

    pip3 install paho-mqtt

デバイスをコード化する

デバイスのコード化の準備ができました。

タスク

デバイスコードを書く

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

    import paho.mqtt.client as mqtt

    paho.mqtt.clientライブラリは、アプリがMQTTを介して通信することを可能にします。

  2. 光センサーとLEDの定義の後に次のコードを追加します:

    id = '<ID>'

    client_name = id + 'nightlight_client'

    <ID>をこのデバイスクライアントの名前として使用される一意のIDに置き換えます。このIDは後でこのデバイスが公開および購読するトピックの名前にも使用されます。test.mosquitto.orgブローカーは公開されており、多くの人々、特にこの課題に取り組んでいる他の学生によって使用されています。一意のMQTTクライアント名とトピック名を持つことで、コードが他の人と衝突しないようにします。このIDは、この課題の後半でサーバーコードを作成する際にも必要になります。

    💁 GUIDGenのようなウェブサイトを使用して一意のIDを生成できます。

    client_nameはブローカー上のこのMQTTクライアントの一意の名前です。

  3. この新しいコードの下に次のコードを追加して、MQTTクライアントオブジェクトを作成し、MQTTブローカーに接続します:

    mqtt_client = mqtt.Client(client_name)
    mqtt_client.connect('test.mosquitto.org')

    mqtt_client.loop_start()

    print("MQTT connected!")

    このコードはクライアントオブジェクトを作成し、公開MQTTブローカーに接続し、バックグラウンドスレッドで実行される処理ループを開始して、購読しているトピックのメッセージをリッスンします。

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

    (.venv) ➜  nightlight python app.py 
    MQTT connected!
    Light level: 0
    Light level: 0

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

😀 デバイスをMQTTブローカーに接続することに成功しました。