72 lines
2.4 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
|
|
}
|