在 Azure IoT 中心成功配置设备后,我尝试让 Azure 设备更新正常工作。在门户上的 IoT 中心中,我选择“更新”,然后看到“诊断”选项卡带有警告标记。见下图:
如您所见,设备已被标记为不健康,并且 interfaceId 被报告为有故障。我已阅读文档,但无法弄清楚为什么它被报告为不正确。
设备 modelId 设置为:
dtmi:azure:iot:deviceUpdateContractModel;2
“deviceUpdate”在设备孪生中显示如下:
"__t": "c",
"agent": {
"compatPropertyNames": "manufacturer,model",
"deviceProperties": {
"aduVer": "DU;agent/1.0.0",
"interfaceId": "dtmi:azure:iot:deviceUpdate;1",
"manufacturer": "LoadAssist",
"model": "LoadAssist-ESP32S3-F16-R2"
},
"installedUpdateId": "{\"provider\":\"LoadAssist\",\"name\":\"LoadAssist-ESP32S3-F16-R2\",\"version\":\"1.0\"}",
"state": 0
}
},
如您所见,设备 InterfaceId 已正确设置为:
dtmi:azure:iot:deviceUpdate;1
所以,我不明白为什么该设备被报告为有错误的接口ID
这里是 Microsoft 文档的摘录,我已将我的设置添加到摘录中,并且设备孪生正确报告了它们:
任何建议都会有帮助,我很困惑。
解决方案其实很简单。
“deviceUpdate”应在设备孪生中显示如下:
"deviceUpdate": {
"__t": "c",
"agent": {
"compatPropertyNames": "manufacturer,model",
"deviceProperties": {
"aduVer": "DU;agent/1.0.0",
"contractModelId": "dtmi:azure:iot:deviceUpdateContractModel;2",
"manufacturer": "LoadAssist",
"model": "LoadAssist-ESP32S3-F16-R2"
},
如果 learn.microsoft.com 上的文档实际上反映了最新的 GA 版本格式,那就太好了,因为我本来可以更早找到它。
我检查了 azure-iot-middleware-freertos 的更改,但直到很多天后才决定深入研究中间件库中包含的库,并注意到与版本 5 兼容的更改很久以前就被推送了2022 年 12 月,我使用的是早期版本的 azure-sdk-for-c
一旦我更新到该库的最新版本,所有错误都消失了。