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; } } }