如何禁用云发起的与 Azure IoT Edge 设备的连接?
How to disable Cloud initiated connection to Azure IoT Edge device?
我正在研究 Azure IoT Hub 和 IoT Edge,以大致了解功能和潜在用例。我过去从事的其中一个项目有一个严格的要求,即禁用云发起的联系并根据设备发起的轮询使事情正常进行。例如,当设备管理门户上的某些设置发生更改或新固件可用时,每个设备将通过定期轮询来了解这一点,而不是将其推送到设备。
我无法控制此要求,但如果要将该项目移动到 Azure IoT,我确信也会提出同样的要求。有没有使用 Azure 实现此目的的简单方法?
我考虑过调节相关容器的网络访问,但这会导致 IoT 中心变得疯狂并尝试持续与 'unresponsive' 设备通信并标记所有这些失败的尝试吗?
这个任务有两个部分:连接和消息。
连接数
就连接而言,IoT Hub 的 security principles 之一是设备负责建立连接。 默认情况下,Azure IoT 设备不接受传入连接。设备与 IoT 中心建立 AMQP 或 MQTT 连接,然后允许 bi-directional 通信。
HTTPS 连接是一个例外,如果您使用该方法,设备将轮询 IoT 中心以获取新消息。
消息
当从设备发起 bi-directional 连接时,这允许设备和 IoT 中心相互发送消息。对于 non-edge 设备,如果您不使用 SDK 并自行编写(例如 MQTT)代码,则可以决定不收听任何传入消息。您不会订阅直接方法和孪生更新等主题,只会在需要时查找它们。
对于 IoT Edge 台设备,bi-directional 台通信由 Edge Hub 处理。所以你的其他容器(模块)不直接与云对话。
剩下的边缘代理也只处理传出连接,它向云报告模块的状态。
在你的问题的评论中,你提到要求是云不能发起与设备的连接。简而言之,这不会发生,IoT 中心不是那样设计的。
我正在研究 Azure IoT Hub 和 IoT Edge,以大致了解功能和潜在用例。我过去从事的其中一个项目有一个严格的要求,即禁用云发起的联系并根据设备发起的轮询使事情正常进行。例如,当设备管理门户上的某些设置发生更改或新固件可用时,每个设备将通过定期轮询来了解这一点,而不是将其推送到设备。
我无法控制此要求,但如果要将该项目移动到 Azure IoT,我确信也会提出同样的要求。有没有使用 Azure 实现此目的的简单方法?
我考虑过调节相关容器的网络访问,但这会导致 IoT 中心变得疯狂并尝试持续与 'unresponsive' 设备通信并标记所有这些失败的尝试吗?
这个任务有两个部分:连接和消息。
连接数
就连接而言,IoT Hub 的 security principles 之一是设备负责建立连接。 默认情况下,Azure IoT 设备不接受传入连接。设备与 IoT 中心建立 AMQP 或 MQTT 连接,然后允许 bi-directional 通信。 HTTPS 连接是一个例外,如果您使用该方法,设备将轮询 IoT 中心以获取新消息。
消息
当从设备发起 bi-directional 连接时,这允许设备和 IoT 中心相互发送消息。对于 non-edge 设备,如果您不使用 SDK 并自行编写(例如 MQTT)代码,则可以决定不收听任何传入消息。您不会订阅直接方法和孪生更新等主题,只会在需要时查找它们。 对于 IoT Edge 台设备,bi-directional 台通信由 Edge Hub 处理。所以你的其他容器(模块)不直接与云对话。 剩下的边缘代理也只处理传出连接,它向云报告模块的状态。
在你的问题的评论中,你提到要求是云不能发起与设备的连接。简而言之,这不会发生,IoT 中心不是那样设计的。