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();
                }
            }
        }
Exemplo n.º 2
0
 internal void internalSetBypass(bool state)
 {
     if (zoneStatus != eZoneStatus.Bypassed)
     {
         zoneStatus = eZoneStatus.Bypassed;
         myPanel.SendDebug(string.Format("Zone {0} - internalSetBypass = {1}", zoneNumber, zoneStatus));
         OnElkZoneEvent(eElkZoneEventUpdateType.StatusChange);
     }
     checkRegistered();
 }
        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();
        }
        private void ProcessZoneEvent(ElkZoneEventArgs e)
        {
            if (e.EventUpdateType == eElkZoneEventUpdateType.StatusChange)
            {
                ElkZone currentZone = myPanel.GetZoneObject(e.Zone);

                int         zoneNumber = currentZone.GetZoneNumber;
                eZoneStatus zoneStatus = currentZone.GetZoneStatus;

                if (!lastZoneStatuses.ContainsKey(zoneNumber))
                {
                    lastZoneStatuses.Add(zoneNumber, new LastZoneStatus(myPanel, this, currentZone, zoneStatus));
                }
                else
                {
                    if (!lastZoneStatuses[zoneNumber].TimerRuning)
                    {
                        //lastZoneStatuses[zoneNumber].Zone = currentZone;
                        lastZoneStatuses[zoneNumber].CheckMessage();
                    }
                }
            }
        }
Exemplo n.º 5
0
        //Internal Functions -------------------------------------------------------

        internal void internalSetZoneStatus(int s)
        {
            eZoneStatus tzs = zoneStatus;
            eZoneType   tzt = zoneType;

            switch (s)
            {
            case 0:
                tzs = eZoneStatus.Normal;
                tzt = eZoneType.Unconfigured;
                break;

            case 1:
                tzs = eZoneStatus.Normal;
                tzt = eZoneType.Open;
                break;

            case 2:
                tzs = eZoneStatus.Normal;
                tzt = eZoneType.EOL;
                break;

            case 3:
                tzs = eZoneStatus.Normal;
                tzt = eZoneType.Short;
                break;

            case 5:
                tzs = eZoneStatus.Trouble;
                tzt = eZoneType.Open;
                break;

            case 6:
                tzs = eZoneStatus.Trouble;
                tzt = eZoneType.EOL;
                break;

            case 7:
                tzs = eZoneStatus.Trouble;
                tzt = eZoneType.Short;
                break;

            case 9:
                tzs = eZoneStatus.Violated;
                tzt = eZoneType.Open;
                break;

            case 10:
                tzs = eZoneStatus.Violated;
                tzt = eZoneType.EOL;
                break;

            case 11:
                tzs = eZoneStatus.Violated;
                tzt = eZoneType.Short;
                break;

            case 12:
                tzs = eZoneStatus.SoftBypassed;
                break;

            case 13:
                tzs = eZoneStatus.Bypassed;
                tzt = eZoneType.Open;
                break;

            case 14:
                tzs = eZoneStatus.Bypassed;
                tzt = eZoneType.EOL;
                break;

            case 15:
                tzs = eZoneStatus.Bypassed;
                tzt = eZoneType.Short;
                break;
            }

            if (tzs != zoneStatus)
            {
                zoneStatus = tzs;
                //  myPanel.SendDebug(string.Format("Zone {0} - internalSetZoneStatus - zoneStatus = {1}", zoneNumber, zoneStatus.ToString()));
                OnElkZoneEvent(eElkZoneEventUpdateType.StatusChange);
            }
            if (tzt != zoneType)
            {
                zoneType = tzt;
                //  myPanel.SendDebug(string.Format("Zone {0} - internalSetZoneStatus - zoneType = {1}", zoneNumber, zoneType.ToString()));
                OnElkZoneEvent(eElkZoneEventUpdateType.TypeChange);
            }
            checkRegistered();
        }