Files
mapo-iob-libs/EgwProxy.Shelly/Converters/EMDataDtoConverter.cs
T
2025-08-07 08:35:34 +02:00

72 lines
2.4 KiB
C#

using EgwProxy.Shelly.DTO.Gen2;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwProxy.Shelly.Converters
{
public class EMDataDtoConverter : JsonConverter<EMDataDto>
{
public override EMDataDto ReadJson(JsonReader reader, Type objectType, EMDataDto existingValue, bool hasExistingValue, JsonSerializer serializer)
{
JObject obj = JObject.Load(reader);
var dto = new EMDataDto
{
Id = (int)obj["id"],
Errors = obj["errors"]?.ToObject<List<string>>() ?? new List<string>()
};
dto.TotalPhaseA = new EnergyDto
{
ActEnergy = (double)obj["a_total_act_energy"],
RetEnergy = (double)obj["a_total_act_ret_energy"]
};
dto.TotalPhaseB = new EnergyDto
{
ActEnergy = (double)obj["b_total_act_energy"],
RetEnergy = (double)obj["b_total_act_ret_energy"]
};
dto.TotalPhaseC = new EnergyDto
{
ActEnergy = (double)obj["c_total_act_energy"],
RetEnergy = (double)obj["c_total_act_ret_energy"]
};
dto.TotalAll = new EnergyDto
{
ActEnergy = (double)obj["total_act"],
RetEnergy = (double)obj["total_act_ret"]
};
return dto;
}
public override void WriteJson(JsonWriter writer, EMDataDto value, JsonSerializer serializer)
{
var obj = new JObject
{
["id"] = value.Id,
["a_total_act_energy"] = value.TotalPhaseA.ActEnergy,
["a_total_act_ret_energy"] = value.TotalPhaseA.RetEnergy,
["b_total_act_energy"] = value.TotalPhaseB.ActEnergy,
["b_total_act_ret_energy"] = value.TotalPhaseB.RetEnergy,
["c_total_act_energy"] = value.TotalPhaseC.ActEnergy,
["c_total_act_ret_energy"] = value.TotalPhaseC.RetEnergy,
["total_act"] = value.TotalAll.ActEnergy,
["total_act_ret"] = value.TotalAll.RetEnergy,
["errors"] = JArray.FromObject(value.Errors)
};
obj.WriteTo(writer);
}
}
}