Ejemplo n.º 1
0
        public void ChangeStates(HubChangeStates states)
        {
            if (!string.IsNullOrEmpty(_homeHubSocket.HomeHubId))
            {
                foreach(var state in states.States)
                {
                    var changed = _hubStateRepository.SetState(_homeHubSocket.HomeHubId, state.Name, state.Active);

                    if (changed)
                    {
                        string severity = _priorityStates.Contains(state.Name) ? "Priority" : "Info";

                        string logMessage = string.Format("{0} changed to {1}", state.Name, state.Active ? "Active" : "Inactive");
                        if (!string.IsNullOrEmpty(state.Node))
                        {
                            logMessage = string.Format("{0} > {1}", logMessage, state.Node);
                        }
                        if (!string.IsNullOrEmpty(state.Rule))
                        {
                            logMessage = string.Format("{0} | {1}", logMessage, state.Rule);
                        }

                        _logRepository.LogEntry(_homeHubSocket.HomeHubId, severity, logMessage);

                        if (_alertStates.Keys.Contains(state.Name))
                        {
                            ClearTimerUpdates();
                            if (state.Active)
                            {
                                var timerStates = new HubChangeStates {
                                    States = new HubChangeState[] {
                                        new HubChangeState { Name = state.Name, Active = false },
                                        new HubChangeState { Name = _alertStates[state.Name], Active = true }
                                    }
                                };

                                AddTimerUpdate(timerStates, AlertToAlarmMS);
                            }
                        }

                        if (_notificationStates.Contains(state.Name))
                        {
                            // Send a notification to devices
                            _statusNotification.Send(_homeHubSocket.HomeHubId, state.Name, state.Active, state.Node, state.Rule);
                        }
                    }
                }

                _homeHubSocket.ChatHub.MessageToClients(states);
            }
        }
Ejemplo n.º 2
0
        private void SendInitialStates(string homeHubId)
        {
            using (var hubStateRepository = new HubStateRepository())
            {
                var hubStates = hubStateRepository.GetAllForHub(homeHubId);
                var messageStates = new HubChangeStates {
                    States = hubStates.Select((s) => new HubChangeState {
                        Name = s.Name,
                        Active = s.Active
                    }).ToArray()
                };

                SendMessage(messageStates);
            }
        }
Ejemplo n.º 3
0
 private void AddTimerUpdate(HubChangeStates states, int milliseconds)
 {
     lock(_timerUpdates)
     {
         _timerUpdates[_homeHubSocket.HomeHubId] =
                 new ChangeStatesTimerUpdate(_homeHubSocket, states, milliseconds);
     }
 }
Ejemplo n.º 4
0
            public ChangeStatesTimerUpdate(IHomeHubSocket homeHubSocket, HubChangeStates states, int milliseconds)
            {
                _homeHubSocket = homeHubSocket;
                _states = states;

                _timer = new Timer(new TimerCallback(Execute), null, milliseconds, Timeout.Infinite);
            }