internal string[] CheckZoneNotificationProperty(int zone, eAreaArmedStatus armedStatus)
        {
            myNotificationDevices = myElkNotificationManager.notificationDevices;
            List <string> devicesToSend = new List <string>();

            foreach (var userDevice in myNotificationDevices)
            {
                try
                {
                    if (userDevice.Value.NotificationZones[zone].DisarmedNotifications == 1 &&
                        armedStatus == eAreaArmedStatus.Disarmed)
                    {
                        devicesToSend.Add(userDevice.Value.DeviceName);
                        myPanel.SendDebug(String.Format("NotificationMessageHandler: Zone Check Disarmed {0} - {1}", zone, userDevice.Value.DeviceName));
                    }

                    if (userDevice.Value.NotificationZones[zone].ArmedNotifications == 1 &&
                        armedStatus > eAreaArmedStatus.Disarmed)
                    {
                        devicesToSend.Add(userDevice.Value.DeviceName);
                        myPanel.SendDebug(String.Format("NotificationMessageHandler: Zone Check Armed {0} - {1}", zone, userDevice.Value.DeviceName));
                    }
                }
                catch (Exception ex)
                {
                    myPanel.SendDebug(String.Format("NotificationMessageHandler: Error checking zone property {0} {1} {2} \r\n{3}", userDevice, zone, ex.ToString()));
                }
            }
            myPanel.SendDebug(String.Format("NotificationMessageHandler: Zone Devices to send count {0}", devicesToSend.Count));
            return(devicesToSend.ToArray());
        }
        public void CheckMessage()
        {
            if (Zone != null)
            {
                eZoneStatus currentStatus = myPanel.GetZoneObject(Zone.GetZoneNumber).GetZoneStatus;
                if (lastStatus != currentStatus)
                {
                    CrestronConsole.PrintLine("Firing Next Update for Zone {0} status changed to {1}", Zone.GetZoneName, Zone.GetZoneStatus);

                    eAreaArmedStatus areaArmedStatus =
                        currentArea.GetAreaArmedStatus;

                    string devicesToSend = string.Join(",", handler.CheckZoneNotificationProperty(zoneNumber, areaArmedStatus));
                    myPanel.SendDebug(String.Format("Zone Devices to send count {0} - {1}", devicesToSend.Length, devicesToSend));
                    if (devicesToSend.Length > 0 && !String.IsNullOrEmpty(devicesToSend))
                    {
                        myPanel.SendDebug(
                            String.Format("NotificationMessageHandler: Building Message *{0} - {1}:{2} to Devices {3}",
                                          areaName, zoneName, currentStatus, devicesToSend));
                        PushoverManager.Instance.SendMessage(devicesToSend, String.Format("{0} - {1}", areaName, zoneName), String.Format("{0}", currentStatus));
                    }

                    lastStatus = currentStatus;
                    RestartTimeout();
                }
            }
        }
Exemple #3
0
        //Core internal -------------------------------------------------------
        internal void internalSetAreaArmedStatus(int s)
        {
            eAreaArmedStatus te = (eAreaArmedStatus)Enum.Parse(typeof(eAreaArmedStatus), Convert.ToString(s), true);

            if (te != armedStatus)
            {
                armedStatus = te;
                myPanel.SendDebug(string.Format("Area {0} - internalSetAreaArmedStatus = {1}", areaNumber, armedStatus.ToString()));
                OnElkAreaEvent(eElkAreaEventUpdateType.ArmedStatusChange);
            }
            checkRegistered();
        }
        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;
            }
        }