-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureIoTHubTutorial
- 戻る(Azure IoT Hub)
- Azure IoT Hubチュートリアル
- Azure IoT Centralチュートリアル
- Azure IoT Edgeチュートリアル
-
- Device Endpoint にデバイスを
- Service Endpoint にサービスを
繋いでいくチュートリアル
-
以下を接続する。
-
Device Endpoint
-
Service Endpoint
補足(Device / Service Endpoint): Azure IoT Hubは
デバイス側とバックエンド側の双方に別々のエンドポイントを持つ中継役である。
デバイスは Device Endpoint に繋いでテレメトリを送り(D2C)、
バックエンドは Service Endpoint からそれを読む。
逆向き(C2D、ダイレクト メソッド)も同じ 2 つのエンドポイントを通る。
本ページはその両側にひととおり繋いでみる構成になっている。
Free レベルを選択できるらしい。
パラメタは以下の感じで。
- リソース・グループ:
HmsRG - Region:
westus2 - IoT Hub 名:
OsscJpDevInfra - DPS 名:
OsscJpDevInfra - スケーリング レベルとユニット:F1(Free レベル)
補足(DPS とは): DPS(Device Provisioning Service)は、
デバイスを IoT Hub に自動で登録・割り当てするサービスである。
1 台ずつ接続文字列を焼き込む代わりに、
出荷時に共通の資格情報だけ持たせておき、
初回接続時に DPS が「どの IoT Hub に属すか」を決めて登録する。
台数が多い量産デバイスで効いてくる。
-
IoT Hub
-
サービス > IoT Hub に移動
-
[IoT ハブ作成] ボタンを押下
-
上記のパラメタを設定
-
[確認および作成] → [作成] ボタンを押下。
-
デプロイが完了したら [リソースに移動] ボタンを押下。
-
IoT Hub への接続文字列
IoT Hub の共有アクセス ポリシーの
iothubownerのプライマリ接続文字列から取得。
-
-
DPS
...
移行メモ(未記述): ポータルでの DPS の作成手順は
「...」のみで書かれていなかった。
シェルでの手順は次節にある。
著者による本文が加筆された場合は置き換えること。
補足(
iothubownerは強すぎる):iothubownerは
すべての権限を持つ共有アクセス ポリシーである。
チュートリアルでは手軽さのために使うが、実運用では
用途ごとに権限を絞ったポリシー(service/registryReadなど)か、
Microsoft Entra ID による認証を使う。
- リソース・グループ
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
-
-
最新のインストーラーを取得する。
https://github.com/Azure/azure-iot-explorer/releases -
既定値でインストールを行う。
-
起動して [Add connection] する。
-
接続文字列の入力欄にIoT Hub への接続文字列を貼り付けて [Save] ボタンを押下する。
(パブリック モデル リポジトリとは?)
- ホーム ビューで、 [IoT プラグ アンド プレイの設定] を選択。
- [+ 追加] を選択して [パブリック リポジトリ] を選択。
- パブリック モデル リポジトリのエントリが表示される。
- [保存] を選択。
補足(パブリック モデル リポジトリとは): 著者の疑問に答えると、
これは IoT Plug and Play のデバイス モデル(DTDL)を公開している
共有リポジトリである(devicemodels.azure.com)。
デバイスが接続時に「自分はこのモデル ID です」と申告すると、
ツール側がこのリポジトリからモデル定義を取得し、
そのデバイスがどんなテレメトリ・プロパティ・コマンドを持つかを
自動的に画面に表示できるようになる。
後述の「IoT Plug and Play デバイス」のサンプルで使われる仕組み。
-
デバイス管理 > デバイス > デバイスの追加と進み
-
以下の値を入力
- デバイスの作成で以下を入力する。
- デバイス ID:
mydevice1 - 認証の種類:対称キー、自動生成キー[✔]
- このデバイスを IoT ハブに接続する:有効化
-
[保存] ボタンを押下し
デバイスを追加する。
-
-
追加したデバイスのページに移動し、
- デバイスから IoT Hub への接続文字列を取得しておく。
-
通常のデバイス
-
デバイス 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
-
- ホーム ビューで、 [IoT Hub] を選択。
- 接続が表示され接続プロパティの下の [View devices in this hub] を選択。
- [+ 新規] を選択し、デバイス ID:
mydevice1を入力し [作成] を選択。 - [プライマリ接続文字列] フィールドからデバイスから IoT Hub への接続文字列をコピー。
移行メモ(未記述): 元ページは本節が見出しのみで本文が書かれていなかった。
ポータルでは、IoT Hub のリソース画面の
[監視] > [メトリック] や [デバイス管理] > [デバイス] から確認する
(テレメトリの中身をリアルタイムに見るには、次節のシェルか
Azure IoT Explorer を使う)。
著者による本文が加筆された場合は置き換えること。
Azure Cloud Shellの別セッション(≒ 別タブ)で実行
az iot hub monitor-events --output table -p all -n OsscJpDevInfra追加したデバイスのテレメトリを受信
- デバイスを選択し、
- テレメトリを選択し、
- [Start] を押下してテレメトリを受信
(Raspberry Pi(DNET_RaspberryPi.md))
-
デバイス監視の設定を行っておく。
-
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」が確認できる。
-
-
デバイス監視の設定を別セッション(≒タブ)で行っておく。
-
シミュレータの生成
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
-
シミュレータの生成のセッション(≒タブ)でも確認可能。
-
-
補足(desired と reported): デバイス ツインのプロパティは
**desired(クラウドが「こうしてほしい」と書く側)**と
**reported(デバイスが「今こうです」と書き返す側)**に分かれている。
上のコマンドが更新するのは前者、確認しているのは後者であり、
デバイスが desired を受け取って反映し、reported に書き戻すまで
両者は一致しない。
「クイックスタート」
「チュートリアル」から、
Node.js のサンプルが多いが、やっぱり C# を選択。
-
デバイス監視の設定を別セッション(≒タブ)で行っておく。
-
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/
Azure Stream Analyticsを経由して以下に接続する。
-
-
-
ポータル
・ジョブ名:IoT2Storage
・[Add input] を押下してストリーム入力の追加から [IoT Hub] を選択し既定値で設定
・[Add output] を押下して追加から [Blob ストレージ] を選択し既定値で設定
・[Write query]([Edit query])を押下すると、
・入力・出力がエイリアスで自動設定されているので [クエリのテスト] で動作を確認。
・最後に作成したジョブに戻って [開始] ボタンを押下する。 -
シェル
...
-
-
Power BI
組織アカウントが必要だった。
組織アカウントが必要だった。
補足(Time Series Insights は終了): Azure Time Series Insights は
2024 年 7 月に提供終了した。
時系列データの蓄積・可視化は、現在
Azure Data Explorer や **Microsoft Fabric(Real-Time Intelligence)**が
引き継いでいる。
-
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/
-
【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
-
ようやく始める Azure IoT Hub
https://qiita.com/hydrangeas/items/dc725e6cc6a38717e932 -
Azure IoTのチュートリアルをやってみた
-
Azure IoT Hub へのデータ送信と Azure Stream Analytics による可視化
の下準備を試す(公式ドキュメントやサンプルをピックアップしつつ)
https://qiita.com/youtoy/items/0ca9be93c9189e71b5d1
-
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
-
- 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
- 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
- 【連載第1回】
- 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
-
【 #初心者 向け】#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
- Azure IoT エクスプローラーをインストールして使用する
https://docs.microsoft.com/ja-jp/azure/iot-fundamentals/howto-use-iot-explorer
-
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
-
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
-
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
- IoT Plug and Play に必要な IoT リソースを設定する
- loT Hub を使用してデバイスソリユーションを構築する
-
管理する
-
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 を作成する
-
ファイルのアップロードを構成する
- 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
- Azure Portal を使用して IoT Hub ファイルのアップロードを構成する
-
-
開発
- 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
- C2D メッセージの送信(C#, Node.js, Python, Java, iOS)
-
モニター
-
更新プログラムの展開
-
IoT の拡張シナリオ
- Azure IoT Hub
- Azure IoT Centralチュートリアル
- Azure IoT Edgeチュートリアル
- Azure Stream Analytics
- Azure Cloud Shell
Tags: クラウド, IoT, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。