Skip to main content

Azure Digital Twins入门 - 使用Azure Cli的IoT扩展管理

分类:  Azure物联网 标签:  #Azure # #Digitial Twin 发布于: 2023-06-15 20:27:02

前一节我们学习了如何使用Azure Digital Twins Explorer工具来创建和管理模型以及digital tiws, 我们本节使用Azure Cli来完成同样的工作。

我们整个演示使用如下的步骤:

  • 确定数字化的目标清单
  • 制作数字化模型
  • 使用Azure Digital Twins Explorer工具来创建Digital TwinRelatioonship关系映射,Twin Graph
  • 使用Azure Cli IoT扩展来创建Digital TwinRelationship关系映射, Twin Graph
  • 使用.Net SDK来创建Digital TwinRelationShip关系映射,Twin Graph
  • 链接Azure Digital Twins ExplorerAzure IoT Hub, 映射实际的IoT设备
  • 结合Azure IoT Hub Device Provisioning Service自动管理设备
  • 结合Event hubAzure Function链接输出数据。

本节主要学习如何使用Azure CliIoT扩展工具来上传我们之前创建的数字模型,创建Digital TwinRelationship关系映射,Twin Graph

关于如何安装Azure Cli和基本的配置,您可以参考文档:<>

如果你还没有创建数字模型,您可以参考链接创建我们需要的数字模型:<>

请先确定我们目前已经拥有了四个数字模型文件,以及Azure Cli已经登录,模型文件列表如下:

  • FactoryModel.json
  • PoolModel.json
  • PHValueSensor.json
  • TemperatorSensor.json

准备Azure Cli的环境

您可以通过如下的命令快速的准备好Azure Cli的环境:

$ az cloud list -o table
IsActive    Name               Profile
----------  -----------------  ---------
False       AzureCloud         latest
True        AzureChinaCloud    latest
False       AzureUSGovernment  latest
False       AzureGermanCloud   latest

$ az cloud set --name AzureChinaCloud

$ az login

$ az account list -o table

 $ az account set --subscription <Your Subscription id>

至此您应该已经拥有了Azure Cli的环境了。

开始上传数字模型

开始上传之前,我们先查看一下我们的Azure Digital Twins实例:

az provider register --namespace 'Microsoft.DigitalTwins'
az dt show --dt-name <Azure-Digital-Twins-instance-name>

这样您就可以看到基本的信息了。

注意
经过测试发现Azure Cli目前在Azure China这边还是会报如下错误:

(InvalidResourceType) The resource type 'digitalTwinsInstances' could not be found in the namespace 'Microsoft.DigitalTwins' for api version '2021-06-30-preview'. The supported api-versions are '2020-12-01,2020-10-31,2020-03-01-preview'.

因此Azure CliAzure China这边还是有些问题。

使用如下的命令上传数字模型:

az dt model create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --models <path-to-Room.json>

使用上述的命令您可以将四个数字模型文件都一一上传。

上传之后为了验证是否上传成功,可以使用如下的命令查看:

az dt model list --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --definition

创建Digital Twin和关系映射

使用如下的命令来根据数字模型创建Digital Twins和关系映射:

az dt twin create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --dtmi "dtmi:example:factory;2" --twin-id factory-1 --properties '{"PropertiesName":"Value", ...}'

根据如下的表格,我们使用相同的命令创建完所有的digital twin:

该企业名下有两个工厂,每个工程有两个养殖池,每个养殖池里有两种探测器。

IDfactory NameCityMyCategoryPoolNumbers
factory-id-1The First FactoryShangHaiTest12
factory-id-2The Second FactorySuZhouTest22

养殖池

IDPool NameMyCategoryWhich FactoryNumber
pool-1Pool-1test-pool-1factory-1130
pool-2Pool-2test-pool-2factory-1150
pool-3Pool-3test-pool-3factory-2200
pool-4Pool-4test-pool-4factory-2210

PH值探测器,每个养殖池一个

IDNameWhic PoolPHValue
PHValueSensor-1PHValueSensor-1pool-1N/A
PHValueSensor-2PHValueSensor-2pool-2N/A
PHValueSensor-3PHValueSensor-3pool-3N/A
PHValueSensor-4PHValueSensor-4pool-4N/A

水温探测器,每个养殖池一个:

IDNameWhich PoolTemperator
TemperatorSensor-1TemperatorSensor-1pool-1N/A
TemperatorSensor-2TemperatorSensor-2pool-2N/A
TemperatorSensor-3TemperatorSensor-3pool-3N/A
TemperatorSensor-4TemperatorSensor-4pool-4N/A

通过如下的命令来创建关系:

az dt twin relationship create --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --relationship-id relationship0 --relationship contains --twin-id factory-1 --target pool-1

使用上述命令创建完成后,您可以直接使用Azure Digital Twin Explorer来查看效果:


查询

可以使用如下的命令来查询:

az dt twin query --dt-name <Azure-Digital-Twins-instance-hostname-or-name> --query-command "SELECT * FROM DIGITALTWINS"

清理资源

您可以直接使用ARM的命令:

az group delete --name <your-resource-group>

当然您还可以使用特定的命令:

az dt twin relationship delete、az dt twin delete、az dt model delete 

支持本节演示结束了。