「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>Azure IoT Hub]] --Azure IoT Hubチュートリアル --[[Azure IoT Centralチュートリアル]] --[[Azure IoT Edgeチュートリアル]] * 目次 [#w8d4e7b7] #contents *概要 [#acbfba92] -[[Azure IoT Hub]]の --[[Device Endpoint>Azure IoT Hub#zc944d5d]]にデバイスを --[[Service Endpoint>Azure IoT Hub#sada5bf3]]にサービスを >繋いでいくチュートリアル -以下を接続する。 --[[Azure IoT Explorer>#x1656c70]] --[[Device Endpoint>Azure IoT Hub#zc944d5d]] ---[[Raspberry Pi Simulator>#cd6d69d9]]~ ---[[CLIデバイス・シミュレータ>#l37428a5]] ---[[SDK(C#)>#pc3d2e93]] --[[Service Endpoint>Azure IoT Hub#sada5bf3]] ---[[Azure Stream Analytics>#r64ca7cd]]~ ・[[ストレージ>Azureのストレージ]]~ ・[[Power BI]] ---[[Azure Time Series Insights>#j0c85e68]] *詳細 [#meed8673] **契約 [#gaa4007d] ***[[Azureの契約>AzureのPoC環境を契約する]] [#o1607bb5] ***IoT Hubの契約 [#p3b81203] Freeレベルを選択できるらしい。 **構築 [#ucb21f5f] パラメタは以下の感じで。 -リソース・グループ:HmsRG -Region:westus2 -IoT Hub 名:OsscJpDevInfra -DPS 名:OsscJpDevInfra -スケーリング レベルとユニット:F1(Freeレベル ***ポータル [#n42faf51] -IoT Hub --サービス > IoT Hubに移動 --[IoT ハブ作成]ボタンを押下 --[[上記>#ucb21f5f]]のパラメタを設定 --[確認および作成] → [作成]ボタンを押下。 --デプロイが完了したら[リソースに移動]ボタンを押下。 --IoT Hubへの接続文字列~ IoT Hubの共有アクセス ポリシーの~ iothubownerのプライマリ接続文字列から取得。 -DPS~ ... ***シェル [#h08c88ba] -リソース・グループ $ az group create --name HmsRG --location westus2 -エクステンションの追加 $ az extension add --name azure-iot -IoT Hub --IoT Hubの作成 $ az iot hub create --resource-group HmsRG --name OsscJpDevInfra --IoT Hubへの接続文字列~ を以下のコマンドから取得 $ az iot hub connection-string show --hub-name OsscJpDevInfra -DPS(必要に応じて --DPSの作成 $ az iot dps create --resource-group HmsRG --name OsscJpDevInfra --リンクする。 $ hubConnectionString=$(az iot hub connection-string show -n OsscJpDevInfra --key primary --query connectionString -o tsv) $ echo $hubConnectionString $ az iot dps linked-hub create \ --dps-name OsscJpDevInfra --resource-group HmsRG --location westus2 \ --connection-string $hubConnectionString --DPS 構成の "ID スコープ"をメモしておく。 $ az iot dps show --name OsscJpDevInfra --query properties.idScope **Azure IoT Explorer [#x1656c70] ***インストール [#ed98778e] -最新のインストーラーを取得する。~ https://github.com/Azure/azure-iot-explorer/releases -既定値でインストールを行う。 ***初期化 [#xae8e3a8] -起動して[Add connection]する。 -接続文字列の入力欄に[[IoT Hubへの接続文字列>#ucb21f5f]]を貼り付けて[Save]ボタンを押下する。 ***パブリック モデル リポジトリ追加 [#he457f43] (パブリック モデル リポジトリとは?) -ホーム ビューで、 [IoT プラグ アンド プレイの設定] を選択。 -[+ 追加] を選択して[パブリック リポジトリ] を選択。 -パブリック モデル リポジトリのエントリが表示される。 -[保存] を選択。 *準備 [#ab3258fa] **デバイスの追加 [#k90b9399] ***ポータル [#b19ca732] -デバイス管理 > デバイス > デバイスの追加と進み --以下の値を入力 ---デバイスの作成で以下を入力する。 ---デバイス ID:mydevice1 ---認証の種類:対称キー、自動生成キー[✔] ---このデバイスを IoT ハブに接続する:有効化 --[保存]ボタンを押下し~ デバイスを追加する。 -追加したデバイスのページに移動し、 --デバイスからIoT Hubへの接続文字列を取得しておく。 ***シェル [#fa2e991b] -通常のデバイス --デバイスIDの生成 $ az iot hub device-identity create -d mydevice1 -n OsscJpDevInfra --デバイスからIoT Hubへの接続文字列~ $ az iot hub device-identity connection-string show --hub-name OsscJpDevInfra --device-id mydevice1 --output table -DPS デバイス --生成~ 事前に、デバイスID : my-pnp-device1 を生成しておく。 --登録~ 登録してenrollment-idとsymmetricキーをメモしておく。 $ az iot dps enrollment create \ --attestation-type symmetrickey \ --dps-name OsscJpDevInfra --resource-group HmsRG \ --enrollment-id my-pnp-device1 --device-id my-pnp-device1 \ --query '{registrationID:registrationId,primaryKey:attestation.symmetricKey.primaryKey}' --削除 $ az iot dps enrollment delete -n OsscJpDevInfra --eid my-pnp-device1 ***[[Azure IoT Explorer>#x1656c70]] [#m71eb642] -ホーム ビューで、 [IoT Hub] を選択。 -接続が表示され接続プロパティの下の[View devices in this hub]を選択。 -[+ 新規] を選択し、デバイス ID:mydevice1を入力し[作成] を選択。 -[プライマリ接続文字列]フィールドからデバイスからIoT Hubへの接続文字列をコピー。 **デバイスの監視 [#y74719b3] ***ポータル [#tf6c8c7d] ***シェル [#xd91d96d] [[Azure Cloud Shell]]の別セッション(≒ 別タブ)で実行 $ az iot hub monitor-events --output table -p all -n OsscJpDevInfra ***[[Azure IoT Explorer>#x1656c70]] [#g1f9593b] 追加したデバイスのテレメトリを受信 -デバイスを選択し、 -テレメトリを選択し、 -[Start]を押下してテレメトリを受信 *接続 [#cbe61ae8] **デバイス [#z6f6be88] ***[[Raspberry Pi>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Raspberry%20Pi]] Simulator [#cd6d69d9] -[[デバイス監視の設定>#y74719b3]]を行っておく。 -Raspberry Pi Azure IoT Web Simulator~ https://azure-samples.github.io/raspberry-pi-web-simulator/#getstarted --'[Your IoT hub device connection string]'の部分を~ デバイスからIoT Hubへの接続文字列で置換する。 --[Run]ボタンを押下すると「Message sent to Azure IoT Hub」が確認できる。 ***CLIデバイス・シミュレータ [#l37428a5] -[[デバイス監視の設定>#y74719b3]]を別セッション(≒タブ)で行っておく。 -シミュレータの生成 $ az iot device simulate -d mydevice1 -n OsscJpDevInfra --シミュレータではデバイスからIoT Hubへの接続文字列の設定は不要である模様。 --デバイスが停止している場合、このコマンドを実行して再起動する(100%でシャットダウンする)。 -各種メッセージの送信~ ※ [[Azure Cloud Shell]]の別セッション(≒ 別タブ)で実行 --D2Cメッセージを送信 ---シミュレータ生成と同時に定期的にメッセージが送信される。 ---メッセージは、監視のセッション(≒タブ)で確認可能。 --C2Dメッセージを送信~ メッセージは、シミュレータの生成のセッション(≒タブ)で確認可能。 $ az iot device c2d-message send -d mydevice1 --data "Hello World" --props "key0=value0;key1=value1" -n OsscJpDevInfra --ダイレクト メソッドを送信~ メッセージは、シミュレータの生成のセッション(≒タブ)で確認可能。 $ az iot hub invoke-device-method --mn MySampleMethod -d mydevice1 -n OsscJpDevInfra --プロパティの ---更新 $ az iot hub device-twin update -d mydevice1 --desired '{"conditions":{"temperature":{"warning":98, "critical":107}}}' -n OsscJpDevInfra ---確認 $ az iot hub device-twin show -d mydevice1 --query properties.reported -n OsscJpDevInfra ---シミュレータの生成のセッション(≒タブ)でも確認可能。 ***SDK(C#) [#pc3d2e93] 「[[クイックスタート>#x1817894]]」「[[チュートリアル>#g4976320]]」から、~ Node.jsのサンプルが多いが、やっぱりC#を選択。 -[[デバイス監視の設定>#y74719b3]]を別セッション(≒タブ)で行っておく。 -azure-iot-sdk-csharp/iothub --テレメトリ送信~ 手順のとおり実行可能。 ---device/samples/solutions/PnpDeviceSamples/TemperatureController~ ・以下の環境変数を設定して set IOTHUB_DEVICE_SECURITY_TYPE=connectionString set IOTHUB_DEVICE_CONNECTION_STRING=デバイスからIoT Hubへの接続文字列 ・実行 TemperatureController --デバイス制御~ パスやコマンドライン引数が間違っている。 ---device/samples/getting started/SimulatedDeviceWithCommand >SimulatedDeviceWithCommand --DeviceConnectionString デバイスからIoT Hubへの接続文字列 ---service/samples/getting started/InvokeDeviceMethod >InvokeDeviceMethod --HubConnectionString "IoT Hubへの接続文字列" -d デバイス名 --IoT Plug and Playデバイスソリユーション~ 以下のビルドの前に「azureiot.sln」で全体のビルドが必要。 ---device/samples/solutions/PnpDeviceSamples/Thermostat~ ・以下の環境変数を設定して~ set IOTHUB_DEVICE_SECURITY_TYPE=dps set IOTHUB_DEVICE_DPS_ID_SCOPE=<...> set IOTHUB_DEVICE_DPS_DEVICE_ID=my-pnp-device1 set IOTHUB_DEVICE_DPS_DEVICE_KEY=<...> set IOTHUB_DEVICE_DPS_ENDPOINT=global.azure-devices-provisioning.net ・実行~ Thermostat.exe -r 30 ---service/samples/solutions/PnpServiceSamples/Thermostat~ ・以下の環境変数を設定して~ set IOTHUB_DEVICE_ID=my-pnp-device1 set IOTHUB_CONNECTION_STRING=<...> ・実行~ Thermostat.exe その他のサンプル -matakaha/iotsample2022~ https://github.com/matakaha/iotsample2022 -OpenTouryoProject/HubAndMsgSrv~ https://github.com/OpenTouryoProject/HubAndMsgSrv/ **サービス [#d60d540f] ***[[Azure Stream Analytics]] [#r64ca7cd] [[Azure Stream Analytics]]を経由して以下に接続する。 -[[ストレージ>Azureのストレージ]] --[[ストレージ・コンテナをIaCする>Azureのストレージ#ea519673]]など。 --[[Azure Stream Analyticsジョブの作成>Azure Stream Analytics#td239b90]] ---ポータル~ ・ジョブ名:IoT2Storage~ ・[Add input]を押下してストリーム入力の追加から[IoT Hub]を選択し既定値で設定~ ・[Add output]を押下して追加から[Blob ストレージ]を選択し既定値で設定~ ・[Write query]([Edit query])を押下すると、~ ・入力・出力がエイリアスで自動設定されているので[クエリのテスト]で動作を確認。~ ・最後に作成したジョブに戻って[開始]ボタンを押下する。 ---シェル ... -[[Power BI]]~ 組織アカウントが必要だった。 ***[[Azure Time Series Insights]] [#j0c85e68] 組織アカウントが必要だった。 *参考 [#l9ed163c] -IoT Hub の作成~ https://www.cloudou.net/azure-iot-suite/iot003/ -Azure IoT Hubを使ってみよう(デバイスデータを受け取る)~ ツクレル – デジタルものづくり教材の開発スタートアップ~ https://blog.tkrel.com/8478 -Azure IoT Hubでのデータ受け取りと可視化 - JBS Tech Blog~ https://blog.jbs.co.jp/entry/2022/04/26/100000 -Azure IoT Hub連携方法 | センスウェイ株式会社~ https://www.senseway.net/service/network-service/network-manual/manual-with-azure-iot-hub/ **Qiita [#l6f7a6cd] -【IoT初心者向け】IoT機器が無くても試せる!Azure IoT Hub~ https://qiita.com/RyogaTakao/items/5115c8d414c111f0753a -Azure IoT HubにHTTP POSTでメッセージを送信するメモ~ https://qiita.com/mitsuoka0423/items/bfcc91d50cd0fe312f6c -Azure IoT Hubまわりの監視の基礎~ https://qiita.com/mstakaha1113/items/503bc82476ec92de0e58 ***Python、Node.js [#s41212df] -ようやく始める Azure IoT Hub~ https://qiita.com/hydrangeas/items/dc725e6cc6a38717e932 -Azure IoTのチュートリアルをやってみた --1~ https://qiita.com/sirotosiko/items/ca588e6acad293a118b1 --2~ https://qiita.com/sirotosiko/items/abe0b91f31e18ec3f49e -Azure IoT Hub へのデータ送信と Azure Stream Analytics による可視化~ の下準備を試す(公式ドキュメントやサンプルをピックアップしつつ)~ https://qiita.com/youtoy/items/0ca9be93c9189e71b5d1 ***C# [#yb8dfb4e] -Azure IoT Hubを使ってみた~ https://qiita.com/linyixian/items/e319c5f63f9e57459ac0 -AzureでIoT系のサービスをサラッと(?)使ってみよう~ https://qiita.com/mstakaha1113/items/1c9b8f61452147a87640 --シナリオ0:デバイスとIoT Hubを接続。~ [quickstart-send-telemetry-iot-hub]の内容をヤレと言う内容。 --シナリオ1:デバイスからテレメトリーデータを取得しストレージへ保存。~ ---ココでは、Function → Storage と保存する。 ---以下の内容をヤレと言う内容。~ ・[functions-create-your-first-function-visual-studio]~ ・[functions-bindings-event-hubs-output]~ ・[functions-add-output-binding-storage-queue-vs]~ ---感想~ ・メッセージ ルーティングで良いのでは?と言う気もした。~ ・なぜ、Event Hubs?と思ったが、裏で暗黙的に使われているからっぽい(built-in event hub)。 ---余談~ 以下はVSCodeでシナリオ1をヤッた手順である様~ https://qiita.com/mstakaha1113/items/30fe58e37de0a2801307 --シナリオ2:テレメトリーデータの異常を検知した時はメールを送信。 ---ココでは、Stream Analytics → Service Bus → Logic Appsと保存する。 ---以下の内容をヤレと言う内容。~ ・[service-bus-quickstart-portal]~ ・[stream-analytics-quick-create-portal]~ ・[quickstart-create-first-logic-app-workflow]~ ・[service-bus-dotnet-get-started-with-queues](確認用) --シナリオ3:デバイスからファイルをアップロード。~ ---これは単なるファイルアップロード ---ただし、実際はStorageアップロードへの完了通知と言う点がポイント --シナリオ4:テレメトリーでアラートを送信し~ コレを受信したサービスはデバイスに制御メッセージを送信する。 ---ココでは、IoT Hub → Event Hub → Functions → IoT Hub と折り返す。 ---ポイント~ ・デバイスからテレメトリーで(プロパティを使用した)アラートを送信。~ ・間の経路はEvent Hubを挟んでメッセージ ルーティングする。~ ・Functions(シナリオ1で既出)でアラート イベントを取得しDesired プロパティを送信~ ・DeviceはDesired プロパティを受信(後のReportedについては触れられていない。 --シナリオ5:サービス側からデバイスに対して直接的に命令を送信(ダイレクト メソッド)。 ---ダイレクト メソッド(サンプルコードはazure-iot-samples-csharpにコード追加 ---パイプラインになっておらず、Functionsでダイレクト メソッドを実行するだけ。 -Azure IoT Hubを久しぶりに触ってみたので個人的な備忘録 --1(メッセージングとデバイスツイン)~ https://qiita.com/mstakaha1113/items/ff5e86ce969caceccb8d --2(メッセージルーティング)~ https://qiita.com/mstakaha1113/items/02f5ffb49367c3c4bcdd --3(ファイルアップロード)~ https://qiita.com/mstakaha1113/items/bf312e34f0ee53fde239 --4(c2dメッセージとメッセージエンリッチメント)~ https://qiita.com/mstakaha1113/items/2d80a209a6e4b4d0c0f6 --5(X.509証明書でIoT Hubに接続)~ https://qiita.com/mstakaha1113/items/3b254a23410786b7f72d --[[ソースコードがGitHub上にある。>#dff6c052]] **Stack Overflow [#z722c1dc] -asp.net core 6.0 - Azure IOT Device Provisioning - How to get the IOT Device Primary Connection String from the Device/Provisoning Client SDK?~ https://stackoverflow.com/questions/73366621/azure-iot-device-provisioning-how-to-get-the-iot-device-primary-connection-str **SIOS Tech. Lab [#m3cd8918] -VistaraでAzure IoT --【連載第1回】~ Raspberry Piベースの商用IoTデバイスに対し、Azure IoTで認定を受ける手順~ https://tech-lab.sios.jp/archives/vistara_azure_iot_20160719 --【連載第2回】~ オンプレミスのIoT環境をVistaraで監視し、アラートの状況に応じてインシデント化~ https://tech-lab.sios.jp/archives/vistara_azure_iot_20161129 --【連載第3回】~ IoTをAzure上で可視化し、Azure環境をVistaraでITオペレーション化~ https://tech-lab.sios.jp/archives/vistara_azure_iot_20161228 **他ベンダ [#pc466e73] -Getting Started: Azure IoT Hub と接続する~ SORACOM Beam | ソラコムユーザーサイト - SORACOM Users~ https://users.soracom.io/ja-jp/docs/beam/azure-iot/ -クラウドアダプタを利用してAzure IoT Hubへデータを送信する~ https://manual.iij.jp/iot/doc/16189086.html -Azure IoT Hubとの連携設定 — sakura.io ドキュメント~ https://sakura.io/docs/pages/guide/tutorial/service/azure-iot-hub.html **YouTube [#ub607655] -【 #初心者 向け】#Azure #IoT #チュートリアル 【 #ハンズオン 】~ https://www.youtube.com/watch?v=9_j2Zda1RHU -Azure IoT Hub 動かしてみた【Python】~ https://www.youtube.com/watch?v=aNCznKHogFs -【オンライン】公開打合わせ!~ Azure IoT x Azure RTOS 内輪レクチャーダダ漏れ会!~ https://www.youtube.com/watch?v=EfiSGLdiqbs **GitHub [#dff6c052] -https://github.com/Azure-Samples/azure-iot-samples-csharp -https://github.com/Azure-Samples/azure-iot-samples-node -https://github.com/Azure-Samples/azure-iot-samples-python -https://github.com/Azure-Samples/azure-iot-samples-java -https://github.com/Azure-Samples/azure-iot-starter-kits -https://github.com/Azure-Samples/azureiotlabs -https://github.com/matakaha/iotsample2022 **Microsoft Docs [#g4a4129e] -Azure IoT エクスプローラーをインストールして使用する~ https://docs.microsoft.com/ja-jp/azure/iot-fundamentals/howto-use-iot-explorer ***シミュレーター [#dff84bca] -az iot device simulate~ https://learn.microsoft.com/ja-jp/cli/azure/iot/device -Raspberry Pi Web シミュレーターの Azure IoT Hub への接続 (Node.js)~ https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-raspberry-pi-web-simulator-get-started ***クイックスタート [#x1817894] -CLIを使用したコード不要クイックスタート~ デバイスから IoT ハブに利用統計情報を送信して Azure CLI で監視する~ https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-cli -SDKを使用してテレメトリを送信する(C, C#, Node.js, Python, Java)~ https://docs.microsoft.com/ja-jp/azure/iot-develop/quickstart-send-telemetry-iot-hub -IoT ハブに接続されたデバイスを制御する(C#, Node.js, Python, Java)~ https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-control-device ***チュートリアル [#g4976320] -IoT Hub --デバイス メッセージをストレージにルーティングする~ https://learn.microsoft.com/ja-jp/azure/iot-hub/tutorial-routing --メッセージ エンリッチメントを使用する~ https://learn.microsoft.com/ja-jp/azure/iot-hub/tutorial-message-enrichments --メトリックとログを使用する~ https://learn.microsoft.com/ja-jp/azure/iot-hub/tutorial-use-metrics-and-diags --手動フェールオーバーの実行~ https://learn.microsoft.com/ja-jp/azure/iot-hub/tutorial-manual-failover --デバイスの構成~ https://learn.microsoft.com/ja-jp/azure/iot-hub/tutorial-device-twins --デバイスの更新を管理する~ https://learn.microsoft.com/ja-jp/azure/iot-hub-device-update/device-update-raspberry-pi --デバイス接続のテスト~ https://docs.microsoft.com/ja-jp/azure/iot-hub/tutorial-connectivity --Power BI でのデータ視覚化 -デバイス開発 --loT Hubを使用してデバイスソリユーションを構築する ---IoT Plug and Playに必要な IoT リソースを設定する~ https://learn.microsoft.com/ja-jp/azure/iot-develop/set-up-environment ---IoT Plug and Playのサンプル デバイス コードを Azure IoT Hub に接続する(C, C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-develop/tutorial-connect-device ---お使いの Azure IoT ソリューションに接続されている IoT Plug and Play デバイスを操作する(C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-develop/tutorial-service ***操作方法ガイド [#bac9b6b6] -管理する --IoT Hub を作成する ---Azure Portal を使用して IoT Hub を作成する~ https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-create-through-portal~ ---PowerShell コマンドレットを使用して Azure IoT Hub を作成する~ https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-create-using-powershell~ ---Azure CLI を使用して IoT Hub を作成する~ https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-create-using-cli~ ---テンプレートを使用した Azure IoT Hub の作成 (.NET)~ https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-rm-template --ファイルのアップロードを構成する~ ---Azure Portal を使用して IoT Hub ファイルのアップロードを構成する~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-configure-file-upload~ ---PowerShell を使用して IoT Hub ファイルのアップロードを構成する~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-configure-file-upload-powershell~ ---Azure CLI を使用して IoT Hub ファイルのアップロードを構成する~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-configure-file-upload-cli -開発 --C2Dメッセージの送信(C#, Node.js, Python, Java, iOS)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-c2d --デバイス ツインを使ってみる。(C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-twin-getstarted --モジュール ツインを使ってみる。(C, C#, Node.js, Python)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-module-twin-getstarted --デバイス管理の開始(C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-device-management-get-started --デバイスからファイルをアップロードする(C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-file-upload --ジョブのスケジュールとブロードキャスト(C#, Node.js, Python, Java)~ https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-csharp-csharp-schedule-jobs -モニター -更新プログラムの展開 -IoTの拡張シナリオ ---- Tags: [[:クラウド]], [[:IoT]], [[:Azure]]