public Room(string uid, IEnumerable <string> neighbors, Component lamp, IDaylightService daylightService, IConcurrencyProvider concurrencyProvider, ILogger logger, AreaDescriptor areaDescriptor, MotionConfiguration motionConfiguration, IEnumerable <IEventDecoder> eventsDecoders) { Uid = uid ?? throw new ArgumentNullException(nameof(uid)); Neighbors = neighbors ?? throw new ArgumentNullException(nameof(neighbors)); Lamp = lamp ?? throw new ArgumentNullException(nameof(lamp)); if (areaDescriptor.WorkingTime == WorkingTime.DayLight) { _turnOnConditionsValidator.WithCondition(ConditionRelation.And, new IsDayCondition(daylightService)); } else if (areaDescriptor.WorkingTime == WorkingTime.AfterDusk) { _turnOnConditionsValidator.WithCondition(ConditionRelation.And, new IsNightCondition(daylightService)); } _turnOnConditionsValidator.WithCondition(ConditionRelation.And, new IsEnabledAutomationCondition(this)); _turnOffConditionsValidator.WithCondition(ConditionRelation.And, new IsEnabledAutomationCondition(this)); _turnOffConditionsValidator.WithCondition(ConditionRelation.And, new IsTurnOffAutomaionCondition(this)); _logger = logger; _motionConfiguration = motionConfiguration; _concurrencyProvider = concurrencyProvider; _eventsDecoders = eventsDecoders; AreaDescriptor = areaDescriptor; _TurnOffTimeOut = new Timeout(AreaDescriptor.TurnOffTimeout, _motionConfiguration.TurnOffPresenceFactor); _eventsDecoders?.ForEach(decoder => decoder.Init(this)); }
public LightAutomationService(IEventAggregator eventAggregator, IDaylightService daylightService, ILogService logService, IConcurrencyProvider concurrencyProvider, IMotionConfigurationProvider motionConfigurationProvider, IObservableTimer observableTimer ) { if (logService == null) { throw new ArgumentNullException(nameof(logService)); } _logger = logService.CreatePublisher(nameof(LightAutomationService)); _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); _daylightService = daylightService ?? throw new ArgumentNullException(nameof(daylightService)); _concurrencyProvider = concurrencyProvider ?? throw new ArgumentNullException(nameof(concurrencyProvider)); var configurationProvider = motionConfigurationProvider ?? throw new ArgumentNullException(nameof(motionConfigurationProvider)); _motionConfiguration = configurationProvider.GetConfiguration(); _observableTimer = observableTimer; }
protected override void SetupMotionConfiguration(ref MotionConfiguration mc) { base.SetupMotionConfiguration(ref mc); mc.ShouldAdaptToNavMesh = true; }
/////////////////////////////// ////////// Mechanism ////////// /// <summary> /// Setup the motion configuration /// </summary> protected virtual void SetupMotionConfiguration(ref MotionConfiguration mc) { mc.ShouldAdaptToNavMesh = false; }
/// <summary> /// Timeout constructor /// </summary> /// <param name="baseTime">Base time used to calculate final timeout</param> /// <param name="incrementFactor">Factor used to increment <paramref name="baseTime"/></param> public Timeout(TimeSpan baseTime, MotionConfiguration motionConfiguration) { _baseTime = baseTime; _motionConfiguration = motionConfiguration; }