如何使用物联网设备 SDK 连接到物联网边缘系统模块
How to connect to IoT Edge System Module using IoT Device SDK
我知道我们可以使用 IoT 设备 SDK 通过模块的连接字符串与我的 IoT Edge 设备中的模块进行通信。我可以连接到非系统边缘模块,但不能连接到系统模块。我想知道这是否确实是不允许的,如果有人知道对此有任何参考吗?
我指的是github中的官方示例。
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(s_moduleConnectionString, s_transportType);
var sample = new TwinSample(moduleClient);
sample.RunSampleAsync().GetAwaiter().GetResult(); // this call the code below
//My breakpoint in RunSampleAsync()
//it hangs at the line below
Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);
我希望系统模块和非系统模块的行为相同。非系统模块工作正常。
您可以编写作为模块部署到设备 运行 IoT Edge 的代码。您的模块可以查询自己的孪生和属性。组成边缘运行时($edgeAgent
和 $edgeHub
)的系统模块可以为自己做同样的事情。您不应尝试使用系统模块之一的标识连接到 IoT 中心,因为它会与系统模块发生冲突。
您可以在 Azure 门户中看到任何模块的孪生,包括系统模块孪生。您还可以使用 service SDK with a shared access policy to get this information. (The RegistryManager sample here 演示连接到 IoT 中心以获取孪生信息。它只显示设备而不显示模块,但概念相似。)
Edge Hub(又名 $edgeHub
)确实有一个本地缓存,它会暂时保存收到的消息,直到它可以将它们传送到其他模块或云端。此缓存没有 public 接口——它完全是内部的,存储在其中的数据格式随时可能更改,因此您不应尝试访问它。
我知道我们可以使用 IoT 设备 SDK 通过模块的连接字符串与我的 IoT Edge 设备中的模块进行通信。我可以连接到非系统边缘模块,但不能连接到系统模块。我想知道这是否确实是不允许的,如果有人知道对此有任何参考吗?
我指的是github中的官方示例。
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(s_moduleConnectionString, s_transportType);
var sample = new TwinSample(moduleClient);
sample.RunSampleAsync().GetAwaiter().GetResult(); // this call the code below
//My breakpoint in RunSampleAsync()
//it hangs at the line below
Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);
我希望系统模块和非系统模块的行为相同。非系统模块工作正常。
您可以编写作为模块部署到设备 运行 IoT Edge 的代码。您的模块可以查询自己的孪生和属性。组成边缘运行时($edgeAgent
和 $edgeHub
)的系统模块可以为自己做同样的事情。您不应尝试使用系统模块之一的标识连接到 IoT 中心,因为它会与系统模块发生冲突。
您可以在 Azure 门户中看到任何模块的孪生,包括系统模块孪生。您还可以使用 service SDK with a shared access policy to get this information. (The RegistryManager sample here 演示连接到 IoT 中心以获取孪生信息。它只显示设备而不显示模块,但概念相似。)
Edge Hub(又名 $edgeHub
)确实有一个本地缓存,它会暂时保存收到的消息,直到它可以将它们传送到其他模块或云端。此缓存没有 public 接口——它完全是内部的,存储在其中的数据格式随时可能更改,因此您不应尝试访问它。