0

我正在尝试创建一个身份转换网关,如此所述。

我还阅读了很多关于他们的 IoT 解决方案的 Microsoft 文档。

我有 :

  1. 叶设备 (A) 通过自定义协议连接到我的网关,而不直接连接到集线器。
  2. 网关设备 (B) 充当连接到 A 和 IoT 中心的 IoT Edge 设备。
  3. 我的物联网中心。

据我所理解:

  • 我的 IoT Edge 必须以这种方式在 IoT 集线器上注册每个设备,每个 A 设备都将在我的集线器上表示,我们将能够直接通过其 ID 发送消息。
  • 我可以通过路由 /devices/{deviceId}/messages 在网关上发送消息并收听它们

例如,假设我有:

  • 具有 ID 的 IoTEdge 设备:“Edge1”
  • 具有 ID 的 IoTEdge 设备:“Edge2”
  • 具有 ID 的设备:“DeviceA”连接到“Edge1”
  • 具有 ID 的设备:“DeviceB”连接到“Edge2”

由于集线器和叶设备之间没有连接,我不明白的是,当我使用“ /devices/DeviceA/messages ”向“DeviceA”发送消息时,集线器将知道哪个网关地址以及如何从我的网关听。简而言之,进行(非)多路复用过程

  • 有没有办法使用我看不到的 IoT Hub 自动处理它?连接字符串中的 GatewayHostName 可以解决问题吗?
  • 我必须手动处理它,而是将我的所有消息发送到我的网关 ID(即设备/Edge1/消息)并在我的消息正文中发送最终的目标设备 ID 吗?如果是,我不明白在 Hub 上注册每个设备的好处
  • 我必须在网关内监听每个连接的设备路由(即 Edge1 的 /devices/DeviceA/messages)吗?

谢谢你的帮助。

4

1 回答 1

1

根据我对您的场景的了解,您正在尝试将消息从云端发送到边缘设备上运行的模块,然后让模块将消息发送到下游设备。Edge 设备和模块不支持 C2D(云到设备)消息。您可以在以下包 https://www.nuget.org/packages/Microsoft.Azure.Devices/1.16.0-preview-001中使用 ServiceClient 提供的 C2D 方法,并在模块上调用方法。然后,模块可以将相关数据传递给其下游设备。

于 2018-02-15T18:20:30.697 回答