public void IsWet_LightRainSixHoursAgo_Dry() { // Assign var systemTime = new TestSystemTime(2018, 8, 13, 18, 0); // Forecasted weather var smhi = new TestSmhi(systemTime, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 18, 0, 0), precipitationMax: 0m, relativeHumidity: 45), }); // Past weather var rainSensor = new SmhiRainSensor(systemTime, smhi, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 12, 0, 0), precipitationMax: 0.1m, relativeHumidity: 40), NewTimeSerie(new DateTime(2018, 8, 13, 13, 0, 0), precipitationMax: 0m, relativeHumidity: 40), NewTimeSerie(new DateTime(2018, 8, 13, 14, 0, 0), precipitationMax: 0m, relativeHumidity: 40), NewTimeSerie(new DateTime(2018, 8, 13, 15, 0, 0), precipitationMax: 0m, relativeHumidity: 40), NewTimeSerie(new DateTime(2018, 8, 13, 16, 0, 0), precipitationMax: 0m, relativeHumidity: 40), NewTimeSerie(new DateTime(2018, 8, 13, 17, 0, 0), precipitationMax: 0m, relativeHumidity: 40), }); // Act bool isWet = rainSensor.IsWet; // Assert Assert.IsFalse(isWet); }
public void IsWet_NotRainButHighHumidityDuringNight_Wet() { // Assign var systemTime = new TestSystemTime(2018, 8, 14, 6, 0); // Forecasted weather var smhi = new TestSmhi(systemTime, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 14, 6, 0, 0), precipitationMax: 0m, relativeHumidity: 70), }); // Past weather var rainSensor = new SmhiRainSensor(systemTime, smhi, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 12, 22, 0), precipitationMax: 0m, relativeHumidity: 80), NewTimeSerie(new DateTime(2018, 8, 13, 13, 23, 0), precipitationMax: 0, relativeHumidity: 85), NewTimeSerie(new DateTime(2018, 8, 14, 14, 0, 0), precipitationMax: 0, relativeHumidity: 90), NewTimeSerie(new DateTime(2018, 8, 14, 15, 1, 0), precipitationMax: 0, relativeHumidity: 95), NewTimeSerie(new DateTime(2018, 8, 14, 16, 2, 0), precipitationMax: 0, relativeHumidity: 99), NewTimeSerie(new DateTime(2018, 8, 14, 17, 3, 0), precipitationMax: 0, relativeHumidity: 98), NewTimeSerie(new DateTime(2018, 8, 14, 17, 4, 0), precipitationMax: 0m, relativeHumidity: 95), NewTimeSerie(new DateTime(2018, 8, 14, 17, 5, 0), precipitationMax: 0m, relativeHumidity: 90), }); // Act bool isWet = rainSensor.IsWet; // Assert Assert.IsTrue(isWet); }
static void Main(string[] args) { string path = Directory.GetCurrentDirectory(); var serializer = new XmlSerializer(typeof(MowitConfig)); bool simulatedHomeSensor = false; foreach (string arg in args) { if (arg == "/configexample") { TextWriter textWriter = new StreamWriter(Path.Combine(path, "MowitSettings.xml.example")); serializer.Serialize(textWriter, MowitConfig.GetExampleConfig()); textWriter.Flush(); return; } if (arg == "/simulatedcontacthomesensor") { simulatedHomeSensor = true; } } TextReader textReader = new StreamReader(Path.Combine(path, "MowitSettings.xml")); Config = (MowitConfig)serializer.Deserialize(textReader); Console.WriteLine("Press ENTER to start the Mowit service."); Console.ReadLine(); EmailSender.Init(Config.EmailConfig); var systemTime = new SystemTime(); var powerSwitch = new UrlPowerSwitch(Config.MowControlConfig.PowerOnUrl, Config.MowControlConfig.PowerOffUrl); IHomeSensor homeSensor; if (simulatedHomeSensor) { homeSensor = new SimulatedContactHomeSensor(systemTime, Config.MowControlConfig.TimeIntervals.ToArray(), powerSwitch); } else { homeSensor = new TimeBasedHomeSensor(systemTime.Now, Config.MowControlConfig, powerSwitch, systemTime); } Smhi smhi = new Smhi(Config.MowControlConfig.CoordLat, Config.MowControlConfig.CoordLon, new TimeSpan(1, 0, 0)); var weatherForecast = new WeatherForecast(smhi, Config.MowControlConfig.MaxHourlyThunderPercent, Config.MowControlConfig.MaxHourlyPrecipitaionMillimeter, Config.MowControlConfig.MaxRelativeHumidityPercent); var logger = new MowLogger(); logger.LogItemWritten += Logger_LogItemWritten; var rainSensor = new SmhiRainSensor(systemTime, smhi); var mowController = new MowController(Config.MowControlConfig, powerSwitch, weatherForecast, systemTime, homeSensor, logger, rainSensor); var task = mowController.StartAsync(); task.Wait(); }
public void IsWet_CurrentlyRaining_Wet() { // Assign var systemTime = new TestSystemTime(2018, 8, 13, 8, 0); // Forecasted weather var smhi = new TestSmhi(systemTime, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 8, 0, 0), precipitationMax: 0.2m, relativeHumidity: 65), }); // Past weather var rainSensor = new SmhiRainSensor(systemTime, smhi, new ForecastTimeSerie[] {}); // Act bool isWet = rainSensor.IsWet; // Assert Assert.IsTrue(isWet); }
public void IsWet_HeavyRainAnHourAgo_StillWet() { // Assign var systemTime = new TestSystemTime(2018, 8, 13, 8, 0); // Forecasted weather var smhi = new TestSmhi(systemTime, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 8, 0, 0), precipitationMax: 0m, relativeHumidity: 69), }); // Past weather var rainSensor = new SmhiRainSensor(systemTime, smhi, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 13, 7, 0, 0), precipitationMax: 1.5m, relativeHumidity: 75), }); // Act bool isWet = rainSensor.IsWet; // Assert Assert.IsTrue(isWet); }
public void IsWet_SmhiReportsWeatherThatLaterChanges_FirstWetThenNotWet() { // Assign var systemTime = new TestSystemTime(2018, 8, 14, 5, 0); // Forecasted weather var smhi = new TestSmhi(systemTime, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 14, 5, 0, 0), precipitationMax: 0.5m, relativeHumidity: 45), }); // Past weather var rainSensor = new SmhiRainSensor(systemTime, smhi, new ForecastTimeSerie[] { NewTimeSerie(new DateTime(2018, 8, 14, 5, 0, 0), precipitationMax: 0m, relativeHumidity: 50), }); // Act bool isWet = rainSensor.IsWet; // Assert Assert.IsTrue(isWet); }