-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureIoTEdgeTutorial
- 戻る(Azure IoT Edge)
- Azure IoT Hubチュートリアル
- Azure IoT Centralチュートリアル
- Azure IoT Edgeチュートリアル
Azure IoT Edge の様々なモジュールをデプロイしていくチュートリアル。
- Marketplace モジュール
- カスタム・モジュール
- Azure の PaaS や SaaS モジュール
補足(IoT Edge のモジュールとは): IoT Edge の「モジュール」は
エッジ デバイス上で動く Docker コンテナである。
クラウド側(IoT Hub)から「どのイメージをどう配置するか」を
デプロイ マニフェスト(deployment.template.json)で指示すると、
デバイス上の IoT Edge ランタイムがそれを取得して起動する。
本ページの 3 種類は「そのイメージをどこから持ってくるか」の違いにあたる。
Azure IoT Hub の作成は、Azure IoT Hubチュートリアルへ。
-
とりあえず Marketplace モジュールのデプロイだけやってみる。
-
以下の2つのクイック スタートがあるが、
- Windows デバイスへのコードのデプロイ
https://docs.microsoft.com/ja-jp/azure/iot-edge/quickstart - Linux デバイスへのコードのデプロイ
https://docs.microsoft.com/ja-jp/azure/iot-edge/quickstart-linux
Windows で Azure IoT EFLOW と言うエミュレータを使用するか、
ARM テンプレートで Linux の Azure VM をデプロイして試すか、2通りの方法がある。 - Windows デバイスへのコードのデプロイ
-
- 利用環境はローカルでなくても良い模様。
- Docker が提案されていたが、WSL でも良いものと思われる。
- 更に言えば、Azure Cloud Shellでも良いものと思われる
(...と言うか、実際にAzure Cloud Shellでやった)。
-
IoT Edge デバイス
以下のどちらでも構築可能。- Windows
- Linux
補足(EFLOW は Linux VM): Azure IoT EFLOW(Edge for Linux on Windows)は
「Windows でも動く」というより、Windows のハイパーバイザ上で
専用の Linux VM を動かす仕組みである。
IoT Edge のモジュールは Linux コンテナなので、実体は常に Linux 上で動く。
-
az iot hub create --resource-group XXXX --name XXXX --sku F1 --partition-count 2 -
IoT Edge デバイスを登録
- デバイスをハブに作成
- デバイスの接続文字列を確認
-
IoT Edge デバイスの設定
-
Windows の場合はローカルに EFLOW を構成
-
Linux の場合は ARM テンプレートで Azure VM をデプロイ
-
以下は Linux を個別に設定する際のシェル。
curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list sudo mv ./microsoft-prod.list /etc/apt/sources.list.d/ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv ./microsoft.gpg /etc/apt/trusted.gpg.d/ sudo apt-get update sudo apt-get install -y moby-engine moby-cli sudo apt-get install -y iotedge sudo vi /etc/iotedge/config.yaml sudo systemctl restart iotedge systemctl status iotedge sudo iotedge list
その後、コンフィグ手順は下記参照。
https://learn.microsoft.com/ja-jp/azure/iot-edge/how-to-provision-devices-at-scale-linux-symmetric -
補足(
config.yamlは現在config.toml): 上記の手順は
**IoT Edge 1.1(iotedgeパッケージ、設定はconfig.yaml)**のものである。
1.4 以降はaziot-edgeパッケージになり、設定ファイルも
/etc/aziot/config.tomlに変わっている
(iotedge config applyで適用する)。
moby-engineを使う点は変わらない。
-
IoT Edge モジュールを展開
Marketplace モジュール(Simulated Temperature Sensor) -
生成されたデータを表示する
コンテナ内部にログインして Shell(Bash)で。
-
次にカスタム・モジュールの開発とデプロイをやってみる。
-
以下の2つのチュートリアルがあるが、
-
Visual Studio Code を使用して
- IoT Edge モジュールを開発する
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-develop-for-linux - Azure IoT Edge モジュールをデバッグする
https://learn.microsoft.com/ja-jp/azure/iot-edge/debug-module-vs-code
- IoT Edge モジュールを開発する
-
Visual Studio 2022 を使用して Azure IoT Edge 用のモジュールを開発してデバッグする
https://learn.microsoft.com/ja-jp/azure/iot-edge/how-to-visual-studio-develop-module
いずれも Windows で Azure IoT EFLOW と言うエミュレータを使用する。
ここでは、サポート範囲の広い Visual Studio Code を使用した手順のみ実施する。 -
移行メモ(脱字): 「次にカスタム・の開発とデプロイをやってみる。」の
脱字を「カスタム・モジュールの」に補った。
-
.NET Core SDK と VSCode、C# の VSCode 拡張をインストールしておく。
-
Azure IoT Edge 関連のツールについては、
-
色々調査すると、言語の VSCode 拡張と Azure IoT Tools for VSCode を
インストールすれば良さそうだが、 -
今は、Azure IoT Tools for VSCode がメンテナンス・モードなので、
iotedgedevの CLI を単体使いしろと言う事らしい。 -
なお、Azure IoT Tools for VSCode の依存関係として
iotedgedevが含まれていた模様。
iotedgedevのランタイムは Python。pip list pip freeze > uninstall.txt pip uninstall -y -r uninstall.txt pip install -U iotedgedev
-
-
参考
- Azure IoT Edge #4 - Edgeモジュールの開発環境構築 - YouTube
https://www.youtube.com/watch?v=-ztATJCcBWQ - iotedgedev · PyPI
https://pypi.org/project/iotedgedev/ - iotedgedev/docs/environment-setup/manual-dev-machine-setup.md at main · Azure/iotedgedev
https://github.com/Azure/iotedgedev/blob/main/docs/environment-setup/manual-dev-machine-setup.md - iotedgedev/docs/environment-setup/run-devcontainer-docker.md at main · Azure/iotedgedev
https://github.com/Azure/iotedgedev/blob/main/docs/environment-setup/run-devcontainer-docker.md
- Azure IoT Edge #4 - Edgeモジュールの開発環境構築 - YouTube
補足(上記の pip コマンドに注意):
pip freeze > uninstall.txt→
pip uninstall -y -r uninstall.txtは
環境内のパッケージを全部消す操作である。
グローバルの Python 環境で実行すると他のツールも巻き添えになるため、
実際には venv などの仮想環境を作ってからiotedgedevを入れるのが安全である。
デプロイに Container Registry としてAzure Container Registryを使う。
-
以下の CMD のコマンドで C# の Solution・Project を準備
mkdir iotedgesolution cd iotedgesolution iotedgedev solution init --template csharp -
以下を含むいくつかのステップを完了するよう促す
- Azure への認証
- Azure サブスクリプションの選択
- リソースグループを選択または作成
- Azure IoT Hub を選択または作成
- Azure IoT Edge デバイスの選択または作成
-
ファイルの修正
ココのシェルは VSCode の GitBash ターミナルで実行する。
- ユーザ ID とパスワードで Azure Container Registry にログイン。
az login
AcrName=osscjpdevinfra
echo $AcrName
RegistryName=$(az acr show --name $AcrName --query loginServer --output tsv)
echo $RegistryName
Password=$(az acr credential show --name $RegistryName --query "passwords[0].value" | sed 's/"//g')
echo $Password
az acr login -n $RegistryName
docker login $RegistryName -u $AcrName -p $Password- カスタム・モジュールのコンテナを、ビルド、プッシュ、セット
subscriptionID=$(az account show --query id --output tsv)
userPrincipalName=$(az ad signed-in-user show --query userPrincipalName --output tsv)
location=westus2
hmsRgName=HmsRG
iotHubName=OsscJpDevInfra
iotEdgeID=myedge1
hubConnectionString=$( \
az iot hub connection-string show \
-n $iotHubName \
--key primary \
--query connectionString -o tsv)
docker build --rm -f "./modules/filtermodule/Dockerfile.amd64.debug" -t osscjpdevinfra.azurecr.io/filtermodule:0.0.1-amd64 "./modules/filtermodule"
docker push osscjpdevinfra.azurecr.io/filtermodule:0.0.1-amd64
az iot edge set-modules --hub-name $iotHubName --device-id $iotEdgeID --content ./deployment.template.json --login $hubConnectionString補足(
--contentに渡すファイル): 上のコマンドは
deployment.template.jsonを直接渡しているが、
テンプレートには${MODULES.filtermodule}のような変数が含まれるため、
本来はiotedgedev buildなどで変数を解決した
config/deployment.amd64.jsonを渡す。
「エラー発生中」に至らずに済ませるための実務上の注意点である。
移行メモ(未記述): 元ページは本節の導入が「ここでは、」で途切れていた。
以降の小節(ローカル環境準備・Solution/Project の準備・コンテナ化)は
記述されているため、そのまま移行した。
Azure Functions や Stream Analytics などの Azure サービスを
モジュールとしてエッジにデプロイする。
以下の VSCode 拡張をインストールしておく。
- Azure IoT Hub
- Azure IoT Edge
- コマンド パレットで、
Azure IoT Edge: New IoT Edge solutionコマンドを使う。 - 手順に従って、Solution・Project の設定や、Module のコードを修正する。
- カスタム・モジュールと同様の手順になるが
- コンテナのビルド、プッシュ、セットは、
deployment.template.jsonの
コンテキスト・メニューから実行。
-
IoT Edge を触ってみた
https://qiita.com/TsuyoshiUshio@github/items/cff85d6d4428dddace06 -
IoT Edge の Azure Functions を試して見た
-
Getting started with Azure IoT Edge development
https://www.youtube.com/watch?v=EruRSHLKnv8 -
Getting Started with Azure IoT Edge
https://www.youtube.com/watch?v=HDPaFbv3DQI
https://www.youtube.com/@motojindotcom
- Azure IoT Edge
- #1 - Azure IoT Edge について
https://www.youtube.com/watch?v=UsxycuFpC8c - #2 - Azure IoT Edge Runtime のインストール
https://www.youtube.com/watch?v=SvB1gSjlMNM - #3 - AzureポータルからEdgeモジュールのデプロイ
https://www.youtube.com/watch?v=9fXZemGKKy8 - #4 - Edgeモジュールの開発環境構築
https://www.youtube.com/watch?v=-ztATJCcBWQ - #5 - 簡単なカスタムモジュール作成
https://www.youtube.com/watch?v=CM-VZiyv908 - #6 - Module Twin : Properties
https://www.youtube.com/watch?v=12tHMY3ZSA8 - #7 - Module Direct Method
https://www.youtube.com/watch?v=vGgm2pTQVlM - #8 - Deploy the Azure Blob Storage on IoT Edge
https://www.youtube.com/watch?v=nDCTiQjm4Uw - #9 - Store data to Azure Blob Storage on IoT Edge
https://www.youtube.com/watch?v=gxRQXpdHdGw
- #1 - Azure IoT Edge について
-
Azure IoT Edge - チュートリアル、API リファレンス
https://docs.microsoft.com/ja-jp/azure/iot-edge/-
クイック スタート
- Windows デバイスへのコードのデプロイ
https://docs.microsoft.com/ja-jp/azure/iot-edge/quickstart - Linux デバイスへのコードのデプロイ
https://docs.microsoft.com/ja-jp/azure/iot-edge/quickstart-linux
- Windows デバイスへのコードのデプロイ
-
チュートリアル
- モジュールを開発する
- Visual Studio Code を使用して IoT Edge モジュールを開発する
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-develop-for-linux - Visual Studio 2022 を使用して Azure IoT Edge 用のモジュールを開発してデバッグする
https://learn.microsoft.com/ja-jp/azure/iot-edge/how-to-visual-studio-develop-module
- Visual Studio Code を使用して IoT Edge モジュールを開発する
- Azure サービスをモジュールとしてデプロイする
- Azure Functions を使用したデータのフィルター処理
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-deploy-function - Azure Stream Analytics を使用して平均値を見つける
https://docs.microsoft.com/ja-jp/azure/iot-edge/tutorial-deploy-stream-analytics - Custom Vision を使用したイメージの分類
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-deploy-custom-vision - SQL を使用したローカルへのデータの格納
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-store-data-sql-server
- Azure Functions を使用したデータのフィルター処理
- ゲートウェイとしての IoT Edge の使用
https://docs.microsoft.com/ja-jp/azure/iot-edge/tutorial-nested-iot-edge - デバイスとモジュールを監視する
https://learn.microsoft.com/ja-jp/azure/iot-edge/tutorial-monitor-with-workbooks
- モジュールを開発する
-
- Azure IoT Edge
- Azure IoT Hubチュートリアル
- Azure IoT Centralチュートリアル
- Azure Container Registry
- Azure CLI / Azure Cloud Shell
Tags: クラウド, IoT, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。