【 Cloud 】透過 Azure Kubernetes Service 將 Azure IoT Hub 所接收到的數據存入 Azure Digital Twins 再透過 Azure Event Hub 將警示資訊傳送到 Azure Indoor Map
學習目標
- 如何透過
Azure Kubernetes Service
將Azure IoT Hub
所接收到的數據存入Azure Digital Twins
再透過Azure Event Hub
將警示資訊傳送到Azure Indoor Map
。
前置準備作業
- 已建立 Azure 帳號並能正常登入與使用。
- 已於電腦端安裝 IDE,本範例使用 Visual Studio Code
- 已於電腦端安裝 Node.js
- 已於電腦端安裝 Docker Engine
- 已於電腦端安裝 Azure CLI
- 已於電腦端安裝 kubectl
流程
- 建立 Azure Maps Accounts Service
- 透過 Creator 建立 Azure Indoor Map
- 建立 Feature State
- 透過 Azure Maps Indoor Maps module 取得 Feature ID
- 建立 Azure Digital Twin Service
- 透過 Azure Digital Twins Explorer 上傳 DTDL 到 Azure Digital Twins
- 透過 Azure Digital Twins Explorer 建立 Twin 並初始化 Temperature 為 168
- 建立 Azure IoT Hub 與 Device ID 並取得 Device Connection String
- 將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure IoT Hub 所取得的數據傳到 Azure Digital Twin
- 建立與設定 Azure Event Hub
- 將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure Digital Twins 的警示資訊傳送到 Azure Indoor Map
- 在 Azure Digital Twins 中建立 Endpoint 讓 Event Hub 連結至 Azure Digital Twins,再建立 Event Route 將對應的更新事件傳送至 Endpoint
- 撰寫隨機產生溫度數據的程式並將數據傳送到 Azure IoT Hub
- 透過 Azure Digital Twins Explorer 查看所建立的 Twin 裡的 Temperature 是否有更新
- 透過 Azure Maps Indoor Maps module 查看所對應的 Feature ID 是否有更新
目錄結構
- 本範例目錄結構如下
└── aks-deploy-adt-map
├── adt_to_map
│ ├── app.js
│ ├── package-lock.json
│ └── package.json
├── docker-manifests
│ ├── Dockerfile-ADT-To-Map
│ └── Dockerfile-Hub-To-ADT
├── hub_to_adt
│ ├── adtService.js
│ ├── app.js
│ ├── package-lock.json
│ └── package.json
├── kube-manifests
│ ├── 01-Deployment-Hub-To-Adt.yml
│ └── 02-Deployment-Adt-To-Map.yml
└── pnp
├── package-lock.json
├── package.json
└── send.js
建立 Azure Maps Service
Step 1. 登入到 Azure
- 請在終端機輸入下方指令
az login
Step 2. 建立 Azure 資源群組
- 請在終端機輸入下方指令
az group create --name ResourceGroupName --location Region
-
修改指令中的
ResourceGroupName
成唯一且可識別的名稱。 -
修改指令中的
Region
請輸入資源部署於何處。- 可輸入
az account list-locations -o table
指令查看可用區域
- 可輸入
-
本範例使用指令如下
az group create --name adtToMap --location eastus2
-
Step 3. 建立 Azure Maps Account
- 請在終端機輸入下方指令
az maps account create --kind Gen2 --account-name MapAccountName --resource-group ResourceGroupName --sku G2
-
修改指令中的
MapAccountName
成唯一且可識別的名稱。 -
修改指令中的
ResourceGroupName
為Step 2
的名稱。 -
本範例使用指令如下
az maps account create --kind Gen2 --account-name adtToMap --resource-group adtToMap --sku G2
-
Step 4. 建立 Creator
-
請在終端機輸入下方指令
az maps creator create --location eastus2 --storage-units 1 --account-name MapAccountName --creator-name CreatorName --resource-group ResourceGroupName
-
修改指令中的
MapAccountName
為Step 3
的名稱。 -
修改指令中的
CreatorName
成唯一且可識別的名稱。 -
修改指令中的
ResourceGroupName
為Step 2
的名稱。 -
本範例使用指令如下
az maps creator create --location eastus2 --storage-units 1 --account-name adtToMap --creator-name adtToMapCreator --resource-group adtToMap
-
Step 5. 取得 Azure Map Primary Key
- 請在終端機輸入下方指令
az maps account keys list --name MapAccountName --resource-group ResourceGroupName
-
修改指令中的
MapAccountName
為Step 3
的名稱。 -
修改指令中的
ResourceGroupName
為Step 2
的名稱。 -
本範例使用指令如下
az maps account keys list --name adtToMap --resource-group adtToMap
-
透過 Creator 建立 Azure Indoor Map
Step 1. 請透過下方教學網頁的步驟取得 Conversion ID
、Dataset ID
、Tileset ID
- https://learningsky.io/use-web-ui-creator-rest-api-to-create-indoor-map-azure-indoor-map-tools/
- ㊟
Azure Map Primary Key
請輸入建立 Azure Maps Service
段落中Step 5
所取得的Azure Map Primary Key
- ㊟
Step 2. 本範例執行完 Step 1
的結果如下
建立 Feature State
Step 1. 設定 Style 樣式
- 在本地端電腦建立
Number-Style-Rules.json
的檔案並輸入以下內容-
Number-Style-Rules.json
設定檔說明Style
的名稱設定為temperature01
、type
設為number
,其數值的範圍與對應的顏色設定如下 :
Temperature 顏色 0 ~ 19 紅色 ( #e71313 ) 20 ~ 39 藍色 ( #3f0feb )
-
Step 2. 透過瀏覽器開啟設定頁面
Step 3. 輸入相關資訊
Azure Map Primary Key
欄位請輸入建立 Azure Maps Service
段落中Step 5
所取得的Azure Map Primary Key
。Dataset ID
欄位請輸入透過 Creator 建立 Azure Indoor Map
段落中Step 1
所取得Dataset ID
- 點選
匯入 JSON
按鈕選擇Step 1
的檔案
Step 4. 設定 Style
- 點選
設定 Style
按鈕
- 執行完結果
- 請紀錄
Stateset ID
的結果值
- 請紀錄
透過 Azure Maps Indoor Maps module 取得 Feature ID
Step 1. 透過瀏覽器開啟執行頁面
網址為 https://archerhuang.github.io/Azure-Indoor-Map-Tools/Indoor-Map/
Step 2. 輸入相關資訊
Azure Map Primary Key
欄位請輸入建立 Azure Maps Service
段落中Step 5
所取得的Azure Map Primary Key
。Tileset ID
欄位請輸入透過 Creator 建立 Azure Indoor Map
段落中Step 1
所取得Tileset ID
Stateset ID
欄位請輸入建立 Feature State
段落中Step 4
所取得Stateset ID
- 當輸入完成後點選
顯示 Map
按鈕
Step 3. 顯示 Map 結果
- 結果顯示
- 請 Zoom In 地圖
- 點選各房間可取得對應的
Feature ID
,本範例點選左上角的房間以取得對應的Feature ID
為UNIT61
- 點選各房間可取得對應的
建立 Azure Digital Twin Service
Step 1. 開啟 Azure Digital Twin
- 在上方搜尋框輸入
digital twin
並點選下方Azure Digital Twins
的搜尋結果
Step 2. 建立 Azure Digital Twin
- 點選左上角的
+ Create
Step 3. 輸入相關資訊
Subscription
欄位選擇所要使用的訂閱。Resource group
欄位輸入此 Digital Twins 所要歸屬的群組。Resource Name
欄位輸入一個可識別的名稱,本範例使用adtToMap
。Region
欄位請選擇 Digital Twins 服務所要位於的資料中心。- 勾選
Assign Azure Digital Twins Data Owner Role
欄位。 - 當輸入完成後點選
Review + create
。
Step 4. 建立服務
- 確認資訊正確則點選
Create
。
Step 5. 點選 Go to resource
Step 6. 取得 Host name
透過 Azure Digital Twins Explorer 上傳 DTDL 到 Azure Digital Twins
Step 1. 在本地端電腦建立 device.json
的 DTDL 檔案並填入下方資料
Step 2. 開啟 Azure Digital Twins Explorer
- 點選所建立的
Azure Digital Twins
> 再點選Overview
> 點選上方的Open Azure Digital Twins Explorer (preview)
- 如開啟
Azure Digital Twins Explorer
出現RestError: Unauthorized
或right permissions
的錯誤訊息,請稍後幾分鐘再重新點選Azure Digital Twins Explorer
- 如過幾分鐘後點選
Azure Digital Twins Explorer
還是出現上述問題,請確認Azure Digital Twins Data Owner
是否有指派- 點選左側的
Access control (IAM)
> 再點選Check access
頁籤 > 再點選View my access
> 確認 Role 中是否有指派Azure Digital Twins Data Owner
角色
- 點選左側的
- 如未指派
Azure Digital Twins Data Owner
角色-
點選左側的
Access control (IAM)
> 再點選Add role assignment
-
點選
Azure Digital Twins Data Owner
> 再點選Next
-
Assign access to
欄位點選User, group, or service principal
、Members
欄位點選+ Select members
,並選擇成員後點選Select
-
以上資訊輸入完成後點選
Review + assign
-
再次確認
Azure Digital Twins Data Owner
角色- 點選左側的
Access control (IAM)
> 再點選Check access
頁籤 > 再點選View my access
> 確認 Role 中是否有指派Azure Digital Twins Data Owner
角色
- 點選左側的
-
指定
Azure Digital Twins Data Owner
角色完再稍後幾分鐘重新點選Azure Digital Twins Explorer
即可正常使用。
-
Step 3. 上傳 DTDL
- 點選
Upload a Model
按鈕
- 選擇
Step 1
所建立的device.json
檔案並點選打開
- 上傳完成
透過 Azure Digital Twins Explorer 建立 Twin 並初始化 Temperature 為 168
Step 1. 建立 Twin
- 點選
...
> 再點選Create a Twin
- 在
New Twin name
欄位請輸入透過 Azure Maps Indoor Maps module 取得 Feature ID
段落Step 3
所取得的Feature ID
> 再點選Save
- 建立完成
Step 2. 初始化
- 點選所建立的 Twin
- 新增初始化數字
168
- 點選儲存按鈕
- 初始化成功
建立 Azure IoT Hub、Device ID 並取得 Device Connection String
Step 1. 在上方搜尋框輸入 iot hub
關鍵字並點選 IoT Hub
的搜尋結果
Step 2. 點選 + Create
Step 3. 輸入相關資訊
Subscription
欄位選擇所要使用的訂閱。Resource group
欄位輸入此 IoT Hub 所要歸屬於的群組。IoT Hub Name
欄位輸入一個可識別的名稱,本範例使用adtToMap
。Region
欄位擇此 IoT Hub 要建置於哪個資料中心。- 當輸入完成後點選
Review + create
Step 4. 建立服務
- 確認資訊正確則點選
Create
Step 5. 點選 Go to resource
Step 6. 取得 IoT Hub 中的 Device Connection String
- 點選
Devices
>+ Add Device
- 輸入相關資訊
Device ID
欄位請輸入透過 Azure Maps Indoor Maps module 取得 Feature ID
段落Step 3
所取得的Feature ID
,本範例為UNIT61
- 當輸入完成後點選
Save
- 點選所建立的 Device
- 取得
Device Connection String
- 點選
Primary Connection String
右側的複製按鈕
- 點選
將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure IoT Hub 所取得的數據傳到 Azure Digital Twin
Step 1. 取得 Azure IoT Hub 中 Event Hub 的名稱與 Event Hub 的 Connection String
- 進入到所建立的
Azure IoT Hub
> 點選左側的Built-in endpoints
Event Hub-compatible name
中的值為Event Hub
的名稱
。Event Hub-compatible endpoint
中的值為Event Hub
的Connection String
。
Step 2. 進行初始化
- 請在專案目錄中建立
hub_to_adt
資料夾並透過終端機切換路徑到hub_to_adt
資料夾中並輸入下方指令npm init -y
Step 3. 安裝套件
- 請在終端機輸入下方指令
npm i @azure/event-hubs @azure/identity axios dotenv
Step 4. 撰寫 adtService.js
程式
- 在
hub_to_adt
資料夾中建立adtService.js
檔案後再輸入以下程式
Step 5. 撰寫 app.js
程式
- 在
hub_to_adt
資料夾中建立app.js
檔案後再輸入以下程式- 請修改
第 6 行
中的請輸入 ADT Host name
為建立 Azure Digital Twin Service
段落中Step 6
所取得的Host name
- 請修改
Step 6. 在 hub_to_adt
資料夾中建立 .env
檔案
- 請在
.env
檔案加入以下內容EVENTHUB_NAME="Event Hub 的名稱" CONSUMER_GROUP_NAME="$Default" EVENTHUB_CONNECTION_STRING="Event Hub 的連接字串"
- 請修改上方
Event Hub 的名稱
為Step 1
所取得Event Hub-compatible name
中的值。 - 請修改上方
Event Hub 的連接字串
為Step 1
所取得Event Hub-compatible endpoint
中的值。
- 請修改上方
Step 7. 在 hub_to_adt
資料夾中建立 .dockerignore
檔案
- 請在
.dockerignore
檔案加入以下內容.DS_Store node_modules /dist
Step 8. 建立 Hub To ADT
的 Dockerfile
- 在專案目錄中建立
docker-manifests
資料夾並在此資料夾中建立Dockerfile-Hub-To-ADT
的檔案再輸入以下內容
Step 9. 建立 Azure Container Registry ( ACR )
- 請在終端機輸入下方內容
az acr create -n AcrName -g ResourceGroupName --sku SkuLevel --admin-enabled true
-
請修改指令中的
AcrName
成唯一且可識別的名稱。 -
請修改指令中的
ResourceGroupName
為建立 Azure Maps Service
段落中Step 2
所建立的 Azure 資源群組。 -
請修改指令中的
SkuLevel
為可選Basic
、Standard
、Premium
。 -
本範例使用如下
az acr create -n containerforaks -g adtToMap --sku Basic --admin-enabled true
-
Step 10. 取得 Azure Container Registry 的 Login Server URL
- 請在終端機輸入下方內容
az acr list -o table -g ResourceGroupName
-
請修改指令中的
ResourceGroupName
為建立 Azure Maps Service
段落中Step 2
所建立的 Azure 資源群組。 -
本範例使用如下
az acr list -o table -g adtToMap
-
Step 11. 建立 Docker Image
- 請在終端機切換路徑到專案目錄再輸入下方內容
docker build -t AcrUrl/ImageName:Tag -f docker-manifests/Dockerfile-Hub-To-ADT .
-
請修改指令中的
AcrUrl
為Step 10
所取得的 URL。 -
請修改指令中的
ImageName
為可識別的名稱。 -
請修改指令中的
Tag
為版號。 -
本範例使用如下
docker build -t containerforaks.azurecr.io/hub-to-adt:0.1 -f docker-manifests/Dockerfile-Hub-To-ADT .
-
Step 12. 查看本地端 Image
-
請在終端機輸入下方內容
docker images
Step 13. 登入到 Azure Container Registry
- 請在終端機輸入下方內容
az acr login --name AcrName
-
請修改指令中的
AcrName
為Step 9
所建立的名稱。 -
本範例使用如下
az acr login --name containerforaks
-
Step 14. 上傳 Image 到 Azure Container Registry
- 請在終端機輸入下方內容
docker push AcrUrl/ImageName:Tag
-
請修改指令中的
AcrUrl
為Step 10
所取得的 URL。 -
請修改指令中的
ImageName
為Step 11
的名稱。 -
請修改指令中的
Tag
為Step 11
的版號。 -
本範例使用如下
docker push containerforaks.azurecr.io/hub-to-adt:0.1
-
Step 15. 查看 Azure container registry
- 透過瀏覽器開啟 https://portal.azure.com/ 並登入成功之後於上方搜尋框輸入
container registry
再點選Container registries
的結果
- 選擇所建立的 registry
- 點選左側的
Repositories
- 點選所上傳的 Image
Step 16. 建立 Azure Kubernetes Service
- 請在終端機輸入下方內容
az aks create -g ResourceGroupName -n AksName
-
請修改指令中的
ResourceGroupName
為建立 Azure Maps Service
段落中Step 2
所建立的 Azure 資源群組。 -
修改指令中的
AksName
成唯一可識別的名稱。 -
本範例使用如下
az aks create -g adtToMap -n aks-adt-test
-
Step 17. 取得 Azure Kubernetes Service Credential
- 請在終端機輸入下方內容
az aks get-credentials --resource-group ResourceGroupName --name AksName
-
請修改指令中的
ResourceGroupName
為建立 Azure Maps Service
段落中Step 2
所建立的 Azure 資源群組。 -
修改指令中的
AksName
請輸入Step 16
所建立的名稱。 -
本範例使用如下
az aks get-credentials --resource-group adtToMap --name aks-adt-test
-
Step 18. 設定 Azure Kubernetes Service 與 Azure Container Registry 連結
- 請在終端機輸入下方內容
az aks update -n AksName -g ResourceGroupName --attach-acr AcrName
-
修改指令中的
AksName
請輸入Step 16
所建立的名稱。 -
請修改指令中的
ResourceGroupName
為建立 Azure Maps Service
段落中Step 2
所建立的 Azure 資源群組。 -
修改指令中的
AcrName
請輸入Step 9
所建立的名稱。 -
本範例使用如下
az aks update -n aks-adt-test -g adtToMap --attach-acr containerforaks
-
Step 19. 建立 Deployment 的 YAML
- 請在專案目錄中建立
kube-manifests
資料夾並在此資料夾中建立01-Deployment-Hub-To-Adt.yml
檔案,其內容如下- 請修改
第 18 行
中的AcrUrl
為Step 10
所取得的 URL。 - 請修改
第 18 行
中的ImageName
為Step 11
的名稱。 - 請修改
第 18 行
中的Tag
為Step 11
的版號。 - 本範例使用如下
- 請修改
Step 20. 部署 Application
- 請在終端機輸入下方內容
kubectl apply -f kube-manifests/01-Deployment-Hub-To-Adt.yml
Step 21. 啟用 Identity
- 在搜尋框輸入
vmss
> 再點選Virtual machine scale sets
的結果
- 點選所建立的資源
- 點選左側的
Identity
- 點選
On
> 點選上方Save
> 點選Yes
- 點選
Azure role assignments
- 點選
+ Add role assignment (Preview)
-
輸入相關資訊
Scope
欄位請選擇使用範圍。Subscription
欄位請選擇所要使用的訂閱。Role
欄位請選擇Azure Digital Twins Data Owner
。- 以上資訊選擇完成後點選
Save
-
設定完成
建立與設定 Event Hub
Step 1. 建立 Event Hub
- 在搜尋框輸入
event hub
> 再點選Event Hubs
的結果
- 點選
+ Create
- 輸入相關資訊
Subscription
欄位選擇所要使用的訂閱。Resource group
欄位請輸入此服務所要歸屬於的群組。Namespace name
欄位請輸入一個可識別的名稱,本範例使用k8s-adt-event-hub
。Location
欄位請選擇服務所要位於的資料中心。Pricing tier
欄位請選擇服務的等級。Throughput Units
欄位請選擇所要使用的 Unit。- 當輸入完成後點選 Review + create。
- 確認資訊正確後再點選
Create
- 點選
Go to resource
- 點選左側的
Event Hubs
以建立 Event Hub
- 點選上方的
+ Event Hub
- 輸入 Event Hub 的名稱後按
Create
- 本範例使用
adt-to-map
- 本範例使用
- 建立完成畫面
- 點選所建立的 Event Hub
- 點選左側的
Shared access policies
再點選上方的+ Add
- 輸入相關資訊
Policy name
欄位請輸入唯一且可識別的名稱,本範例使用adt-to-map-policy
- 點選
Manage
- 以上資訊輸入完成後再點選
Create
- 點選所建立的 Policy
- 取得
Connection string–primary key
將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure Digital Twins 的警示資訊傳送到 Azure Indoor Map
Step 1. 初始化
- 請在專案目錄中建立
adt_to_map
資料夾並透過終端機切換路徑到adt_to_map
資料夾中並再輸入下方指令npm init -y
Step 2. 安裝套件
- 請在終端機輸入下方指令
npm i @azure/event-hubs axios dotenv
Step 3. 撰寫 app.js
程式
- 在
adt_to_map
資料夾中建立app.js
檔案後再輸入以下程式- 請修改
第 9 行
中的STATESET_ID
為建立 Feature State
段落中Step 4
中取得的Stateset ID
。 - 請修改
第 10 行
中的MAP_PRIMARY_KEY
為建立 Azure Maps Service
段落中Step 5
取得Azure Map Primary Key
。
- 請修改
Step 4. 在 adt_to_map
資料夾中建立 .env
檔案
- 請在
.env
檔案加入以下內容EVENTHUB_NAME="Event Hub 的名稱" CONSUMER_GROUP_NAME="$Default" EVENTHUB_CONNECTION_STRING="Event Hub 的連接字串"
- 請修改
Event Hub 的名稱
為建立與設定 Event Hub
段落中Step 1
所建立的 Event Hub 名稱。 - 請修改
Event Hub 的連接字串
的等號右邊輸入建立與設定 Event Hub
段落中Step 1
所取得的Connection string–primary key
。
- 請修改
Step 5. 在 adt_to_map
資料夾中建立 .dockerignore
檔案
- 請在
.dockerignore
檔案加入以下內容.DS_Store node_modules /dist
Step 6. 建立 ADT To Map
的 Dockerfile
- 在
docker-manifests
資料夾中建立Dockerfile-ADT-To-Map
的檔案再輸入以下內容
Step 7. 建立 Docker Image
- 請在終端機切換路徑到專案目錄再輸入下方內容
docker build -t AcrUrl/ImageName:Tag -f docker-manifests/Dockerfile-Hub-To-ADT .
-
請修改指令中的
AcrUrl
為將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure IoT Hub 所取得的數據傳到 Azure Digital Twin
段落中Step 10
所取得的 URL。 -
請修改指令中的
ImageName
為可識別的名稱。 -
請修改指令中的
Tag
為版號。 -
本範例使用如下
docker build -t containerforaks.azurecr.io/adt-to-map:0.1 -f docker-manifests/Dockerfile-ADT-To-Map .
-
Step 8. 查看本地端 Image
-
請在終端機輸入下方內容
docker images
Step 9. 上傳 Image 到 Azure Container Registry
- 請在終端機輸入下方內容
docker push AcrUrl/ImageName:Tag
-
請修改指令中的
AcrUrl
為將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure IoT Hub 所取得的數據傳到 Azure Digital Twin
段落中Step 10
所取得的 URL。 -
請修改指令中的
ImageName
為Step 7
的名稱。 -
請修改指令中的
Tag
為Step 7
的版號。 -
本範例使用如下
docker push containerforaks.azurecr.io/adt-to-map:0.1
-
Step 10. 查看 Azure container registry
- 透過瀏覽器開啟 https://portal.azure.com/ 並登入成功之後於上方搜尋框輸入
container registry
再點選Container registries
的結果
- 選擇所建立的 registry
- 點選左側的
Repositories
- 點選所上傳的 Image
Step 11. 建立 Deployment 的 YAML
- 請在
kube-manifests
資料夾中建立02-Deployment-Adt-To-Map.yml
檔案,其內容如下- 請修改
第 18 行
中的AcrUrl
為將程式透過 Azure Container Registry 部署到 Azure Kubernetes Service 以將 Azure IoT Hub 所取得的數據傳到 Azure Digital Twin
段落中Step 10
所取得的 URL。 - 請修改
第 18 行
中的ImageName
為Step 7
的名稱。 - 請修改
第 18 行
中的Tag
為Step 7
的版號。 - 本範例使用如下
- 請修改
Step 12. 部署 Application
- 請在終端機輸入下方內容
kubectl apply -f kube-manifests/02-Deployment-Adt-To-Map.yml
在 Azure Digital Twins 中建立 Endpoint 讓 Event Hub 連結至 Azure Digital Twins,再建立 Event Route 將對應的更新事件傳送至 Endpoint
Step 1. 回到所建立的 Azure Digital Twins
Step 2. 建立 Endpoint
- 點選左側的
Endpoints
> 再點選上方的+ Create an endpoint
- 輸入相關資訊
Name
輸入一個可識別的名稱- 本範例使用
map-endpoint
- 本範例使用
Endpoint type
欄位請選擇Event Hub
。Subscription
欄位請選擇所要使用的訂閱。Event hub namespace
欄位請選擇建立與設定 Event Hub
段落中所建立的Namespace name
。Event Hub
欄位請選擇建立與設定 Event Hub
段落中所建立的Event Hub
。Authorization rule
欄位請選擇建立與設定 Event Hub
段落中所建立的Policy name
。- 以上資訊輸入完成後點選
Save
- 建立完成
Step 3. 建立 Event Route
- 點選左側的
Event routes
> 再點選上方的+ Create an event route
- 輸入相關資訊
Name
欄位請輸入一個可識別的名稱- 本範例使用
map-route
- 本範例使用
Endpoint
欄位請選擇Step 2
所建立的Endpoint
Event types
欄位請選擇Twin Update
- 以上資訊輸入完成後點選
Save
- 建立完成
撰寫隨機產生溫度數據的傳送程式
Step 1. 初始化專案
- 在專案目錄中建立
pnp
資料夾並在終端機中切換路徑到此資料夾再輸入下方指令npm init -y
Step 2. 安裝套件
- 在終端機輸入下方指令
npm i dotenv azure-iot-device-mqtt azure-iot-device
Step 3. 撰寫程式
- 建立一個名為
send.js
的程式,其程式如下 :
Step 4. 於設定檔新增資訊
- 在剛才所建的
.env
設定檔中新增下方資訊IOT_HUB_DEVICE_CONNECTION_STRING="Device 的連接字串"
- 請修改上方的
Device 的連接字串
為建立 Azure IoT Hub、Device ID 並取得 Device Connection String
段落中Step 6
取得Device Connection String
- 請修改上方的
Step 5. 執行 send.js
- ① 開啟終端機再切換工作路徑到剛才所建立
send.js
程式的地方 - ② 執行下方指令
node send.js
透過 Azure Digital Twins Explorer 查看所建立的 Twin 中的 Temperature 是否有更新
Step 1. 透過 Azure Digital Twins Explorer
進行驗證
- 點選
Azure Digital Twins Explorer
右上方的Run Query
- 查詢結果
Temperature
的數值已從168
變為所上傳的數值5
透過 Azure Maps Indoor Maps module 查看所對應的 Feature ID 是否有更新
Step 1. 所選定的 Feature ID 因 Temperature 的狀態變為 5 而房間顏色變成紅色
Temperature | 顏色 |
---|---|
0 ~ 19 | 紅色 ( #e71313 ) |
20 ~ 39 | 藍色 ( #3f0feb ) |
AKS 測試與驗證
Step 1. 查看 Pods
- 請在終端機輸入下方內容
kubectl get pods
Step 2. 查看 hub-to-adt
的資訊
- 請在終端機輸入下方內容
kubectl logs -f Pod-Name
-
請修改上方指令中的
Pod-Name
為Step 1
所顯示hub-to-adt
的名稱。 -
本範例使用的指令如下
kubectl logs -f hub-to-adt-deployment-678d458ff9-qq6v7
-
Step 3. 查看 adt-to-map
的資訊
- 請在終端機輸入下方內容
kubectl logs -f Pod-Name
-
請修改上方指令中的
Pod-Name
為Step 1
所顯示adt-to-map
的名稱。 -
本範例使用的指令如下
kubectl logs -f adt-to-map-deployment-5bb9dd6b7c-2kfg5
-
Step 4. 進入 hub-to-adt
的 Pod 中
- 請在終端機輸入下方內容
kubectl exec -it Pod-Name sh
- 請修改上方指令中的
Pod-Name
為Step 1
所顯示hub-to-adt
的名稱。 - 本範例使用的指令如下
kubectl exec -it hub-to-adt-deployment-678d458ff9-qq6v7 sh
- 請修改上方指令中的
Step 5. 進入 adt-to-map
的 Pod 中
- 請在終端機輸入下方內容
kubectl exec -it Pod-Name sh
- 請修改上方指令中的
Pod-Name
為Step 1
所顯示adt-to-map
的名稱。 - 本範例使用的指令如下
kubectl exec -it adt-to-map-deployment-5bb9dd6b7c-2kfg5 sh
- 請修改上方指令中的
Step 6. 查看 Deployment
- 請在終端機輸入下方內容
kubectl get deployment
刪除所建立的資源與服務
Step 1. 刪除 Application
- 請在終端機輸入下方內容
kubectl delete -f kube-manifests/
Step 2. 刪除所建立的相關資源
- 請在終端機輸入下方指令
az group delete -n ResourceGroupName
-
修改指令中的
ResourceGroupName
請輸入建立 Azure Maps Service
段落中Step 2
所建立的名稱。 -
本範例使用如下
az group delete -n adtToMap
-