コード例 #1
0
ファイル: MotionDetector.cs プロジェクト: wuzhenda/HA4IoT
        public MotionDetector(string id, IMotionDetectorAdapter adapter, ISchedulerService schedulerService, ISettingsService settingsService, IMessageBrokerService messageBroker)
            : base(id)
        {
            if (adapter == null)
            {
                throw new ArgumentNullException(nameof(adapter));
            }
            _messageBroker = messageBroker ?? throw new ArgumentNullException(nameof(messageBroker));

            _settingsService  = settingsService ?? throw new ArgumentNullException(nameof(settingsService));
            _schedulerService = schedulerService ?? throw new ArgumentNullException(nameof(schedulerService));

            adapter.StateChanged += UpdateState;

            settingsService.CreateSettingsMonitor <MotionDetectorSettings>(this, s =>
            {
                Settings = s.NewSettings;

                if (s.OldSettings != null && s.OldSettings.IsEnabled != s.NewSettings.IsEnabled)
                {
                    HandleIsEnabledStateChanged();
                }
            });

            _commandExecutor.Register <ResetCommand>(c => adapter.Refresh());
        }
コード例 #2
0
        public MotionDetector(string id, IMotionDetectorAdapter adapter, ISchedulerService schedulerService, ISettingsService settingsService)
            : base(id)
        {
            _adapter          = adapter ?? throw new ArgumentNullException(nameof(adapter));
            _settingsService  = settingsService ?? throw new ArgumentNullException(nameof(settingsService));
            _schedulerService = schedulerService ?? throw new ArgumentNullException(nameof(schedulerService));

            adapter.MotionDetectionBegin += (s, e) => UpdateState(MotionDetectionStateValue.MotionDetected);
            adapter.MotionDetectionEnd   += (s, e) => UpdateState(MotionDetectionStateValue.Idle);

            settingsService.CreateSettingsMonitor <MotionDetectorSettings>(this, s =>
            {
                Settings = s.NewSettings;

                if (s.OldSettings != null && s.OldSettings.IsEnabled != s.NewSettings.IsEnabled)
                {
                    HandleIsEnabledStateChanged();
                }
            });

            _commandExecutor.Register <ResetCommand>(c => _adapter.Refresh());
        }