练习 - 将 Azure 数字孪生数据连接和流式传输到风力涡轮机资产

已完成

Azure SignalR 服务已成为你所部署的 ARM 模板的一部分。 使用此服务和关联的设置,可连接到 Azure 数字孪生。 已创建一个数据管道来从数字孪生体中检索数据,这是从客户端应用(在混合现实中运行)中抽象出来的。

Azure SignalR 服务概述

Azure SignalR Service 简化了通过 HTTP 向应用程序添加实时 Web 功能的过程。 这种实时功能允许服务将内容更新推送到连接的客户端,例如单页 Web 或移动应用程序。 因此,无需轮询服务器,或提交针对更新的新 HTTP 请求,即可更新客户端。 需要将数据从服务器实时推送到客户端的任何方案都可以使用 Azure SignalR 服务。 通常需要从服务器轮询的传统实时功能也可以使用 Azure SignalR 服务。

Azure SignalR 服务可与其他 Azure 服务轻松集成,从而开启其他可能的场景。 例如,Azure Functions 可使用 REST API 将通知推送到 Azure SignalR 服务,该服务随后会将数据实时推送到连接的客户端。 与 IoT 中心一起使用时,Azure SignalR 服务可以让实时传感器数据传输到连接的客户端,以支持实时监视场景。

实时场景通常伴随着客户端与服务器之间的高频数据流和大量并发连接。 它们需要进行重要的基础结构设置才能启动功能并大规模运行。 大规模配置此基础结构非常困难。 配置通常需要各种网络层的特定于应用程序的逻辑。 Azure SignalR 服务会处理这些问题,因此你可以专注于可提供实时连接体验的应用程序逻辑。 可以动态缩放实时功能,而只需为使用的功能付费。 该服务还继承了 Azure SignalR 服务通过各种传输进行持久连接的功能。

Azure SignalR 服务已在各行各业中广泛使用,适用于需要实时更新内容的所有应用类型。 下面是适合使用 Azure SignalR 服务的一些示例:

  • 高频率数据更新:游戏、投票、轮询、竞拍
  • 仪表板和监视:公司仪表板、金融市场数据、即时销量更新、多玩家游戏排行榜和 IoT 监视。
  • 地图实时定位:物流跟踪、交货状态跟踪、运输状态更新、GPS 应用
  • 实时定向广告:个性化的实时推送广告和产品、交互式广告
  • 协作式应用:共同创作、白板应用和团队会议软件
  • 推送通知:社交网络、电子邮件、游戏和行程通知
  • 实时广播:实时音频/视频广播、实时字幕、翻译、活动/新闻广播
  • IoT 和互联设备:实时 IoT 指标、远程控制、实时状态和位置跟踪
  • 自动化:基于上游事件的实时触发器

对于风力涡轮机用例,Azure 数字孪生风力涡轮机数据和混合现实设备之间的通信层使用 Azure SignalR 服务和嵌入混合现实应用中的 SignalR 客户端。

若要通过 Azure 数字孪生向客户端应用公开数据,需要连接到 Azure SignalR 服务。 正在构建的混合现实应用会将 SignalR 客户端连接到 SignalR 服务。 在 SignalR 客户端与 Azure SignalR 服务之间建立通信需要客户端调用 SignalR 服务中的 negotiate 函数。

使用上一练习中捕获的 Azure 数字孪生连接参数和身份验证详细信息配置 DeviceSimulator

