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