我正在使用适用于.NET Core的Azure IoT设备客户端SDK(1.17.0-preview-001,但也试过1.7.0-stable)。致电deviceClient.GetTwinAsync()
时,所有字段均为NULL
,但Properties
除外(需要以及已报告):
至少像DeviceId这样的东西我希望能在那里。此外,当我在DeviceTwin中添加任何标签时,这些标签都没有到达设备。
这是一个错误还是我错过了什么?
答案 0 :(得分:1)
设备双胞胎由标签,属性(所需,已报告)和元数据组成。我们只能查询设备应用中的属性,如下图所示为文档stated:
您还可以参考Azure IoT hub endpoints获取Azure IoT中心的特定操作支持,如下图所示:
设备双重管理 。每个物联网中心都会公开一组面向服务的HTTPS REST端点,以查询和更新设备双胞胎(更新标签和属性)。
使用Fiddler跟踪原始数据也很容易验证此行为。例如,以下是通过MQTTBOX使用MQTT协议从Azure IoT Hub获取设备twin的查询:
根据我的理解,设备应用很少需要这些信息。您可以考虑从服务端点而不是客户端应用程序管理设备双胞胎。如果您确实有这种特殊情况,可以从Azure IoT - UserVoice提交反馈。
答案 1 :(得分:-1)
您可以使用 Microsoft.Azure.Devices 来获取设备twin.It是Azure IoT Hub的服务客户端SDK。
dynamic registryManager = RegistryManager.CreateFromConnectionString("{connectionString}");
var deviceTwin = await registryManager.GetTwinAsync("{device name}");
在这个article中,您可能会对Azure IoT SDK有更多了解。
- 设备SDK 可让您构建在IoT设备上运行的应用。这些应用程序将遥测发送到您的IoT中心,并可选择从您的IoT中心接收消息。
- 服务SDK 使您可以管理您的IoT中心,并可选择向您的IoT设备发送消息。