Azure IoT 中心更新“诊断”选项卡报告不健康的预配设备 - 原因接口 ID

问题描述 投票:0回答:1

在 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 文档的摘录,我已将我的设置添加到摘录中,并且设备孪生正确报告了它们:

任何建议都会有帮助,我很困惑。

azure ota
1个回答
0
投票

解决方案其实很简单。

“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

一旦我更新到该库的最新版本,所有错误都消失了。

© www.soinside.com 2019 - 2024. All rights reserved.