问题标签 [azure-iot-edge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
427 浏览

azure-iot-hub - Azure IoT Edge 作为透明网关 - 将网关名称作为属性添加到消息中?

我在透明网关模式下使用 Azure IoT Edge。现在,我想为来自通过 Edge 网关的叶设备的任何消息添加一个属性,该属性基本上包含 Edge 设备 ID(或其主机名等)。从而允许跟踪消息流。

这有可能吗?我已经尝试在其中放置一个自定义模块,我将通过它路由所有消息:

但是这样做我失去了“透明”的消息传递。随后在云 IoT 中心接收到的任何消息似乎都来自边缘设备,而不是叶设备。

0 投票
1 回答
113 浏览

azure-iot-edge - 代理配置格式无效

努力在我们的设备上安装 IoT Edge。已经尝试过 Linux 和 Windows 10,当我们尝试将 tempSensor 容器从演练推送到设备时,总是以边缘代理报告“代理配置格式无效”而告终。

想法?

0 投票
0 回答
157 浏览

visual-studio-code - IoT Edge 集成的 VS Code 命令不起作用

我遇到了问题,当尝试运行任何 IoT-Edge 命令时,Visual Studio Code 显示错误。例如,无法构建和推送映像或调用任何其他 IoT Edge 命令。请问可能是什么问题?IoT Edge 扩展当然已安装。

0 投票
1 回答
778 浏览

azure - 如何访问 Azure IoT Edge Pipeline 中的各种时间戳?

我在 Azure IoT Edge 中有 2 个简单的管道。现在,我有兴趣访问在管道中的每个步骤/节点添加到 iot 消息中的时间戳。例如 IoTHub 和 ASA 的“enqueuingTime”和 IoTHub 和 ASA 的“processedTime”等。以下是管道:

  1. IoT Edge 设备(输入数据源)-> IoTHub -> 自定义端点到 Azure 存储 + 路由 -> Azure Blob

    到目前为止,我发现每个 iot 消息都附加到一个带有属性的 blob 文件,EnqueuedTimeUtc并且SystemProperties.enqueuedTime在标头中。此外,两者都显示相同的值。这是IoTHub收到消息的时间还是IoTHub内部处理的时间?

    此外,如果我在 Azure 存储中使用自定义端点,消息会被批处理到单个 blob 文件中。是否可以在单个消息离开 IotHub 以及将其写入 blob 文件时访问时间戳?(即,我想获得诸如IoTHub-Processed-Timestamp或单个消息的Blob-Insertion-Timestamp之类的东西。)

  2. IoT Edge 设备(输入数据源)-> IoTHub -> Azure 流分析 -> Azure SQL 数据库

    在这种情况下,当我定义 ASA 查询时,输入是 IoTHub 端点Messaging。在Select语句中,我可以访问整个消息头,因此,我还可以访问EventEnqueuedUtcTimeEventProcessedUtcTime,它们是流分析作业中消息入队和处理完成的时间戳。此外,我可以访问IoTHub.EnqueuedTime,我假设它给出了消息在 IoTHub 中排队时的时间戳。当消息从 ASA 进入并插入 SQL DB 时,有没有办法获取时间戳?到目前为止,我正在使用GETDATE()在插入记录期间自动附加时间戳。这是一个好主意吗?

    如果我对 Azure IoT 时间戳有正确的理解,谁能告诉我?是否有关于如何访问所有此类时间戳的文档?

0 投票
0 回答
325 浏览

azure-iot-edge - IoT Edge 模拟 TempSensor 问题

我遇到了 Simulated TempSensor(在 Windows 上)的问题。尝试将其作为模块运行时,出现以下错误(来自 docker 的日志):使用传输 Mqtt_Tcp_Only 无法在 c:/mnt/edgemodule/edge-device-ca.cert.pem 找到根证书文件。

未处理的异常:System.AggregateException:发生一个或多个错误。(发生一个或多个错误。(根据验证程序,远程证书无效。)) ---> System.AggregateException:发生一个或多个错误。(远程证书根据验证程序无效。) ---> System.Security.Authentication.AuthenticationException:远程证书根据验证程序无效。在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken 消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo 异常) 在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken 消息,AsyncProtocolRequest asyncRequest) 在System.Net.Security.SslState。1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Azure.Devices.Client.DeviceClient.<>c.b__79_2(Task t) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback 回调,对象状态)在 System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) --- 从先前抛出异常的位置结束堆栈跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at SimulatedTemperatureSensor.Program.d__4.MoveNext() in /opt/vsts/work/1/s/edge-modules/SimulatedTemperatureSensor/src/Program.cs:line 105 - -- 在 System.Runtime 处从先前引发异常的位置结束堆栈跟踪。ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.Devices.Client.Transport.Mqtt.Util.d__14.MoveNext() --- 上一个堆栈跟踪结束抛出异常的位置 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttIotHubAdapter.d__34 .MoveNext() --- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 在 SimulatedTemperatureSensor.Program ./opt/vsts/work/1/s/edge-modules/SimulatedTemperatureSensor/src/Program.cs:line 28 中的 Main()

0 投票
0 回答
552 浏览

azure-iot-sdk - 基于 websockets 的 IoT Edge Mqtt

我有一个小的边缘模块,使用 azure-iot-sdk-python 用 python 编写,它使用 Mqtt 将事件发送回 IoT 中心。这很好用。

