デバイスコードでX.509証明書を使用する - 仮想IoTハードウェアとRaspberry Pi
このレッスンのこの部分では、仮想IoTデバイスまたはRaspberry PiをX.509証明書を使用してIoT Hubに接続します。
デバイスをIoT Hubに接続する
次のステップは、X.509証明書を使用してデバイスをIoT Hubに接続することです。
タスク - IoT Hubに接続する
-
キーと証明書ファイルをIoTデバイスコードを含むフォルダーにコピーします。VS Code Remote SSHを介してRaspberry Piを使用していて、PCまたはMacでキーを作成した場合は、VS Codeのエクスプローラーにファイルをドラッグアンドドロップしてコピーできます。
-
app.py
ファイルを開きます。 -
X.509証明書を使用して接続するには、IoT Hubのホスト名とX.509証明書が必要です。デバイスクライアントが作成される前に、次のコードを追加してホスト名を含む変数を作成します:
host_name = "<host_name>"
<host_name>
をIoT Hubのホスト名に置き換えます。これはconnection_string
のHostName
セクションから取得できます。これは、.azure-devices.net
で終わるIoT Hubの名前です。 -
これの下に、デバイスIDを含む変数を宣言します:
device_id = "soil-moisture-sensor-x509"
-
X.509ファイルを含む
X509
クラスのインスタンスが必要です。azure.iot.device
モジュールからインポートされるクラスのリストにX509
を追加します:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse, X509
-
次のコードを
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
クラスが作成されます。 -
接続文字列から
device_client
を作成するコード行を次のように置き換えます:device_client = IoTHubDeviceClient.create_from_x509_certificate(x509, host_name, device_id)
これにより、接続文字列の代わりにX.509証明書を使用して接続されます。
-
connection_string
変数を含む行を削除します。 -
コードを実行します。IoT Hubに送信されるメッセージを監視し、以前と同様に直接メソッドリクエストを送信します。デバイスが接続され、土壌湿度の読み取り値を送 信し、直接メソッドリクエストを受信するのがわかります。
💁 このコードはcode/piまたはcode/virtual-deviceフォルダーにあります。
😀 あなたの土壌湿度センサーのプログラムは、X.509証明書を使用してIoT Hubに接続されています!