private static WindAlert GetWindAlert(Wind wind = null, decimal change = 0, WindCondition previous = null)
 {
     if (wind != null)
     {
         previous?.Update(wind.Speed);
         return(new WindAlert(wind.Speed > int.Parse(_config["MAXIMUM_WIND_SPEED_IN_KPH"]), change));
     }
     return(new WindAlert());
 }
Exemple #2
0
        public SensorData(string data)
        {
            try
            {
                date = Convert.ToDateTime(data.Substring(0, 22));
                age  = DateTime.Now.Subtract(date).TotalSeconds;
                switch (data.Substring(23, 1))
                {
                case "C":
                    tempUnits = TempUnits.tempCelsius;
                    break;

                case "F":
                    tempUnits = TempUnits.tempFahrenheit;
                    break;
                }
                switch (data.Substring(25, 1))
                {
                case "K":
                    windUnits = WindUnits.windKmPerHour;
                    break;

                case "M":
                    windUnits = WindUnits.windMilesPerHour;
                    break;

                case "m":
                    windUnits = WindUnits.windMeterPerSecond;
                    break;
                }
                skyAmbientTemp = Convert.ToDouble(data.Substring(27, 6));
                ambientTemp    = Convert.ToDouble(data.Substring(34, 6));
                sensorTemp     = Convert.ToDouble(data.Substring(40, 6));
                windSpeed      = Convert.ToDouble(data.Substring(48, 6));
                humidity       = Convert.ToInt32(data.Substring(55, 3));
                dewPoint       = Convert.ToDouble(data.Substring(59, 6));
                heaterSetting  = Convert.ToInt32(data.Substring(66, 3));
                rainFlag       = (WetFlagValue)Convert.ToInt32(data.Substring(70, 1));
                wetFlag        = (WetFlagValue)Convert.ToInt32(data.Substring(72, 1));
                sinceSeeconds  = Convert.ToInt32(data.Substring(74, 5));
                //lastWriten = Convert.ToDateTime(data.Substring(80, 12));
                cloudCondition = (CloudCondition)Convert.ToInt32(data.Substring(93, 1));
                windCondition  = (WindCondition)Convert.ToInt32(data.Substring(95, 1));
                rainCondition  = (RainCondition)Convert.ToInt32(data.Substring(97, 1));
                dayCondition   = (DayCondition)Convert.ToInt32(data.Substring(99, 1));
                var x = Convert.ToInt32(data.Substring(101, 1));
                roofCloseRequested = (x == 1) ? true : false;
            }
            catch (Exception e)
            {
                throw new InvalidValueException(string.Format("Could not parse sensor data, caught: {0}", e.Message));
            }
        }