Azure IoT Hub( MQTT)にメッセージを送信する方法の例を次に示します。
事前準備
証明書を作成するためにLinuxかMacを準備してください。
ツールのダウンロード
Azure IoT Hubで証明書を使用するため こちら からコマンドラインツールをLinuxかMacにダウンロードしてください。
Windowsの場合はPowerShellからbashコマンドを実行して、bashを使用してください。
次のコマンドを入力して、フィールドに貼り付けることができる証明書を作成します。
ダウンロードしたzipファイルを展開してtoolsディレクトリに移動します。
cd <path>/azure-iot-sdk-c-main/tools
ツールに実行権限をつけます。
chmod +x ./certGen.sh
CA証明書の作成
ツールを実行してCA証明書を作成します。
./certGen.sh create_root_and_intermediate
デバイス証明書の作成
ツールを実行してデバイスの証明書を作成します。
./certGen.sh create_device_certificate <device id>
※はデバイスIDを指定します
デバイスの公開鍵を作成します。
openssl pkcs12 -in certs/new-device.cert.pfx -clcerts -nokeys -out <device id>.crt
※パスワードの入力が求められたら画面に表示されている設定されているパスワードを入力します。
デバイスの秘密鍵を作成します。
openssl pkcs12 -in certs/new-device.cert.pfx -nocerts -nodes -out <device id>.key
※パスワードの入力が求められたら画面に表示されている設定されているパスワードを入力します。
.crtと.keyはGravio Studioで使用します。
複数のデバイスを使用するには、デバイスの分だけ作成してください。
Azure でIoT Hubの作成
AzureにログインしてIoT Hubを表示して作成します:
リソースグループは新規作成してします。サンプルでは“iothub“としました。
IoT Hub名を入力します。サンプルでは“gravio-mqtt“としました。
ネットワークを指定します。
管理でスケーリングレベルとユニットなどパフォーマンスを指定します。サンプルでは“F1:Free レベル“を選択しました。
確認及び作成で設定内容を確認して作成します。
ディプロイが完了すると“gravio-mqtt“が作成されます。
“gravio-mqtt“を選択して証明書を開いて作成します。
証明書の追加で証明書名を入力して事前準備で作成したCA証明書を指定します。
“アップロード時に証明書の状態を確認済みに設定する“をオンにします。
証明書を保存すると一覧に表示されます。
デバイスを開いて作成します。
デバイスIDはデバイスの証明書で指定したIDを入力します。
認証の種類は“X.509CA署名済み“を選択します。
デバイスを保存すると一覧に表示されます。
概要を開いてホスト名を記録します。ホスト名はAzure IoT Hubのエントリポイントとなります。
Gravio StudioでのMQTTPublisherの設定
Gravio StudioでMQTTPublisherのプロパティには以下のように設定します。
プロパティー名 | 説明 |
---|---|
トピック | “devices/“デバイスID”/messages/events/“を指定します。例 “devices/d002/messages/events/” |
クライアントID | デバイスIDを指定します。例 “d001” |
QoS | (デフォルトのまま) |
Retain | (デフォルトのまま) |
タイムアウト | (デフォルトのまま) |
URL | “ssl://“に続けてホスト名を指定します。例 “ssl://gravio-mqtt.azure-devices.net” |
ポート | 8883を指定します |
ユーザ名 | ホスト名+”/”+デバイスIDを指定します。例 “gravio-mqtt.azure-devices.net/d001” |
パスワード | (指定しない) |
証明書 | 事前準備で作成したデバイスの公開鍵を指定します |
秘密鍵 | 事前準備で作成したデバイスの秘密鍵を指定します |
秘密鍵パスフレーズ | (指定しない) |
ルート証明書 | (指定しない) |
これでMQTTPublisherからAzure IoT Hub(MQTT)にデータを送信する設定が整いました。
Need more help with this?
Join our slack community for help