更新属性时的 DeviceTwin 问题

DeviceTwin issue in updating properties

我在使用 C# 中的 DeviceTwin 更新 属性 属性时遇到问题。

我执行的代码如下:

            var registryManager = RegistryManager.CreateFromConnectionString(AppSettings.KeyIoT);
            var twin = await registryManager.GetTwinAsync(dto.DeviceIdorId);

            TwinCollection s = twin.Properties.Reported["Power"];

            Power toRet = JsonConvert.DeserializeObject<Power>(s.ToJson());
            toRet.MaximumAvailable = 50;

           var patch =
            @"{
            properties: {
                reported:{
                  Power:" + JsonConvert.SerializeObject(toRet) +
                @"}
                }
            }";

            await registryManager.UpdateTwinAsync(twin.DeviceId, patch, twin.ETag);

我也尝试了以下代码:

            var registryManager = RegistryManager.CreateFromConnectionString(AppSettings.KeyIoT);
            var twin = await registryManager.GetTwinAsync(dto.DeviceIdorId);

            TwinCollection s = twin.Properties.Reported["Power"];

            Power toRet = JsonConvert.DeserializeObject<Power>(s.ToJson());
            toRet.MaximumAvailable = 50;

            twin.Properties.Reported["Power"] = JsonConvert.SerializeObject(toRet);

            Twin updatedTwin = await registryManager.UpdateTwinAsync(twin.DeviceId, twin, twin.ETag);

问题是更新后,如果我重新读取,属性 MaximumAvailable 不会更新。 我究竟做错了什么? 谢谢

设备孪生 reported 属性在面向服务的一端是 readonly。查看更多详情 here