private async Task <bool> ShouldLightBeSwitchedOn()
        {
            var laptopEthernet = await connector.LoadEntityFromStates <Sensor>(Sensor.Name.LaptopEthernet.GetEntityId());

            var businessLaptop = await connector.LoadEntityFromStates <Sensor>(Sensor.Name.BusinessLaptopWifi.GetEntityId());

            var computer = await connector.LoadEntityFromStates <Sensor>(Sensor.Name.DesktopComputer.GetEntityId());

            var sunlight = await connector.LoadEntityFromStates <Sensor>(Sensor.Name.Sunlight.GetEntityId());

            var minimumLightForLight = await InputNumber.LoadFromEntityId(connector, InputNumber.Name.MinimumLightForLight);

            if (laptopEthernet.State == "on" || businessLaptop.State == "on" || computer.State == "on")
            {
                if (!int.TryParse(sunlight.State, out var result))
                {
                    return(false);
                }

                var minimumSunState = minimumLightForLight.Value;
                if (dateTimeHelper.Now.TimeOfDay > new TimeSpan(12, 0, 0))
                {
                    minimumSunState = minimumLightForLight.Value - 5;
                }

                return(result <= minimumSunState);
            }

            return(false);
        }
예제 #2
0
        public async Task Activated(CancellationToken cancellationToken = default)
        {
            var lightsToSwitchOn = await Light.LoadFromEntitiesId(connector, Light.Name.Halogen2, Light.Name.Halogen3);

            var allLights = await Light.LoadAllLights(connector, Light.Name.Halogen2, Light.Name.Halogen3);

            var allRgbLights = await RgbLight.LoadAllLights(connector);

            var allSwitches = await Switch.LoadAllLights(connector);

            var stairsLight = await InputNumber.LoadFromEntityId(connector, InputNumber.Name.StairsMinimumBrightness);

            var mediaPlayers = await MediaPlayer.LoadAll(connector);

            var cover = await Cover.LoadFromEntityId(connector, Cover.Name.Salon);

            await lightsToSwitchOn.TurnOnAll();

            await stairsLight.SetValue(30);

            await cover.CloseCover();

            await mediaPlayers.TurnOffAll();

            await allLights.TurnOffAll();

            await allRgbLights.TurnOffAll();

            await allSwitches.TurnOffAll();

            await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken);

            await allRgbLights.TurnOffAll();

            await Task.Delay(TimeSpan.FromMinutes(5), cancellationToken);

            await lightsToSwitchOn.TurnOffAll();

            await stairsLight.SetValue(0);

            await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken);

            await allLights.TurnOffAll();

            await allRgbLights.TurnOffAll();

            await lightsToSwitchOn.TurnOffAll();

            await stairsLight.SetValue(0);
        }
예제 #3
0
        public async Task Activated(CancellationToken cancellationToken = default)
        {
            var lightsToSwitchOn = await Light.LoadFromEntitiesId(connector, Light.Name.Halogen2, Light.Name.Halogen3, Light.Name.ExternalLight);

            var allLights = await Light.LoadAllLights(connector, Light.Name.Halogen2, Light.Name.Halogen3);

            var allRgbLights = await RgbLight.LoadAllLights(connector);

            var allSwitches = await Switch.LoadAllLights(connector, Switch.Name.GardenLight);

            var stairsLight = await InputNumber.LoadFromEntityId(connector, InputNumber.Name.StairsMinimumBrightness);

            var mediaPlayers = await MediaPlayer.LoadAll(connector);

            var cover = await Cover.LoadFromEntityId(connector, Cover.Name.Salon);

            var gardenLight = await Switch.LoadFromEntityId(connector, Switch.Name.GardenLight);

            await lightsToSwitchOn.TurnOnAll();

            await gardenLight.TurnOn();

            var sunlight = await connector.LoadEntityFromStates <Sensor>(Sensor.Name.Sunlight.GetEntityId());

            if (int.TryParse(sunlight.State, out var result) && result < 4)
            {
                await cover.CloseCover();
            }

            await mediaPlayers.TurnOffAll();

            await allLights.TurnOffAll();

            await allRgbLights.TurnOffAll();

            await allSwitches.TurnOffAll();

            await stairsLight.SetValue(0);

            await Task.Delay(TimeSpan.FromMinutes(15), cancellationToken);

            await lightsToSwitchOn.TurnOffAll();

            await gardenLight.TurnOff();
        }
        public async Task Activated(CancellationToken cancellationToken = default)
        {
            var mushroom = await RgbLight.LoadFromEntityId(connector, RgbLight.Name.Mushroom);

            var tvleds = await RgbLight.LoadFromEntityId(connector, RgbLight.Name.TvLEDs);

            var stairs = await InputNumber.LoadFromEntityId(connector, InputNumber.Name.StairsMinimumBrightness);

            var lights = await Light.LoadFromEntitiesId(connector, Light.Name.Halogen1);

            await tvleds.TurnOnStandardWhite();

            await lights.TurnOnAll();

            await stairs.SetValueBasedOnTvState();

            await mushroom.TurnOnWithRandomColor();
        }