【问题标题】:Get Azure IOT Hub connection string from UWP app on provisioned device从预配设备上的 UWP 应用获取 Azure IOT Hub 连接字符串
【发布时间】:2021-05-12 00:33:05
【问题描述】:

我有一个运行 Windows IOT Core 的 Raspberry Pi,它已配置到 Azure IOT Hub。我正在编写一个 UWP 应用程序,我想向 IOT Hub 发送消息,我认为我需要 Microsoft.Azure.Devices.Client.DeviceClient 来做。 DeviceClient 需要一个连接字符串,我可以在应用程序中对其进行硬编码以进行测试。

我该怎么做:

  1. 检查运行应用的设备是否已配置到 IOT 集线器?
  2. 获取 IOT Hub 的连接字符串?

我无法在编译时知道此信息,并且我不想为每个设备/部署重新构建我的应用程序。

【问题讨论】:

    标签: azure-iot-hub windows-iot-core-10


    【解决方案1】:

    Microsoft.Azure.Devices.Client.DeviceClient 是 IoT 中心设备 SDK。它用于将遥测数据发送到 IoT 中心,并可选择从 IoT 中心接收消息、作业、方法或孪生更新。但是,如果要获取 IoT 中心的连接字符串并检查设备是否预配到 IoT 中心,则需要使用 IoT Hub Service SDKs。它使您能够构建后端应用程序来管理您的 IoT 中心,并可选择发送消息、安排作业、调用直接方法或向您的 IoT 设备或模块发送所需的属性更新。但是您还需要在您的应用程序中设置 DeviceId 和 iot hub 连接字符串。 不建议在设备客户端生成连接字符串。该 SDK 支持 UWP 应用在 Windows IoT Core 上运行。

    【讨论】:

    • 感谢您抽出宝贵的时间来写作,但我提出了这个问题,因为我已经看过所有这些文档,但仍然无法确定要使用哪些 API。 IoT 中心服务 SDK 具有用于接收 d2c 消息和发送 c2d 消息的 API,因此我不明白为什么要在我想从中发送遥测数据的设备上使用它。我没有看到用于检查当前运行代码的设备是否已配置的 API,如果是,如何创建 DeviceClient。制造数千台设备的设备制造商如何使用 IoT 中心?为每个设备构建自定义部署是不可扩展的。
    • @zivkan,在这种情况下,您可以使用 Azure IoT Hub Device Provisioning Service 。 DPS 使组织能够以安全且可扩展的方式自动注册数百万台设备并将其配置到 IoT 中心,从而简化了注册流程。
    • @MichaelXu-MSFT 你知道一旦设备配备了 DPS,哪里有代码示例可以发送遥测数据吗?这里的所有代码示例似乎都倾向于手动配置:github.com/Azure/azure-iot-sdk-c/tree/master/iothub_client/…
    【解决方案2】:

    我认为您可能想尝试查看 UWP 桥。它是一个 WinRT 库,可用于连接到设备代理并从 TPM 读取连接字符串。

    您可以从 GitHub (https://github.com/ms-iot/azure-client-tools) 上的 azure-client-tools 存储库构建 DMBridgeComponent 库,然后从您的 UWP 应用中引用它。

    然后,要读取您的连接字符串,您只需要以下代码:

    using DMBridgeComponent;
    ...
    
    var tpm = new TpmBridge();
    
    // Get connection string from TPM
    var slotNumberValue = 0;
    var connectionString = tpm.GetConnectionString(slotNumberValue, 36000);
    

    slotNumberValue 设置为您在配置设备时使用的任何插槽。通常默认为 0。

    这里有更多信息 (https://github.com/ms-iot/azure-client-tools/blob/master/docs/device-agent/uwp-bridge.md)。这就是我找到示例代码的地方。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 我编辑添加了答案链接中的相关示例代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多