获取应用凭据

  1. 在 Visual Studio 中打开 DeviceSimulator.sln,并使用 ARM 模板创建的 Azure 数字孪生资源类型的主机名配置 DeviceSimulator

  2. 使用文本编辑器打开在上一练习中创建的包含 Azure 数字孪生关键配置参数的 Azure_config_settings.txt 文本文件。 或者,如果 PowerShell 会话保持活动状态,则请查找 get-content 命令的输出。

  3. Azure_config_settings.txt 文件中或 PowerShell 的 get-content 命令的输出中,找到 adtHostName 键的键/值对并复制该值。 它看起来应该类似于:

    https://myprojadtxxxxxxxxxx.api.eus.digitaltwins.azure.net
    

    Screenshot of the command-line interface running the get-content command prompt.

  4. 在 Visual Studio DeviceSimulator 解决方案中,通过双击“解决方案资源管理器”中的 AzureIoTHub.cs 文件在编辑器中打开该文件。 将上面步骤 2 中复制的 adtHostName 键/值对的值粘贴到 adtInstanceUrl 字符串变量中。

    Screenshot of the Device Simulator solution with the Azure IoT Hub cs file open and host name and instance URL values added.

使用主连接字符串配置设备模拟器

使用 ARM 模板创建的 IoT 中心的主连接字符串配置 DeviceSimulator

  1. Azure_config_settings.txt 文件中或 PowerShell 的 get-content 命令的输出中,找到 connectionString 键的键/值对并复制该值。 它看起来应该类似于:

    HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
    
  2. 在 Visual Studio DeviceSimulator 解决方案中,在编辑器中打开 AzureIoTHub.cs 文件,并将上面步骤 1 中复制的 connectionString 值粘贴到 iotHubConnectionString 字符串变量中。

    Screenshot of the Device Simulator solution with the Azure IoT Hub cs file open and IoT Hub connection string value added.

使用身份验证密钥配置设备模拟器

使用 ARM 模板创建的身份验证密钥配置 DeviceSimulator

  1. 打开在上一练习中创建的 AppCredentials.txt 文本文件。

  2. 在 Visual Studio DeviceSimulator 解决方案中,在编辑器中打开 PropUpdater.cs 文件。 将文本文件中的全局唯一标识符(GUID)复制并粘贴到 .cs 文件中。 使用以下从 .cs 变量到文本文件中的 JSON 数据输出的映射:

    AppCredentials.txt PropUpdater.cs
    appId clientId
    password clientSecret
    tenant tenantId

    Screenshot of the Device Simulator solution with the PropUpdater.cs file open and client, secret, and tenant ID values added.

  3. 通过选择“文件”>“全部保存”,在 Visual Studio 中保存工作。

将 Unity 中的 Azure 数字孪生预制项连接到数字孪生,以便接收来自 DeviceSimulator 的模拟遥测数据。

添加 Azure 数字孪生连接预制项

将 Azure 数字孪生连接预制资产添加到 Unity 场景并进行配置。

  1. 返回到你的 Unity 项目。

  2. 在“层次结构”中选择游戏对象 ADTConnection。 如果你的“层次结构”中没有此项,选择“资产”>“ADTPrefabs”>“ADTConnection”预制资产,将其拖到“场景”层次结构。

    Screenshot of the Unity Hierarchy with the main scene highlighted.

  3. 在文本编辑器中打开在上一个练习中创建的文本文件 Azure_config_settings.txt。 该文件包含关键的 Azure 数字孪生配置参数。 或者,如果 PowerShell 会话保持活动状态,则请查找 get-content 命令的输出。

  4. Azure_config_settings.txt 文件中或 PowerShell 的 get-content 命令的输出中,找到 signalRNegotiatePath 键的键/值对并复制该值。 它看起来应该类似于:

    https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate
    
  5. 使用在步骤 1 中获取的函数 URL 将该值添加到“ADT 数据处理程序 (脚本)”下的“URL”参数。 在 URL 中添加 …/api(含)之前的所有内容。 请勿添加最后一个反斜杠或“negotiate”一词。

    Screenshot of the Unity editor with the Azure Digital Twins connection prefab selected and the ADT data handler script added.

  6. 保存场景。

现在,Azure 服务已设置完成,并且相应的指针位于 Unity 场景中,接下来可以创建一个用户界面 (UI) 来将操作数据可视化。