0

我正在研究 Azure IoT Hub 和 IoT Edge,以大致了解功能和潜在用例。我过去工作过的一个项目有一个严格的要求,即禁用云发起的联系并根据设备发起的轮询使事情正常工作。例如,当设备管理门户上的某些设置发生更改或新固件可用时,而不是将其推送到设备,每个设备将通过定期轮询来意识到这一点。

我无法控制这个要求,但如果该项目要转移到 Azure IoT,我确信也会提出同样的要求。有没有一种简单的方法可以通过 Azure 实现这一目标?

我曾考虑过调整相关容器的网络访问,但这会导致 IoT 中心发疯并尝试不断与“无响应”设备通信并标记所有这些失败的尝试吗?

4

1 回答 1

1

这个任务有两个部分:连接和消息。

连接

就连接而言,IoT Hub 的安全原则之一是设备负责建立连接。Azure IoT 设备默认不接受传入连接。设备与 IoT Hub 建立 AMQP 或 MQTT 连接,然后允许双向通信。HTTPS 连接是一个例外,如果使用该方法,设备将轮询 IoT 中心以获取新消息。

留言

当从设备启动双向连接时,这允许设备和 IoT 中心相互发送消息。对于非边缘设备,如果您不使用 SDK 并自己编写(例如 MQTT)代码,您可以决定不收听任何传入消息。您不会订阅诸如直接方法和孪生更新之类的主题,而只会在需要时查找它们。对于IoT Edge设备,双向通信由 Edge Hub 处理。因此,您的其他容器(模块)不会直接与云对话。剩下的边缘代理也只处理传出连接,它将模块的状态报告给云。

在您的问题的评论中,您提到要求是云无法启动与设备的连接。简而言之,这不会发生,IoT Hub 不是这样设计的。

于 2020-08-26T05:30:13.387 回答