private async Task GarageDoorStateChanged(object sender) { if (sender is Sensor sensor) { if (_alarmState.SensorArmed(sensor.Type) && GarageDoorOpen()) { await _alarmState.Tripped(sensor.Type); } else if (GarageDoorOpen()) { _timerEvents.UpdateEvent(TimedEvent.GarageDoorOperatedEnd, new Domain.TimedEvent(_clock.Now.AddTimeSpan(5.Minutes()), true)); } await _mediator.Send(new UpdateReportedPropertyCommand(nameof(GarageDoorOpen), GarageDoorOpen())); } }
public async Task Handle(PollDoorbellMotionCommand notification, CancellationToken cancellationToken) { async Task PollActiveDings() { var dings = await _ringService.PollActiveDings(cancellationToken); if (dings.Any(ding => ding.Kind.ToLower(CultureInfo.InvariantCulture) == "motion")) { await _alarmState.Tripped(Sensor.FrontDoorMotion); } } await PollActiveDings(); }