Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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;
         }
     }
 }