azure - 即使边缘用作网关,叶子/下游设备是否直接连接到 iot-hub?

标签 azure azure-iot-hub azure-iot-edge azure-iot-suite

我正在尝试将物联网边缘设备设置为边缘网关。我们不希望我们的叶子/传感器/下游设备直接连接到互联网/云,因此我希望物联网边缘网关(顾名思义)能够桥接下游设备和云/物联网之间的连接中心。但是,我意识到任何设备级别的 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;

https://github.com/Azure/azure-iot-sdk-csharp/blob/f86cb76470326f5af8426f3c2695279f51f6e0c8/iothub/device/src/IotHubConnectionString.cs#L30

如果设置了网关主机名,它实际上会覆盖连接的 IoT 中心主机名。

关于azure - 即使边缘用作网关,叶子/下游设备是否直接连接到 iot-hub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001913/

相关文章:

azure - 如何创建 GitHub 工作流程以将 Azure 容器组部署到 ACI?

C# IoT 设备 SDK、IotHubUnauthorizedAccess 仅当使用 X.509 证书 GetFileUploadSasUriAsync 时

azure - "RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn' t 与受支持的版本匹配!”在 Azure DevOps - Azure IoT Edge 任务 - 构建中

c# - (C#) 如何检查物联网设备是否能够发送到IoTHub

azure - 什么时候 Azure IoT 中心可以优于 IoT Central?

azure - 如何将LoRaWAN网关连接到Azure IoT(Edge)Hub?

azure - Azure IoT Edge 安装中的配置错误 - "configuration has correct URIs for daemon mgmt endpoint - Error"

azure - 如何在第二个查询中使用第一个 KQL 查询的结果来过滤结果?

c# - 如何将具有多个组件的应用程序部署到 Azure?

node.js - Swagger-UI-Express 未在 Azure 应用服务中加载 : 404 Not Found