我正在尝试将物联网边缘设备设置为边缘网关。我们不希望我们的叶子/传感器/下游设备直接连接到互联网/云,因此我希望物联网边缘网关(顾名思义)能够桥接下游设备和云/物联网之间的连接中心。但是,我意识到任何设备级别的 iot-hub/edge 的连接字符串都很简单
iothub-with-gatewayhostwayAppend 的连接字符串
这让我假设下游设备将消息传输到端点(可能是消息/*)到云/物联网集线器,并且网关从那里获取它(然后可能使用该数据)并将其转发回$upstream,它避开了网关的整个点。
此处位于 IOT-EDGE-GATEWAY 的消息路由部分 https://learn.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway ,在“从下游设备路由消息”部分中
{
"routes":{
"sensorToAIInsightsInput1":"FROM /messages/* WHERE NOT IS_DEFINED($connectionModuleId) INTO BrokeredEndpoint(\"/modules/ai_insights/inputs/input1\")",
"AIInsightsToIoTHub":"FROM /messages/modules/ai_insights/outputs/output1 INTO $upstream"
}
}
听起来像是网关正在将内置端点(默认)上的消息路由到 $upstream。我在网上找不到关于这个主题的任何其他更清晰的文档。如果有人能解决这个问题,我将非常感激。我期望边缘网关的连接字符串(我在设备端提到的是 localhost:port 而不是 cloudaddress+gatewayhostname 的内容)
最佳答案
如果您的连接字符串包含网关主机名 - 并且您在设备上使用的 SDK 可以正确处理此问题,则设备仅连接到网关,而不连接到 IoT 中心。
您可以在此处查看 .NET SDK 中的示例:
this.HostName = builder.GatewayHostName == null || builder.GatewayHostName == "" ? builder.HostName : builder.GatewayHostName;
如果设置了网关主机名,它实际上会覆盖连接的 IoT 中心主机名。
关于azure - 即使边缘用作网关,叶子/下游设备是否直接连接到 iot-hub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001913/