Esempio n. 1
0
        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);
                }
            }
        }
    }