当我切换到通过 websockets ( ) 使用 Mqtt 时,不再传递事件IoTHubTransportProvider.MQTT_WS

在 edgeHub 日志中,我可以看到: 2018-06-14 07:33:33.599 +00:00 [ERR] [Microsoft.AspNetCore.Server.Kestrel] - Uncaught exception from the OnConnectionAsync method of an IConnectionAdapter. System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol

当我手动将注入的EdgeHubConnectionStringexport EdgeHubConnectionString=...Device Details

如何使用注入的EdgeHubConnectionString模块连接字符串通过 websockets 获取 Mqtt,而不是从“设备详细信息”页面获取?

0 投票
1 回答
447 浏览

azure - Azure IoT Edge Store and Forward Live Over Power Cycles

我已经在多个地方阅读过,EdgeHub 将存储由于网络问题而未发送到 IoT 中心的消息。我还没有发现,EdgeHub 是否会在电源循环的情况下保留这些未发送的消息。

有问题的配置是storeAndForwardConfiguration.timeToLiveSecs

以下是一些提及网络中断但未提及持久存储的链接: https ://docs.microsoft.com/en-us/azure/iot-edge/module-edgeagent-edgehub https://azure.microsoft.com/en -我们/博客/what-s-new-with-azure-iot-edge/

综上所述,EdgeHub 是存储和转发持久化未发送消息,还是需要创建自定义模块(SQL server、SQLite 等)来持久化未发送消息?

0 投票
1 回答
109 浏览

azure-iot-edge - 使用函数在 Azure IoT Edge 中发送电子邮件

对于物联网边缘功能,输入触发器为 edgeHubTrigger,输出为 edgeHub。我们如何使用函数在 IoT Edge 中发送电子邮件?这是建议在 IoT 边缘执行的方法,还是我们需要发送到 IoT Hub 并且侦听器功能(在云中)侦听 IoT hub 发送电子邮件?

0 投票
3 回答
1127 浏览

python - Azure IoT Edge 自定义模块未连接到 IoT-Hub-Container

我的问题可能与这篇文章相同,但我不了解那些花哨的大城市 stackoverflow 政治,所以我不想打扰任何人,只是问我自己的问题。

我想根据此处的 Microsoft 教程将我的 Windows PC 作为“边缘设备”连接到我的 Azure IoT Hub 。当我只运行作为 Microsoft 存储库中的图像的“温度传感器”模块时,一切正常。模块运行,连接到集线器容器,将数据发送到天蓝色集线器。

下一步是编写自定义模块。Microsoft 网站上还有一个教程,它提供了 C# 和 Python 的模板,可以针对任何目的进行修改。我尝试了两个示例(C# 和 Python),但只有 C#-Version 没有任何进一步的问题。但由于我不是很精通 C#,只精通 Python,所以我也需要运行那个。

但是 Python 版本在下载图像并启动容器后不久就失败了。edgeAgent 和 edgeHub 以及模拟“温度传感器”模块像以前一样运行没有问题。但是自定义 python 模块似乎无法连接到集线器容器。码头工人日志如下:

边缘代理:

边缘枢纽:

筛选:

这是无限重复的。集线器似乎确实注意到了过滤器,但身份验证成功,但访问仍然被拒绝。这可能是 Python SDK 中的一个错误,因为正如我所说,它在 C#-Version 中工作得非常好(在其他相同的情况下)。还是有可能是防火墙问题。我真的不这么认为,因为过滤器日志表明存在 MQTT 问题。据我了解,MQTT 仅适用于内部边缘设备流量,而不适用于传出流量(docker 和设备外部)。所以防火墙应该不是问题(?)实际问题显然是等待集线器确认连接的超时。因此,集线器要么没有收到连接请求,要么没有回复,要么回复以某种方式丢失。

感谢您提前提供的所有帮助。

0 投票
1 回答
270 浏览

azure-iot-hub - 延迟模块启动直到 edgeHub 完全启动

我正在尝试my-module在 arm32v7 Raspberry Pi-3 模型上实现一个 python 模块(比如,)。该模块基于resin/rpi-raspbian:stretch (azure-iothub-device-client==1.4.0b0)。我有iothub_clientpython 库,然后在模块内工作正常。但是,当我尝试iotedgectl start在 Pi 中进行部署和执行时,出现以下错误 docker logs -f <my-module>

现在这持续了几条消息,并且仅在开始之后(永远不会介于两者之间,一旦它稳定下来)。在几次这样的消息超时和错误之后,场景恢复正常,回调确认,我也能够在 IoTHub 中接收消息。结果,我总是错过前 5-10 条消息,并且无法在 IotHub 中看到这些消息。

经过多次故障排除,我认为存在一个一致的问题。edgeHub模块似乎总是在my-module已经开始发送消息几秒钟后完全初始化。由于edgeHub未完全初始化且未设置 TLS 身份验证和 MQTT 路径,my-module因此丢失了前几条消息。也许这是因为树莓派是一个慢速设备?

我尝试过my-module手动启动,在edgeHub完全初始化后,所有消息都会在这种情况下传送,没有任何问题。

问题:有没有办法等待edgeHub完全初始化然后开始发送消息?更重要的是,这是实际问题还是其他完全是问题的原因?

如果需要更多信息来获取问题上下文,请告诉我。我试图让我的查询保持简洁:)