private static void DumpSolarMax(MaxComm.SolarMaxData data) { System.Console.Out.WriteLine("Power: {0} W, {1} %; {2}°C", data.PowerAC, data.PowerRelative, data.ConverterTemperature); System.Console.Out.WriteLine("AC: {0} V, {1} A", data.VoltageAC, data.CurrentAC); System.Console.Out.WriteLine("DC: {0} V, {1} A", data.VoltageDC, data.CurrentDC); System.Console.Out.WriteLine("Energy: {0} kWh/day, {1} kWh/month, {2} kWh/year, {3} h, total {4} kWh", data.EnergyDay, data.EnergyMonth, data.EnergyYear, data.TotalTime, data.TotalEnergy); }
public SolarMaxSample(MaxComm.SolarMaxData data) { this.dailyProduction = data.EnergyDay; this.voltageDC = data.VoltageDC; this.currentDC = data.CurrentDC; this.powerAC = data.PowerAC; this.voltageAC = data.VoltageAC; this.currentAC = data.CurrentAC; this.temperature = data.ConverterTemperature; this.period = data.LinePeriod; }
private static void DumpSolarMax() { MaxComm.Port port = new MaxComm.Port("COM3"); MaxComm.SolarMaxData solarMaxData1 = new MaxComm.SolarMaxData(1, port.ExchangeData(1, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP")); MaxComm.SolarMaxData solarMaxData2 = new MaxComm.SolarMaxData(2, port.ExchangeData(2, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP")); System.Console.Out.WriteLine("SolarMax #1:"); Program.DumpSolarMax(solarMaxData1); System.Console.Out.WriteLine("SolarMax #2:"); Program.DumpSolarMax(solarMaxData2); }
private void Publish(MaxComm.SolarMaxData data) { switch (data.Id) { case 1: this.solarMaxData1 = data.TotalEnergy <= 0 ? null : data; break; case 2: this.solarMaxData2 = data.TotalEnergy <= 0 ? null : data; break; } }
public void Acquire() { try { MaxComm.SolarMaxData solarMaxData1 = new MaxComm.SolarMaxData(1, this.port.ExchangeData(1, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP")); MaxComm.SolarMaxData solarMaxData2 = new MaxComm.SolarMaxData(2, this.port.ExchangeData(2, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP")); this.Publish(solarMaxData1); this.Publish(solarMaxData2); } catch { this.solarMaxData1 = null; this.solarMaxData2 = null; } }
public void RunThread() { try { System.Threading.Thread.Sleep(Settings.Default.PollInterval * 1000); while (true) { try { MaxComm.SolarMaxData solarMaxData1 = this.maxComm.SolarMaxData1; MaxComm.SolarMaxData solarMaxData2 = this.maxComm.SolarMaxData2; ResolVBus.DeltaSolData deltaSolData = this.resol.DeltaSolData; // TODO: store resulting data... System.Console.WriteLine(System.DateTime.Now.ToShortTimeString()); if (deltaSolData != null) { lock (this.exclusion) { this.deltaSolSamples.Add(new Data.DeltaSolSample(deltaSolData)); while (this.deltaSolSamples.Count > Settings.Default.LogSampleCount) { this.deltaSolSamples.RemoveAt(0); } } System.Console.WriteLine("DeltaSol: {0}°C, {1}°C, {2}°C, {3}%, {4}h", deltaSolData.TemperatureSensor1, deltaSolData.TemperatureSensor2, deltaSolData.TemperatureSensor3, deltaSolData.Pump, deltaSolData.TotalPumpTime); } else { lock (this.exclusion) { if (this.deltaSolSamples.Count > 0) { this.deltaSolSamples.RemoveAt(0); } } } if (solarMaxData1 != null) { lock (this.exclusion) { this.solarMaxSamples1.Add(new Data.SolarMaxSample(solarMaxData1)); while (this.solarMaxSamples1.Count > Settings.Default.LogSampleCount) { this.solarMaxSamples1.RemoveAt(0); } } System.Console.WriteLine("SolarMax{0}: {1}W, DC: {2}V {3}A, AC: {4}V {5}A", solarMaxData1.Id, solarMaxData1.PowerAC, solarMaxData1.VoltageDC, solarMaxData1.CurrentDC, solarMaxData1.VoltageAC, solarMaxData1.CurrentAC); } else { lock (this.exclusion) { if (this.solarMaxSamples1.Count > 0) { this.solarMaxSamples1.RemoveAt(0); } } } if (solarMaxData2 != null) { lock (this.exclusion) { this.solarMaxSamples2.Add(new Data.SolarMaxSample(solarMaxData2)); while (this.solarMaxSamples2.Count > Settings.Default.LogSampleCount) { this.solarMaxSamples2.RemoveAt(0); } } System.Console.WriteLine("SolarMax{0}: {1}W, DC: {2}V {3}A, AC: {4}V {5}A", solarMaxData2.Id, solarMaxData2.PowerAC, solarMaxData2.VoltageDC, solarMaxData2.CurrentDC, solarMaxData2.VoltageAC, solarMaxData2.CurrentAC); } else { lock (this.exclusion) { if (this.solarMaxSamples2.Count > 0) { this.solarMaxSamples2.RemoveAt(0); } } } } catch { } System.Threading.Thread.Sleep(System.Math.Max(Settings.Default.LogInterval, 10) * 1000); } } catch (System.Threading.ThreadInterruptedException) { } }