Example #1
0
        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;
        }
Example #5
0
 /// <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;
 }