【问题标题】:Azure IoT device needs to get desired properties from while it was offlineAzure IoT 设备需要在离线时获取所需的属性
【发布时间】:2020-10-02 22:12:53
【问题描述】:

我正在开发一个 Azure IoT 应用程序。我的所有设备都连接到 Azure IoT 中心并使用设备孪生。我的问题是这样的:

如果设备脱机,然后我的后端 Web 应用程序导致设备所需的孪生属性发生更改,则设备稍后重新启动时似乎无法获取该信息。

设备如何在重启时得到这个?当设备重新启动时,我希望它检索离线时收到的所有所需属性通知。这可能吗?如果可以,有什么方法可以做到?

【问题讨论】:

  • 再看看我给你的关于真机和后端同步分布式状态的回答,stackoverflow.com/questions/57288383/…在重启(rebooting)的情况下,设备应该读取所​​有设备所需的属性,并通过它们以过渡状态的方式进行同步。
  • 是的,但是当设备在重新启动后获得所需的属性时,我认为它没有获得元数据,因此无法知道哪些所需的属性具有比报告的时间戳更新的时间戳。
  • 设备连接到 Azure IoT Hub 后,设备可以从 IoT Hub 获取所需的属性。每个所需的属性都应该表示为一些状态对象,其中包含有关转换的详细信息。这个细节实际上将描述状态转换的状态。在设备和后端等末端所做的每项更改都必须经过转换,这就是我们拥有报告和所需属性的原因。
  • 嗯,我相信我可能已经找到了我的问题。在我的解决方案中,当我的后端收到报告属性更改的通知时,它不会更改等效的所需属性。这是不正确的行为吗? (顺便说一句。我确实有一个 Web 应用程序,它可以从所需的属性和报告的属性中读取数据,并且对于每个属性,使用元数据显示较新的属性。)
  • 由后端服务根据报告的属性对所需属性执行操作。在设备达到其状态时删除所需的属性或保留它。

标签: azure azure-iot-hub


【解决方案1】:

聚合 cmets 并将它们转换为答案:

@Roman Kiss

“在重启(rebooting)的情况下,设备应读取所有设备所需的属性,并以过渡状态的方式遍历它们以进行同步……在设备连接到 Azure IoT Hub 后,设备可以从 IoT 中心获取所需的属性。每个所需的属性都应该表示一些状态对象,其中包含有关转换的详细信息。这些详细信息实际上将描述状态转换的状态。在设备和终端等端所做的每次更改后端必须经过转换,这就是为什么我们有报告和期望的属性......我的序列图描述了这个分布式断开连接状态机,其中每个转换都必须在报告和期望的属性中很好地描述。如果转换中断(断开连接等),根据报告中的最后转换状态和期望的属性可以同步并继续到最终状态如报告和d期望的属性是一样的。”

相关话题:Azure IoT - What if both server and client are changing device twin properties?

@iAviator

“由后端服务根据报告的属性对所需属性执行操作。在设备达到其状态时删除所需属性或保留它。”

====

请将其标记为答案,以便其他人可以从您的讨论中受益。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多