public async Task Update() { var airHumidifer = await XiaomiAirHumidifier.LoadFromEntityId(connector, XiaomiAirHumidifier.Name.AirHumidifier); if (dateTimeHelper.Now.Between(new TimeSpan(23, 0, 0), new TimeSpan(8, 0, 0))) { notifyCondition.Reset(); return; } if (airHumidifer.Depth == 0) { return; } var waterLevelPercent = GetPercentDepth(airHumidifer.Depth); if (waterLevelPercent.HasValue) { logger.LogDebug("Got water level percent {WaterLevelPercent}", waterLevelPercent.Value); if (notifyCondition.CheckFulfilled(waterLevelPercent.Value < percentToInform)) { logger.LogInformation("Sending notification about water level. Actual: {WaterLevelPercent}%", waterLevelPercent); await notificationPushService.PushNotification($"Zbyt mało wody: {waterLevelPercent:N2}%"); } } }
public async Task Update() { var airHumidifer = await XiaomiAirHumidifier.LoadFromEntityId(connector, XiaomiAirHumidifier.Name.AirHumidifier); logger.LogDebug("Checking air humidifier. Humidity: {Humidity}", airHumidifer.Humidity); logger.LogDebug("Air humidifier current state: {State}", airHumidifer.State); if (dateTimeHelper.Now.Between(new TimeSpan(10, 0, 0), new TimeSpan(19, 0, 0))) { if (airHumidifer.State == "on") { logger.LogInformation("Turning off {EntityId}, because of day", airHumidifer.EntityId); await airHumidifer.TurnOff(); } turnOnCondition.Reset(); turnOffCondition.Reset(); return; } if (turnOffCondition.CheckFulfilled(airHumidifer.Humidity >= turningOffValue)) { if (airHumidifer.State == "on") { logger.LogInformation("Turning off {EntityId}, because humidity is bigger than {TurningOnValue} for {ForTime} minutes", airHumidifer.EntityId, turningOffValue, forTime); await airHumidifer.TurnOff(); } } if (turnOnCondition.CheckFulfilled(airHumidifer.Humidity <= turningOnValue)) { if (airHumidifer.State == "off") { logger.LogInformation("Turning on {EntityId}, because humidity is lower or equal than {TurningOnValue} for {ForTime} minutes", airHumidifer.EntityId, turningOnValue, forTime); await airHumidifer.TurnOn(); } } if (airHumidifer.State == "on") { var changeHumidityInfo = airHumidifer.Humidity switch { var humidity when humidity <= 40 => new { Change = true, Speed = AirHumidifierSpeed.High }, var humidity when humidity <= 50 => new { Change = true, Speed = AirHumidifierSpeed.Medium }, var humidity when humidity <= turningOffValue => new { Change = true, Speed = AirHumidifierSpeed.Silent }, _ => new { Change = false, Speed = AirHumidifierSpeed.Auto } }; logger.LogDebug("Change humidity info. Change: {Change}, Speed: {Speed}", changeHumidityInfo.Change, changeHumidityInfo.Speed); if (changeHumidityInfo.Change && changeHumidityInfo.Speed != airHumidifer.Speed) { logger.LogInformation("Changing speed of {EntityId} from {FromSpeed} to {ToSpeed}", airHumidifer.EntityId, airHumidifer.Speed, changeHumidityInfo.Speed); await airHumidifer.SetSpeed(changeHumidityInfo.Speed); } } } }