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

デバイスコードでX.509証明書を使用する - 仮想IoTハードウェアとRaspberry Pi

このレッスンのこの部分では、仮想IoTデバイスまたはRaspberry PiをX.509証明書を使用してIoT Hubに接続します。

デバイスをIoT Hubに接続する

次のステップは、X.509証明書を使用してデバイスをIoT Hubに接続することです。

タスク - IoT Hubに接続する

  1. キーと証明書ファイルをIoTデバイスコードを含むフォルダーにコピーします。VS Code Remote SSHを介してRaspberry Piを使用していて、PCまたはMacでキーを作成した場合は、VS Codeのエクスプローラーにファイルをドラッグアンドドロップしてコピーできます。

  2. app.pyファイルを開きます。

  3. X.509証明書を使用して接続するには、IoT Hubのホスト名とX.509証明書が必要です。デバイスクライアントが作成される前に、次のコードを追加してホスト名を含む変数を作成します:

    host_name = "<host_name>"

    <host_name>をIoT Hubのホスト名に置き換えます。これはconnection_stringHostNameセクションから取得できます。これは、.azure-devices.netで終わるIoT Hubの名前です。

  4. これの下に、デバイスIDを含む変数を宣言します:

    device_id = "soil-moisture-sensor-x509"
  5. X.509ファイルを含むX509クラスのインスタンスが必要です。azure.iot.deviceモジュールからインポートされるクラスのリストにX509を追加します:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
  6. 次のコードをhost_name宣言の下に追加して、証明書とキーのファイルを使用してX509クラスのインスタンスを作成します:

    x509 = X509("./soil-moisture-sensor-x509-cert.pem", "./soil-moisture-sensor-x509-key.pem")

    これにより、以前に作成したsoil-moisture-sensor-x509-cert.pemおよびsoil-moisture-sensor-x509-key.pemファイルを使用してX509クラスが作成されます。

  7. 接続文字列からdevice_clientを作成するコード行を次のように置き換えます:

    device_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)

    これにより、接続文字列の代わりにX.509証明書を使用して接続されます。

  8. connection_string変数を含む行を削除します。

  9. コードを実行します。IoT Hubに送信されるメッセージを監視し、以前と同様に直接メソッドリクエストを送信します。デバイスが接続され、土壌湿度の読み取り値を送信し、直接メソッドリクエストを受信するのがわかります。

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

😀 あなたの土壌湿度センサーのプログラムは、X.509証明書を使用してIoT Hubに接続されています!