Innovenergy_trunk/csharp/app/VenusLogger/Parsers/System.cs

170 lines
5.5 KiB
C#

// using System.Collections.Immutable;
// using InnovEnergy.WireFormat.VictronV1;
// using VeDBus;
//
// namespace InnovEnergy.VenusLogger.Parsers;
//
// using Props = ImmutableDictionary<String, VeProperty>;
//
// public static class System
// {
// private static AcDeviceType GetAcConnectionType(this Props props) => props.TryGetProperty<AcDeviceType>("/Ac/ActiveIn/Source");
//
// public static VictronTopologyV1 GetSystemTopology(this IReadOnlyList<ServiceProperties> systemSv)
// {
// return systemSv.Any()
// ? systemSv[0].Properties.GetSystemTopology()
// : new VictronTopologyV1();
// }
//
// public static VictronTopologyV1 GetSystemTopology(this Props props)
// {
// var connectionType = props.GetAcConnectionType();
//
//
// var grid = props.GetAcInDevice(connectionType);
// var acInBus = props.GetAcInBus(connectionType);
// var acOutBus = props.GetAcOutBus();
// var dcBus = props.GetDcBus();
//
//
//
// return new VictronTopologyV1
// {
// Grid = { grid },
// AcIn = acInBus.NoneIfEmpty(),
// AcOut = acOutBus.NoneIfEmpty(),
// DcBus = dcBus.NoneIfEmpty(),
// Battery = battery,
// };
// }
//
// private static DcBus GetDcBus(this Props props)
// {
// var pv = props.GetPvCharger();
// var load = props.GetDcLoad();
//
// return new DcBus
// {
// Pv = { pv },
// Load = { load }
// };
// }
//
// private static AcBus GetAcOutBus(this Props props)
// {
// var pv = props.GetAcOutDevice(AcDeviceType.PvInverter);
// var load = props.GetAcOutDevice(AcDeviceType.AcLoad);
//
// return new AcBus
// {
// Pv = { pv },
// Load = { load },
// };
// }
//
// private static AcBus GetAcInBus(this Props props, AcDeviceType acProsumerType)
// {
// var pv = props.GetAcInDevice(AcDeviceType.PvInverter, acProsumerType);
// var load = props.GetAcInDevice(AcDeviceType.AcLoad, acProsumerType);
//
// return new AcBus
// {
// Pv = { pv },
// Load = { load },
// };
// }
//
//
// private static IEnumerable<AcDevice> GetAcInDevice(this Props props,
// AcDeviceType deviceType,
// AcDeviceType busType = AcDeviceType.Unknown)
// {
// var deviceName = GetDeviceName(deviceType);
//
// if (busType != AcDeviceType.Unknown)
// {
// deviceName += deviceType == AcDeviceType.AcLoad
// ? "OnInput"
// : "On" + GetDeviceName(busType);
// }
//
// var acPhases = props.GetPhases(deviceName).ToList();
//
// if (acPhases.Count > 0 && acPhases.Any(p => p.Power != 0))
// yield return new Device { Phases = { acPhases } };
// }
//
// private static Battery GetBattery(this Props props)
// {
// return new Battery
// {
// Power = props.GetBatteryProp("Power"),
// Current = props.GetBatteryProp("Current"),
// Voltage = props.GetBatteryProp("Voltage"),
// Soc = props.GetBatteryProp("Soc"),
// Temperature = props.GetBatteryProp("Temperature")
// };
// }
//
// private static Single GetBatteryProp(this Props props, String prop) => props.TryGetProperty<Single>("/Dc/Battery/" + prop);
//
//
// private static IEnumerable<Device> GetPvCharger(this Props props)
// {
// var power = props.TryGetProperty<Single>("/Dc/Pv/Power");
//
// if (power == 0)
// yield break;
//
// yield return new Device
// {
// ProducerType = ProducerType.Mppt,
// Phases = { new Phase { Power = power } }
// };
// }
//
// private static IEnumerable<DcDevice> GetDcLoad(this Props props)
// {
// var power = props.TryGetProperty<Single>("/Dc/System/Power");
//
// if (power != 0)
// yield return new DcDevice { Power = power };
// }
//
// private static IEnumerable<Device> GetAcOutDevice(this Props props, AcDeviceType deviceType)
// {
// var deviceName = GetDeviceName(deviceType) + "OnOutput";
// var acPhases = props.GetPhases(deviceName);
//
// if (acPhases.Count > 0 && acPhases.Any(p => p.Power != 0))
// yield return new AcDevice { Phases = { acPhases } };
// }
//
// private static String GetDeviceName(AcDeviceType deviceType) => deviceType switch
// {
// AcDeviceType.Grid => "Grid",
// AcDeviceType.Shore => "Grid",
// AcDeviceType.AcLoad => "Consumption",
// AcDeviceType.Generator => "Genset",
// AcDeviceType.PvInverter => "Pv",
// _ => "Unknown"
// };
//
//
// private static Int32 GetNbOfPhases(this Props props, String deviceName)
// {
// return props.TryGetProperty("/Ac/" + deviceName + "/NumberOfPhases", 0);
// }
//
// private static IEnumerable<Phase> GetPhases(this Props props, String path)
// {
// var nPhases = props.GetNbOfPhases(path);
//
// Phase GetPhase(Int32 p) => new Phase { Power = props.TryGetProperty($"/Ac/{path}/L{p}/Power", 0.0f) };
//
// return Enumerable
// .Range(1, nPhases)
// .Select(GetPhase);
// }
// }