/*using InnovEnergy.Lib.Devices.IEM3kGridMeter; using InnovEnergy.Lib.Protocols.DBus.Protocol.DataTypes; using InnovEnergy.Lib.Victron.VeDBus; namespace InnovEnergy.App.SchneiderDriver; // TODO: Does not compile public record Signal(Func Source, ObjectPath Path, string Format = "") { public VeProperty ToVeProperty(Iem3KGridMeterRegisters status) { var value = Source(status); return new VeProperty(Path, value, string.Format($"{{0:{Format}}}", value)); } }*/ using InnovEnergy.Lib.Devices.IEM3kGridMeter; using InnovEnergy.Lib.Protocols.DBus.Protocol.DataTypes; using InnovEnergy.Lib.Victron.VeDBus; using System; namespace InnovEnergy.App.SchneiderDriver { public record Signal(Func Source, ObjectPath Path, string Format = "") { // Converts the status object to a VeProperty, handling null status gracefully public VeProperty ToVeProperty(Iem3KGridMeterRegisters status) { // Check if status is null and log a message if (status == null) { Console.WriteLine($"Status is null for path: {Path}"); // Return a default VeProperty if status is null return new VeProperty(Path, default(double), string.Format($"{{0:{Format}}}", default(double))); } // Retrieve the value using the provided source function var value = Source(status); // Handle the case where the value itself might be null if (value == null) { Console.WriteLine($"Value is null for path: {Path}"); // Return a default VeProperty if value is null return new VeProperty(Path, default(double), string.Format($"{{0:{Format}}}", default(double))); } if (value is float floatValue) { value = (double)floatValue; } // Create and return the VeProperty with the actual value and format return new VeProperty(Path, value, string.Format($"{{0:{Format}}}", value)); } } } /*namespace InnovEnergy.App.SchneiderDriver { public record Signal(Func Source, ObjectPath Path, string Format = "") { public VeProperty ToVeProperty(Iem3KGridMeterRegisters status) { if (status == null) { Console.WriteLine($"Status is null for path: {Path}"); // Return a default VeProperty if status is null return new VeProperty(Path, default, String.Format($"{{0:{Format}}}", default)); } var value = Source(status); return new VeProperty(Path, value, String.Format($"{{0:{Format}}}", value)); } } }*/