【问题标题】:How to disable Cloud initiated connection to Azure IoT Edge device?如何禁用与 Azure IoT Edge 设备的云启动连接?
【发布时间】:2020-08-24 21:09:05
【问题描述】:

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

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

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

【问题讨论】:

  • 是不是专门要求不从云端发送消息?还是要求云平台不能发起与设备的连接?后者是 Azure IoT 的设计原则,不会发生。
  • 是的,是后者。那么,您的意思是 Azure 不会通知设备配置更改、可用固件等,而设备自己会发现这一点,对吗?
  • 我已经在我的回答中详细解释了。

标签: azure azure-iot-edge azure-iot-hub-device-management


【解决方案1】:

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

连接

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

消息

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

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

【讨论】:

  • 是的,这一切都为我澄清了,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 2021-01-21
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多