「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Azure IoT Edge]]
--[[Azure IoT Hubチュートリアル]]
--[[Azure IoT Centralチュートリアル]]
--Azure IoT Edgeチュートリアル

* 目次 [#h95371d4]
#contents

*概要 [#a9ae138d]
Azure IoT Edgeの様々なモジュールをデプロイしていくチュートリアル。
-Marketplaceモジュール
-カスタム・モジュール
-AzureのPaaSやSaaSモジュール

*詳細 [#j36facc7]
Azure IoT Hubの作成は、[[Azure IoT Hubチュートリアル]]へ。

**Marketplaceモジュールのデプロイ [#l7861a25]
-とりあえず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のAzureVMをデプロイして試すか、2通りの方法がある。

***前提 [#t644af72]
-[[Azure CLI]]

--利用環境はローカルでなくても良い模様。
--Dockerが提案されていたが、WSLでも良いものと思われる。
--更に言えば、[[Azure Cloud Shell]]でも良いものと思われる~
(...と言うか、実際に[[Azure Cloud Shell]]でやった)。

-IoT Edge デバイス~
以下のどちらでも構築可能。
--Windows
--Linux

***準備 [#e6697321]
-[[IoT Hub の作成>Azure IoT Hubチュートリアル]]
 az iot hub create --resource-group XXXX --name XXXX --sku F1 --partition-count 2

-IoT Edge デバイスを登録
--デバイスをハブに作成
--デバイスの接続文字列を確認

-IoT Edge デバイスの設定
--Windowsの場合はローカルにEFLOWを構成
--Linuxの場合はARMテンプレートでAzureVMをデプロイ
--以下は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

***実行 [#ha04e490]
-IoT Edgeモジュールを展開~
Marketplaceモジュール(Simulated Temperature Sensor)

-生成されたデータを表示する~
コンテナ内部にログインしてShell(Bash)で。

**カスタム・モジュールの開発とデプロイ [#gd8a76e3]
-次にカスタム・の開発とデプロイをやってみる。

-以下の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

--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 を使用した手順のみ実施する。

***ローカル環境準備 [#r84a6b2d]
-.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

***Container Registryの準備 [#we4db7f6]
デプロイにContainer Registryとして[[Azure Container Registry]]を使う。

***C#のSolution・Projectの準備 [#vd646b2f]
-以下のCMDのコマンドでC#のSolution・Projectを準備
 mkdir iotedgesolution
 cd iotedgesolution
 iotedgedev solution init --template csharp

-以下を含むいくつかのステップを完了するよう促す
--Azureへの認証
--Azure サブスクリプションの選択
--リソースグループを選択または作成
--Azure IoT Hub を選択または作成
--Azure IoT Edge デバイスの選択または作成

-ファイルの修正
--https://github.com/OpenTouryoProject/HubAndMsgSrv/pull/5/files?w=1

***カスタム・モジュールのコンテナ化 [#g93a1a1c]
ココのシェルは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

**PaaS・SaaSモジュールのデプロイ [#p0480e00]
ここでは、

***ローカル環境準備 [#m1ab4e17]
以下のVSCode拡張をインストールしておく。
-Azure IoT Hub
-Azure IoT Edge

***C#のSolution・Projectの準備 [#tdcf0b19]
-コマンド パレットで、Azure IoT Edge: New IoT Edge solution コマンドを使う。
-手順に従って、Solution・Projectの設定や、Moduleのコードを修正する。

***PaaS・SaaSモジュールのコンテナ化 [#aef13fb9]
-[[カスタム・モジュールと同様の手順になるが>#g93a1a1c]]
-コンテナのビルド、プッシュ、セットは、deployment.template.jsonのコンテキスト・メニューから実行。

*参考 [#g2d2f6c1]
-実施内容はコチラを参照。~
https://github.com/OpenTouryoProject/HubAndMsgSrv/tree/develop/Hub/Edge

**Qiita [#ibf0265e]
-IoT Edge を触ってみた~
https://qiita.com/TsuyoshiUshio@github/items/cff85d6d4428dddace06

-IoT Edge の Azure Functions を試して見た
--(1)~
https://qiita.com/TsuyoshiUshio@github/items/cf5ffc1e0360b7115815

--(2)~
https://qiita.com/TsuyoshiUshio@github/items/91bcf03e3a0446c1b495

**YouTube [#naea243e]
-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

***motojin・com [#nd7697b9]
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

**microsoft.com [#e11cb5e8]

***Microsoft Docs [#f2cdf134]
-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

--チュートリアル
>
+モジュールを開発する
--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
+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
+ゲートウェイとしての 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

----
Tags: [[:クラウド]], [[:IoT]], [[:Azure]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS