public Room(string uid, IEnumerable <string> neighbors, string lamp, IConcurrencyProvider concurrencyProvider, ILogger logger, IMessageBroker messageBroker, AreaDescriptor areaDescriptor, MotionConfiguration motionConfiguration) { Uid = uid ?? throw new ArgumentNullException(nameof(uid)); _neighbors = neighbors ?? throw new ArgumentNullException(nameof(neighbors)); _lamp = lamp ?? throw new ArgumentNullException(nameof(lamp)); _logger = logger; _motionConfiguration = motionConfiguration; _concurrencyProvider = concurrencyProvider; _messageBroker = messageBroker; _areaDescriptor = areaDescriptor; if (areaDescriptor.WorkingTime == WorkingTime.DayLight) { _turnOnConditionsValidator.WithCondition(new IsDayCondition(_messageBroker)); } else if (areaDescriptor.WorkingTime == WorkingTime.AfterDusk) { _turnOnConditionsValidator.WithCondition(new IsNightCondition(_messageBroker)); } _turnOnConditionsValidator.WithCondition(new IsEnabledAutomationCondition(this)); _turnOffConditionsValidator.WithCondition(new IsEnabledAutomationCondition(this)); _turnOffConditionsValidator.WithCondition(new IsTurnOffAutomaionCondition(this)); _TurnOffTimeOut = new Timeout(_areaDescriptor.TurnOffTimeout, _motionConfiguration.TurnOffPresenceFactor); }
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 MachineMonitor( IConcurrencyProvider concurrencyProvider, ITemperatureSensor temperatureSensor, IProximitySensor proximitySensor) { _concurrencyProvider = concurrencyProvider; _temperatureSensor = temperatureSensor; _proximitySensor = proximitySensor; }
public void Start(IMessageBroker messageBroker, IConcurrencyProvider concurrencyProvider) { foreach (var eventDescription in EventDescriptors) { var attributes = eventDescription.Event.GetProperties().ToDictionary(); _disposables.Add(messageBroker.SubscribeForEvent <Event>(EventHandler, new RoutingFilter(attributes))); } _disposables.Add(_eventStream.Timestamp() .Buffer(_eventStream, _ => Observable.Timer(MaxMessageTime, concurrencyProvider.Scheduler)) .Subscribe(DecodeMessage) ); }
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 LightAutomationService(IConcurrencyProvider concurrencyProvider, IObservableTimer observableTimer) { _concurrencyProvider = concurrencyProvider; _observableTimer = observableTimer; }
protected LightAutomationService(IConcurrencyProvider concurrencyProvider) { _concurrencyProvider = concurrencyProvider; }
public Room ToRoom(MotionConfiguration config, IDaylightService daylightService, IConcurrencyProvider concurrencyProvider, ILogger logger) { return(new Room(MotionDetectorUid, Neighbors, Lamp, daylightService, concurrencyProvider, logger, AreaInitializer, config, EventDecoders)); }