【 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 IDStateset 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所建立的EndpointEvent 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
-