【问题标题】:Device Twin not fully returned with GetTwinAsync()使用 GetTwinAsync() 未完全返回设备孪生
【发布时间】:2018-03-23 14:46:50
【问题描述】:

我正在使用适用于 .NET Core 的 Azure IoT 设备客户端 SDK(1.17.0-preview-001,但也尝试了 1.7.0-stable)。当调用deviceClient.GetTwinAsync()时,所有字段都是NULL,除了Properties(期望和报告都在那里):

至少像 DeviceId 这样的东西我希望在那里。此外,当我在 DeviceTwin 中添加任何标签时,这些标签都不会进入设备。

这是一个错误还是我遗漏了什么?

【问题讨论】:

    标签: c# .net-core azure-iot-hub azure-iot-sdk


    【解决方案1】:

    由标签、属性(期望的、报告的)和元数据组成的设备孪生。我们只能从 device app 中查询 properties 如下图作为文档stated:

    Azure IoT hub的具体操作支持也可以参考Azure IoT hub endpoints,如下图:

    设备孪生管理。每个 IoT 中心都公开一组面向服务的 HTTPS REST 端点,以查询和更新设备孪生(更新标签和属性)。

    这种行为也很容易通过使用 Fiddler 跟踪原始数据来验证。例如,这是一个使用 MQTT 协议通过 MQTTBOX 从 Azure IoT Hub 获取设备孪生的查询:

    根据我的理解,设备应用很少需要这些信息。您可以考虑从服务端点而不是客户端应用程序管理设备孪生。如果您确实有这种特殊情况,可以通过Azure IoT - UserVoice 提交反馈。

    【讨论】:

    • 好的,事实上只有双属性对设备可见的信息对我来说有点太隐藏了。或者,设备客户端 SDK 方法 GetTwinAsync() 的名称可能具有误导性。因为实际上设备无法读取它的双胞胎,只有其中的属性。应该是 GetTwinPropertiesAsync() ;-) 但我想这就是现在的情况。感谢您的帮助。
    • 你们能帮我解决类似的问题吗:stackoverflow.com/questions/53643821/…
    【解决方案2】:

    您可以使用 Microsoft.Azure.Devices 获取设备孪生。它是 Azure IoT Hub 的服务客户端 SDK。

    dynamic registryManager = RegistryManager.CreateFromConnectionString("{connectionString}");
    var deviceTwin = await registryManager.GetTwinAsync("{device name}");
    

    在这个article,也许你会对Azure IoT SDKs有更多的了解。

    • 设备 SDK 使您能够构建在 IoT 设备上运行的应用。这些应用将遥测数据发送到您的 IoT 中心,并可选择从您的 IoT 中心接收消息。
    • 服务 SDK 使您能够管理您的 IoT 中心,并可选择将消息发送到您的 IoT 设备。

    【讨论】:

    • 我认为您错过了我的问题的重点:我正在处理设备,而不是服务后端。在这种情况下,使用服务客户端 SDK 将是一个非常糟糕的主意,因为我不想在设备上使用服务密钥。
    • @silent,可以参考Understand and use device twins in IoT Hub和IoT Hub permissions,这是由于ServiceConnect权限的要求。
    • 好的,我可以看到它说:“标签对设备应用程序不可见。” (不知道为什么,但我认为这背后有一些设计逻辑)。但它没有说明其他数据,如 DeviceId。是否同样适用于除属性之外的所有字段?如果是这样,应该说明这一点。
    • @silent,还有另一种获取设备孪生的可选方法,使用 Azure IoT 中心设备孪生 REST API。请参阅Device Twin Api。
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多