我正在用Python语言编写一个带有iot集线器设备开发工具包的azure物联网设备应用程序。
我在应用程序中使用设备双胞胎状态所需的属性,并通过device_twin_callback()对来自azure的设备双胞胎更改进行更新。但是,当我重新配置我的设备时(例如,在重新启动时),我会得到IoT中指定的初始设备双状态,而不是DPS集线器的当前双状态。
有没有办法在IoT中使用python device SDK重新配置时检索当前设备的孪生状态?
我想要避免的一个解决方案是将设备的最后状态保存在一个文件中。
发布于 2019-01-29 18:29:35
有没有办法在IoT中使用python device SDK重新配置时检索当前设备的孪生状态?
你的问题不是准确性。没有其他方法可以检索当前设备的孪生状态,只有REST API Service - Get Twin及其相关的Python API iothub_twin_method.get_twin。
包括在重新提供的设备状态数据中的设备twin仅取决于Reprovisioning policies的选择,如下所示。
使用Azure IoT SDK for Python,重置策略由ReprovisionPolicy object的参数update_hub_assignment和migrate_device_data设置,请参考下面的解释。
将设备重新配置到IoT集线器时,
服务的行为。必须填充所有必需的参数才能发送到Azure。:param update_hub_assignment:必填。设置为true (默认值)时,设备调配服务将评估设备的IoT集线器分配,并在必要时对来自给定设备的第一个以外的任何调配请求进行更新。如果设置为false,设备将保持分配给其当前IoT集线器。默认值: True。:type update_hub_assignment: bool :param migrate_device_data:必填。设置为true (默认值)时,设备调配服务将在IoT集线器分配更新期间将设备数据(双胞胎、设备功能和设备ID)从一个IoT集线器迁移到另一个。如果设置为false,则设备配置服务会将设备数据重置为存储在相应注册列表中的初始所需配置。默认值: True。:类型migrate_device_data: bool
ReprovisionPolicy对象是在EnrollmentGroup或IndividualEnrollment对象中初始化的属性。
所以请尝试修改ReprovisionPolicy的参数update_hub_assignment和migrate_device_data的组合,以满足您的需求。否则,缓存历史数据的变通方法是唯一的解决方案。
https://stackoverflow.com/questions/54402545
复制相似问题