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()); }
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)); } }