public async Task LightsOff()
        {
            _relayBoard
            .Relay(Enums.Relay.LightsGarden)
            .Off();

            var evnt = _timerEvents.DisableEvent(Enums.TimedEvent.OnLightsOff);

            await _mediator.Send(new UpdateReportedPropertyCommand(nameof(Enums.TimedEvent.OnLightsOff), evnt));
        }
        public async Task Handle(PressGarageDoorRemoteButtonCommand notification, CancellationToken cancellationToken)
        {
            async Task IfGarageDoorClosedResetOperatedConfig()
            {
                await Task.Delay(Config.GarageDoorOperationDuration, cancellationToken);

                if (!_sensorBoard.GarageDoorOpen())
                {
                    Config.GarageDoorOperated = false;
                    _timerEvents.DisableEvent(TimedEvent.GarageDoorOperatedEnd);
                }
            }

            Config.GarageDoorOperated = true;

            await IfGarageDoorClosedResetOperatedConfig();
        }
        private async Task CheckForTriggeredEvents(TimeSpan timeSpanNow)
        {
            bool TriggeredEvent(KeyValuePair <Enums.TimedEvent, TimedEvent> evt)
            {
                return(evt.Value.TriggerTime == timeSpanNow && evt.Value.Enabled);
            }

            void DisableEvent(KeyValuePair <Enums.TimedEvent, TimedEvent> evt)
            {
                _timerEvents.DisableEvent(evt.Key);
            }

            foreach (var evt in _timerEvents.GetEnabledEvents())
            {
                switch (evt.Key)
                {
                case Enums.TimedEvent.UpdateSunsetSunrise:
                    if (TriggeredEvent(evt))
                    {
                        await _mediator.Publish(new UpdateSunriseSunsetCommand());
                    }

                    break;

                case Enums.TimedEvent.OnSunset:
                    if (TriggeredEvent(evt))
                    {
                        _lightsController.OnSunset();
                    }

                    break;

                case Enums.TimedEvent.OnLightsOff:
                    if (TriggeredEvent(evt))
                    {
                        await _lightsController.LightsOff();
                    }

                    break;

                case Enums.TimedEvent.OnSunrise:
                    if (TriggeredEvent(evt))
                    {
                        _lightsController.OnSunrise();
                    }

                    break;

                case Enums.TimedEvent.StrobeOff:
                    if (TriggeredEvent(evt))
                    {
                        _relayBoard.Off(Relay.AlarmStrobe);
                        DisableEvent(evt);
                    }

                    break;

                case Enums.TimedEvent.SirenOff:
                    if (TriggeredEvent(evt))
                    {
                        _relayBoard
                        .Relay(Relay.AlarmSiren)
                        .Off();
                        DisableEvent(evt);
                    }
                    break;

                case Enums.TimedEvent.GarageDoorOperatedEnd:
                    if (TriggeredEvent(evt))
                    {
                        Config.GarageDoorOperated = false;
                        DisableEvent(evt);
                    }
                    break;

                default:
                    break;
                }
            }
        }