如何禁用与Azure IoT Edge设备的云启动连接?

问题描述

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

我对此要求没有控制权,但是如果要将那个项目移到Azure IoT,我确定将要求同样的要求。有没有简单的方法可以使用Azure来实现这一目标?

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

解决方法

此任务分为两部分:连接和消息。

连接

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

消息

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

在对问题的评论中,您提到要求是云不能启动与设备的连接。简而言之,这并非不可能,IoT Hub并不是那样设计的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...