private string[] CheckAreaNotificationProperty(ElkArea area, eElkAreaEventUpdateType update)
        {
            myNotificationDevices = myElkNotificationManager.notificationDevices;
            List <string> devicesToSend = new List <string>();

            foreach (var userDevice in myNotificationDevices)
            {
                if (userDevice.Value.NotificationAreas.ContainsKey(area.GetAreaNumber))
                {
                    try
                    {
                        if (update == eElkAreaEventUpdateType.ArmedStatusChange && userDevice.Value.NotificationAreas[area.GetAreaNumber].ArmedStateChange == 1)
                        {
                            myPanel.SendDebug(String.Format("NotificationMessageHandler: OK To send Armed State message for {0} {1}", userDevice.Value.DeviceName, area));
                            devicesToSend.Add(userDevice.Value.DeviceName);
                        }

                        if (update == eElkAreaEventUpdateType.AlarmStateChange && userDevice.Value.NotificationAreas[area.GetAreaNumber].AlarmStateChange == 1)
                        {
                            myPanel.SendDebug(String.Format("NotificationMessageHandler: OK To send Alarm Status message for {0} {1}", userDevice.Value.DeviceName, area));
                            devicesToSend.Add(userDevice.Value.DeviceName);
                        }
                    }
                    catch (Exception ex)
                    {
                        myPanel.SendDebug(String.Format("NotificationMessageHandler: Error checking area property {0} {1} {2} \r\n{3}", userDevice, update, ex.ToString()));
                    }
                }
            }
            return(devicesToSend.ToArray());
        }
Exemplo n.º 2
0
        //Init -------------------------------------------------------
        public void Initialize(ushort _panel, ushort _areaNum)
        {
            myPanel = ElkCore.AddOrGetCoreObject(_panel);
            if (myPanel == null)
            {
                return;
            }

            if (myPanel.Areas.ContainsKey((int)_areaNum))
            {
                myArea = myPanel.Areas[(int)_areaNum];
                myArea.ElkAreaEvent          += new EventHandler <ElkAreaEventArgs>(myArea_ElkAreaEvent);
                myArea.myPw.ElkPasswordEvent += new EventHandler <ElkPasswordEventArgs>(myPw_ElkPasswordEvent);
            }
        }
        public LastZoneStatus(ElkPanel _panel, ElkNotificationMessageHandler _handler, ElkZone _zone, eZoneStatus _zoneStatus)
        {
            TimeToNextMessage = new CTimer(OnNextMessage, Timeout.Infinite);
            myPanel           = _panel;
            Zone       = _zone;
            handler    = _handler;
            lastStatus = eZoneStatus.Uninitialized;

            currentArea = myPanel.GetAreaObject(Zone.GetZoneAreaAssignment);
            areaName    = currentArea.GetAreaName.TrimEnd();
            zoneName    = Zone.GetZoneName.TrimEnd();
            zoneNumber  = Zone.GetZoneNumber;

            CheckMessage();
        }
Exemplo n.º 4
0
        //Initialize
        public void Initialize(int _panelId)
        {
            if (this.initRun)
            {
                return;
            }

            panelId = _panelId;

            this.SendDebug(string.Format("Added and initialized Panel ", _panelId));

            for (int i = 1; i <= 8; i++)
            {
                if (!Areas.ContainsKey(i))
                {
                    ElkArea a = new ElkArea();
                    a.Initialize(this, i);
                    Areas.Add(i, a);
                }
            }
            for (int i = 1; i <= 208; i++)
            {
                if (!Zones.ContainsKey(i))
                {
                    ElkZone z = new ElkZone();
                    z.Initialize(this, i);
                    Zones.Add(i, z);
                }
            }
            for (int i = 1; i <= 208; i++)
            {
                if (!Outputs.ContainsKey(i))
                {
                    ElkOutput o = new ElkOutput();
                    o.Initialize(this, i);
                    Outputs.Add(i, o);
                }
            }

            commandQueue  = new CrestronQueue <string>();
            responseQueue = new CrestronQueue <string>();

            this.panelId = _panelId;

            this.initRun = true;
        }
        private void ElkNotificationMessageHandler_ElkAreaEvent(object sender, ElkAreaEventArgs e)
        {
            if (!myElkNotificationManager.managerReady)
            {
                return;
            }
            ElkArea currentArea = myPanel.GetAreaObject(e.Area);
            string  areaName    = currentArea.GetAreaName.TrimEnd();

            switch (e.EventUpdateType)
            {
            case eElkAreaEventUpdateType.ArmedStatusChange:
                eAreaArmedStatus status = currentArea.GetAreaArmedStatus;

                string devicesToSendArmed = string.Join(",", CheckAreaNotificationProperty(currentArea, e.EventUpdateType));
                if (devicesToSendArmed.Length > 0 && !String.IsNullOrEmpty(devicesToSendArmed))
                {
                    PushoverManager.Instance.SendMessage(devicesToSendArmed, String.Format("{0} - {1}", areaName, status),
                                                         String.Format("Area {0}", status));
                    myPanel.SendDebug(
                        String.Format("NotificationMessageHandler: Building Message *{0} - {1} to Devices {2}",
                                      areaName, status, devicesToSendArmed));
                }
                break;

            case eElkAreaEventUpdateType.AlarmStateChange:
                eAreaAlarmState alarmStatus        = currentArea.GetAlarmStatus;
                string          devicesToSendAlarm = string.Join(",", CheckAreaNotificationProperty(currentArea, e.EventUpdateType));
                if (devicesToSendAlarm.Length > 0 && !String.IsNullOrEmpty(devicesToSendAlarm))
                {
                    PushoverManager.Instance.SendMessage(devicesToSendAlarm, String.Format("{0} - {1}", areaName, alarmStatus),
                                                         String.Format("Area {0}", alarmStatus));
                    myPanel.SendDebug(
                        String.Format("NotificationMessageHandler: Building Message *{0} - {1} to Devices {2}",
                                      areaName, alarmStatus, devicesToSendAlarm));
                }
                break;
            }
        }