Files
mapo-iob-libs/EgwProxy.Shelly/Converters/EnergyDtoConverter.cs
T
Samuele Locatelli fa258cf09b Shelly:
-Update libreria  x Pro3Em
2025-08-06 18:38:31 +02:00

67 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 EnergyDtoConverter : JsonConverter<EnergyDto>
{
public override EnergyDto ReadJson(JsonReader reader, Type objectType, EnergyDto existingValue, bool hasExistingValue, JsonSerializer serializer)
{
JObject obj = JObject.Load(reader);
var dto = new EnergyDto
{
Id = (int)obj["id"],
NeutralCurrent = obj["n_current"]?.ToObject<double?>() ?? 0,
TotalCurrent = (double)obj["total_current"],
TotalActivePower = (double)obj["total_act_power"],
TotalApparentPower = (double)obj["total_aprt_power"],
UserCalibratedPhase = obj["user_calibrated_phase"]?.ToObject<List<double>>() ?? new List<double>()
};
dto.PhaseA = new PhaseDataDto
{
Current = (double)obj["a_current"],
Voltage = (double)obj["a_voltage"],
ActivePower = (double)obj["a_act_power"],
ApparentPower = (double)obj["a_aprt_power"],
PowerFactor = (double)obj["a_pf"],
Frequency = (double)obj["a_freq"]
};
dto.PhaseB = new PhaseDataDto
{
Current = (double)obj["b_current"],
Voltage = (double)obj["b_voltage"],
ActivePower = (double)obj["b_act_power"],
ApparentPower = (double)obj["b_aprt_power"],
PowerFactor = (double)obj["b_pf"],
Frequency = (double)obj["b_freq"]
};
dto.PhaseC = new PhaseDataDto
{
Current = (double)obj["c_current"],
Voltage = (double)obj["c_voltage"],
ActivePower = (double)obj["c_act_power"],
ApparentPower = (double)obj["c_aprt_power"],
PowerFactor = (double)obj["c_pf"],
Frequency = (double)obj["c_freq"]
};
return dto;
}
public override void WriteJson(JsonWriter writer, EnergyDto value, JsonSerializer serializer)
{
throw new NotImplementedException("Serialization not implemented");
}
}
}