我已经设置了Azure IoT Edge模块,并且在通过Azure将其部署到IoT Edge运行时时,它工作得很好。
但是,在本地调试模块时,我找不到与模块交互的方法。我需要做的是在其上调用直接方法并在模块twin运行时对其进行修改。
此外,我还有一个问题:本地调试模块实际连接到哪里?是否使用Visual Studio的“ IoT Edge工具”中配置的连接字符串打开与Azure IoT Edge设备的连接?至少看起来不是这样,因为它不会从Azure IoT中心读取Module Twin的设置。
其他问题:在Visual Studio中的Edge解决方案上,当我右键单击“项目”节点时,可以“构建并推送模块”到Azure容器注册表,并在模拟器中运行它。我认为在模拟器中运行它与调试它不一样吗?
非常感谢您!
答案 0 :(得分:2)
在Visual Studio中调试模块时,模板以单模块模式启动iotedgehubdev(即模拟器)。
在这种模式下,您可以通过REST API将消息发送到模块
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "<input_name>","data":"hello world"}' http://localhost:53000/api/v1/messages
它还会启动您的模块并将其命名为“目标”
iotedgehubdev modulecred -l -m "target"
EdgeHubConnectionString=HostName=<hostname>;GatewayHostName=localhost;DeviceId=<your-edge-device-id>;ModuleId=target;SharedAccessKey=<key>
EdgeModuleCACertificateFile=C:\ProgramData\iotedgehubdev\data\certs\edge-device-ca\cert\edge-device-ca.cert.pem
可以在azure门户-iothub中访问模块目标。您可以使用该接口来调用方法并更改孪生模块
最后,在模拟器中运行与调试不同。 当您使用该命令时,VS在模式模拟器中运行iotedgehubdev,它将运行部署文件中的所有模块并应用路由,配置等。
您仍然可以调试模块,但是必须使用远程调试器,这是另一个主题。