同一设备上的两个应用程序可以同时连接到Azure IoT Hub吗?

问题描述 投票:0回答:1

我的设备上有一个使用 C SDK 连接到 Azure IoT 中心的应用程序。该应用程序将向云端发送消息并通过设备孪生进行交互。

我还需要让设备接收更新。看起来 Azure 设备更新代理应用程序就是执行此操作的方法,当然是因为他们支持 swupdate 之类的东西。

我的问题是两个应用程序可以连接到Azure IoT Hub吗?如果是这样,是否需要采取一些措施,以免他们互相踩到对方的脚趾?如果不是,那么设备更新代理是可行的方法,如果是,您如何与 IoT 中心进行交互以实现设备孪生之类的功能?

我有两个应用程序连接到 Azure IoT 中心。当我运行应用程序和设备更新代理时,我看到它们正在干扰彼此的连接。当它们通常打印出它们在单独运行时每隔几分钟发送消息时,它们会交替打印它们在两者都运行时每隔几秒重新发送一条 KEEPALIVE 消息。

azure azure-iot-hub azure-iot-sdk
1个回答
0
投票

使用 Azure IoT 中心时,每个设备连接都使用设备 ID 及其关联的安全材料(如共享访问密钥、证书等)进行识别和身份验证。一台设备(由其设备 ID 标识)在任何给定时间只能与 IoT 中心建立一个活动连接。如果两个应用程序尝试同时使用相同的设备 ID 进行连接,它们将干扰彼此的连接,从而导致类似您所描述的问题。

鉴于此,这就是我的推荐。

  1. 所有功能单一应用: 将两个应用程序合并为一个应用程序,该应用程序可以处理常规设备功能(发送消息、设备孪生交互)和设备更新。这是最直接的方法,确保只有一个与 IoT 中心的连接。

  2. 使用模块标识: Azure IoT Edge 设备支持模块标识,其中单个设备可以有多个模块,每个模块都有自己的标识并连接到 IoT 中心。如果你的设备可以运行 IoT Edge 运行时,则可以将每个应用程序作为一个模块,允许它们同时连接到 IoT 中心而不会产生干扰。但是,如果您不需要其他 Edge 功能,那么设置 IoT Edge 可能有点大材小用。

© www.soinside.com 2019 - 2024. All rights reserved.