public static MeasureValueBox Parse(string webPage) { var result = new SortedDictionary <string, object>(); var measuredValueBox = new MeasureValueBox() { MeasuredUtcTime = DateTime.UtcNow, PluginName = "WebPageParser" }; var arrayParser = new ArrayParser(WebPagerReader.SelectAllElementsOfName(webPage, "td").ToArray()); result.Add("SW.MeasureTime", DateTime.Now); arrayParser.MoveToNextElementNotEmpty(0, true); arrayParser.MoveNext(); arrayParser.MoveToNextElementNotEmpty(0, true); arrayParser.MoveNext(); string all = arrayParser.MoveToNextElementNotEmpty(0, true); arrayParser.MoveNext(); result.Add("SW.All", all); var cultureInfo = new CultureInfo("de"); result.Add("SW.ClearSky", ArrayParser.ConvertToDouble(arrayParser.SearchForExactElement("clear sky:", 1, true), cultureInfo)); result.Add("SW.RealSkyMin", ArrayParser.ConvertToDouble(arrayParser.SearchForExactElement("real sky:", 1, false), cultureInfo)); result.Add("SW.RealSkyMax", ArrayParser.ConvertToDouble(arrayParser.SearchForExactElement("real sky:", 3, false), cultureInfo)); measuredValueBox.MeasuredValues = result; return(measuredValueBox); }
private RectangleF GetMeasureBoxBounds(MeasureValueBox box) { var boxCorner = LocalToDisplay(WorldToLocal(box.TargetPosition, _Zoom, true) + box.LocalOffset); boxCorner.X -= box.Size.Width / 2f; boxCorner.Y -= box.Size.Height / 2f; return(new RectangleF(boxCorner, box.Size)); }
private void SaveEnergyValues(SmlMessageFinder smlCutter, SmlMessageParser parser) { var box = new MeasureValueBox(); box.MeasuredUtcTime = DateTime.UtcNow; box.MeasuredValues.Add("EHZ.MeasureTime", DateTime.Now); box.MeasuredValues.Add("EHZ.ConsumedEnergy1", parser.ConsumedEnergy1_Wh); box.MeasuredValues.Add("EHZ.ConsumedEnergy2", parser.ConsumedEnergy2_Wh); box.MeasuredValues.Add("EHZ.ProducedEnergy1", parser.ProducedEnergy1_Wh); box.MeasuredValues.Add("EHZ.ProducedEnergy2", parser.ProducedEnergy2_Wh); box.MeasuredValues.Add("EHZ.Device", parser.Device); box.MeasuredValues.Add("EHZ.CompanyName", parser.CompanyName); _Queue.Send(box); }
public static MeasureValueBox Parse(string webPage) { var result = new SortedDictionary <string, object>(); var measuredValueBox = new MeasureValueBox() { MeasuredUtcTime = DateTime.UtcNow, PluginName = "Kostal" }; ArrayParser arrayParser = new ArrayParser(WebPagerReader.SelectAllElementsOfName(webPage, "td").ToArray()); result.Add("PV.MeasureTime", DateTime.Now); string typeAndName = arrayParser.MoveToNextElementNotEmpty(0, true); string[] parseName = typeAndName.Split('\n'); string piko = string.Empty; string name = string.Empty; if (parseName.Length == 3) { piko = parseName[0].Trim(); name = parseName[2].Trim(); } result.Add("PV.PikoType", piko); result.Add("PV.Name", name); result.Add("PV.CurrentACPower", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("aktuell", 1, true))); result.Add("PV.ProducedEnergy", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Gesamtenergie", 1, true))); result.Add("PV.DailyEnergy", ArrayParser.ConvertToDoubleInvariantCulture(arrayParser.SearchForExactElement("Tagesenergie", 1, true))); result.Add("PV.Status", arrayParser.SearchForExactElement("Status", 1, true)); result.Add("PV.String1Voltage", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Spannung", 1, true))); result.Add("PV.L1Voltage", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Spannung", 1, true))); result.Add("PV.String1Current", ArrayParser.ConvertToDoubleInvariantCulture(arrayParser.SearchForExactElement("Strom", 1, true))); result.Add("PV.L1Power", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Leistung", 1, true))); result.Add("PV.String2Voltage", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Spannung", 1, true))); result.Add("PV.L2Voltage", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Spannung", 1, true))); result.Add("PV.String2Current", ArrayParser.ConvertToDoubleInvariantCulture(arrayParser.SearchForExactElement("Strom", 1, true))); result.Add("PV.L2Power", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Leistung", 1, true))); result.Add("PV.L3Voltage", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Spannung", 1, true))); result.Add("PV.L3Power", ArrayParser.ConvertToInt(arrayParser.SearchForExactElement("Leistung", 1, true))); measuredValueBox.MeasuredValues = result; return(measuredValueBox); }
private void CalculateConsumedPower(SmlMessageFinder smlCutter, SmlMessageParser parser) { if (false == _LastComsumedEnergy_Wh.MeasuredTime.HasValue) { // first point _LastComsumedEnergy_Wh.MeasuredTime = smlCutter.MeasuredTime; _LastComsumedEnergy_Wh.Value = parser.ConsumedEnergy1_Wh; } else { double?watt = CalcWattDifference(parser.ConsumedEnergy1_Wh, smlCutter.MeasuredTime, _LastComsumedEnergy_Wh.Value, _LastComsumedEnergy_Wh.MeasuredTime.Value); if (watt.HasValue) { var box = new MeasureValueBox(); box.MeasuredUtcTime = _LastComsumedEnergy_Wh.MeasuredTime.Value.ToUniversalTime(); box.MeasuredValues.Add("EHZ.MeasureTime", _LastComsumedEnergy_Wh.MeasuredTime.Value); box.MeasuredValues.Add("EHZ.ComsumedPower", watt.Value); _Queue.Send(box); _LastComsumedEnergy_Wh.MeasuredTime = smlCutter.MeasuredTime; _LastComsumedEnergy_Wh.Value = parser.ConsumedEnergy1_Wh; } } }