【发布时间】:2021-03-17 17:05:06
【问题描述】:
我能够通过 python 示例成功连接到我创建的 IoT Edge。但是,相同的配置不适用于我的实际下游设备(ESP8266)。
下游设备(ESP8266)配置
我将以下示例用于 ESP8266:https://github.com/Azure/azure-iot-arduino/tree/master/examples/esp8266/iothub_ll_telemetry_sample
在代码中添加了证书和连接字符串:
// DEVICE_CONNECTION_STRING
HostName=iot-edge.leister;DeviceId=wemosd1mini;SharedAccessKey=XXXXXXXXX=
// CERTIFICATE
// same certificate as in python example (content of file azure-iot-test-only.root.ca.cert.pem)
static const char edgeCert [] =
"-----BEGIN CERTIFICATE-----\r\n"
...
"-----END CERTIFICATE-----\r\n";
IoTHubDeviceClient_LL_SetOption(device_ll_handle, OPTION_TRUSTED_CERT, edgeCert);
边缘设备配置
我根据https://docs.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway?view=iotedge-2018-06https://docs.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway?view=iotedge-2018-06上的文档(带有演示证书)配置了一个树莓派
我可以通过命令openssl s_client -connect iot-edge.leister:8883 -CAfile "C:\Users\micha\Desktop\azure-iot-test-only.root.ca.cert.pem" -showcerts成功验证证书
结果:验证返回码:0(ok)
ESP8266 日志
Creating IoTHub Device handle...
Sending message 1 to IoTHub...
dowork TLSIO_STATE_OPENING_WAITING_SOCKET
dowork TLSIO_STATE_OPENING_WAITING_SSL
Error opening socket 0
Calling error callback
The device client has been disconnected
Error: failure opening connection to endpoint
我无法以 相同的配置将 ESP8266 作为下游设备连接到我的 IoT Edge。
更多详情可以在这里找到:https://github.com/Azure/azure-iot-sdk-c/issues/1902
【问题讨论】:
-
您是否已将下游设备添加为边缘设备的子设备? docs.microsoft.com/en-us/azure/iot-edge/…
-
是的,我已经做到了。认为问题在于 TLS 检查。可能需要设置本地 dns 服务器以使主机名可用,如果可行,请重试。
-
可以,或者将边缘设备的config.yaml中的hostname设置为192.168.4.1,然后重启iotedged。
标签: azure-iot-hub azure-iot-edge azure-iot-sdk