【问题标题】:Use Iot hub edge module client to get device twin properties使用 IoT hub 边缘模块客户端获取设备孪生属性
【发布时间】:2021-08-04 09:07:19
【问题描述】:

我正在尝试在 IoT Edge 模块中获取 设备孪生属性,虽然我已经与模块客户端(又名 IoTHubModuleClient)连接,但我找到了一个名为 @987654324 的方法@ 在documentation 中表示我们可以获取设备或模块孪生属性。但是,我得到“空”属性,结果如下:

{'desired': {'$version': 1}, 'reported': {'$version': 1}}

这不是我在设备孪生部分的天蓝色门户中配置的。但是使用带有设备连接字符串的IotHubDeviceClient(这就是我不想使用该客户端的原因),我能够获得正确的设备孪生属性。

代码非常基本:

    client = IoTHubModuleClient.create_from_edge_environment()
    twin_properties = await client.get_twin()
    logger.debug(f'Twin properties: {twin_properties}')

【问题讨论】:

  • 您是否在门户中看到有效的属性?你能通过 iot hub rest api 试试吗docs.microsoft.com/en-us/rest/api/iothub/service/devices/…
  • 是的,它们是有效的,我可以使用 python 代码通过设备客户端获取属性。我不介意使用 API,因为我需要处理身份验证和凭据,模块客户端是我真正希望使用的,因为授权是由 azure 使用设备中不存在的 create_from_edge_environment 方法“自动”处理的客户

标签: azure azure-iot-hub azure-iot-edge


【解决方案1】:

这是正确的 Mehdi,当您使用 IoTHubModuleClient 的 get_twin 方法时,您正在获取模块孪生属性,您可以独立于设备孪生属性添加/修改/删除模块孪生属性。

请看this article

【讨论】:

  • 哦,好的,所以文档有误?因为它说您可以获得设备和模块双胞胎。感谢您的回答,这帮助我查看了在门户中哪里可以找到模块孪生属性。设备孪生可能很好,但是配置设备范围的配置..
  • 好吧。我是错的,因为我没有读完整个句子。文档说“从 Azure IoT 中心 Azure IoT Edge 中心服务获取设备模块孪生。”因此,如果您在 IoT Hub 中,则为设备,如果您在 Edge Hub 中,则为模块。 TBH 这很令人困惑@Microsoft
  • 很高兴添加此说明。
猜你喜欢
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
相关资源
最近更新 更多