Python如何从IoT Hub的Device Twin中获取tags字段
问题根因
你调用的get_device()接口仅用于获取设备的基础身份元数据,本身就不包含设备孪生(Device Twin)的tags、properties等业务字段,属于接口用途错配。
解决方法
直接使用IoTHubRegistryManager提供的get_twin()接口即可获取完整的设备孪生数据,实现代码如下:
from azure.iot.hub import IoTHubRegistryManager import json # 替换为你的实际配置 IOTHUB_CONNECTION_STRING = "你的IoT Hub服务端连接字符串" TARGET_DEVICE_ID = "目标设备的ID" if __name__ == "__main__": # 初始化RegistryManager实例 registry_manager = IoTHubRegistryManager(IOTHUB_CONNECTION_STRING) # 调用设备孪生查询接口 device_twin = registry_manager.get_twin(TARGET_DEVICE_ID) # 直接获取tags字段 tags = device_twin.tags # 如需转为字典/JSON字符串可以用下面的代码 tags_dict = vars(tags) tags_json = json.dumps(tags_dict, indent=2) print(tags_json)
注意事项
- 你使用的IoT Hub连接字符串需要具备
registryRead权限,使用默认的iothubowner权限的连接字符串即可满足要求。 - 如果设备未设置任何
tags,返回的tags属性会为空,属于正常情况。
内容的提问来源于stack exchange,提问作者Monika Restecka
相关产品推荐
相关产品推荐

