我正在尝试将物联网边缘设备设置为边缘网关。我们不希望叶子/传感器/下游设备直接连接到互联网/云,因此,我希望物联网边缘网关(顾名思义)能够桥接下游设备与云/物联网之间的连接。毂。但是,我意识到在任何设备级别,iot-hub / edge的连接字符串都只是
iothub-with-gatewayhostwayAppendment的连接字符串
这使我假设下游设备将消息传输到云/ iot-hub的终结点(纯消息/ *),并且网关从那里获取(可能与该数据一起工作)并将其转发回$ upstream,它避免了网关的整个工作。
在IOT-EDGE-GATEWAY的消息路由部分中 https://docs.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)
答案 0 :(得分:2)
如果您的连接字符串包含网关主机名-并且您在设备上使用的SDK能够正确处理此问题,则该设备仅连接到网关,而不连接到IoT中心。
您可以在.NET SDK中查看示例:
this.HostName = builder.GatewayHostName == null || builder.GatewayHostName == "" ? builder.HostName : builder.GatewayHostName;
如果设置了网关主机名,则实际上会覆盖该连接的IoT中心主机名。