更新属性时的 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
我在使用 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