Exemple #1
0
        private void Omnilink_OnAreaStatus(object sender, AreaStatusEventArgs e)
        {
            PublishAreaState(e.Area);

            // Since the controller doesn't fire zone status change on area status change
            // request update so armed, tripped, and secure statuses are correct
            for (ushort i = 1; i < OmniLink.Controller.Zones.Count; i++)
            {
                clsZone zone = OmniLink.Controller.Zones[i];

                if (zone.DefaultProperties == false && zone.Area == e.Area.Number)
                {
                    OmniLink.Controller.Connection.Send(new clsOL2MsgRequestExtendedStatus(OmniLink.Controller.Connection, enuObjectType.Zone, i, i), HandleRequestZoneStatus);
                }
            }
        }
Exemple #2
0
        private void AlarmNotification(AreaStatusEventArgs e, int alarmBit, string alarmType, string alarmText)
        {
            if (e.Area.AreaAlarms.IsBitSet(alarmBit))
            {
                Notification.Notify("ALARM", $"{alarmType} {e.Area.Name} {alarmText}", NotificationPriority.Emergency);

                if (!alarms.Contains(alarmType + e.ID))
                {
                    alarms.Add(alarmType + e.ID);
                }
            }
            else if (alarms.Contains(alarmType + e.ID))
            {
                Notification.Notify("ALARM CLEARED", $"{alarmType} {e.Area.Name} {alarmText}", NotificationPriority.High);

                alarms.Remove(alarmType + e.ID);
            }
        }
Exemple #3
0
        private void Omnilink_OnAreaStatus(object sender, AreaStatusEventArgs e)
        {
            AlarmNotification(e, 0, "BURGLARY", e.Area.AreaBurglaryAlarmText);
            AlarmNotification(e, 1, "FIRE", e.Area.AreaFireAlarmText);
            AlarmNotification(e, 2, "GAS", e.Area.AreaGasAlarmText);
            AlarmNotification(e, 3, "AUX", e.Area.AreaAuxAlarmText);
            AlarmNotification(e, 6, "DURESS", e.Area.AreaDuressAlarmText);

            string status = e.Area.ModeText();

            if (e.Area.ExitTimer > 0)
            {
                status = "ARMING " + status;
            }

            if (e.Area.EntryTimer > 0)
            {
                status = "TRIPPED " + status;
            }

            DBQueue(@"
            INSERT INTO log_areas (timestamp, id, name, 
                fire, police, auxiliary, 
                duress, security)
            VALUES ('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" + e.ID.ToString() + "','" + e.Area.Name + "','" +
                    e.Area.AreaFireAlarmText + "','" + e.Area.AreaBurglaryAlarmText + "','" + e.Area.AreaAuxAlarmText + "','" +
                    e.Area.AreaDuressAlarmText + "','" + status + "')");

            if (Global.verbose_area)
            {
                log.Verbose("AreaStatus {id} {name}, Status: {status}, Alarams: {alarms}", e.ID, e.Area.Name, status, e.Area.AreaAlarms);
            }

            if (Global.notify_area && e.Area.LastMode != e.Area.AreaMode)
            {
                Notification.Notify("Security", e.Area.Name + " " + e.Area.ModeText());
            }
        }
 private void Omnilink_OnAreaStatus(object sender, AreaStatusEventArgs e)
 {
     WebNotification.Send("area", JsonConvert.SerializeObject(e.Area.ToContract()));
 }
Exemple #5
0
        private void Omnilink_OnAreaStatus(object sender, AreaStatusEventArgs e)
        {
            // Alarm notifcation
            if (e.Area.AreaFireAlarmText != "OK")
            {
                Notification.Notify("ALARM", "FIRE " + e.Area.Name + " " + e.Area.AreaFireAlarmText, NotificationPriority.Emergency);

                if (!alarms.Contains("FIRE" + e.ID))
                {
                    alarms.Add("FIRE" + e.ID);
                }
            }
            else if (alarms.Contains("FIRE" + e.ID))
            {
                Notification.Notify("ALARM CLEARED", "FIRE " + e.Area.Name + " " + e.Area.AreaFireAlarmText, NotificationPriority.High);

                alarms.Remove("FIRE" + e.ID);
            }

            if (e.Area.AreaBurglaryAlarmText != "OK")
            {
                Notification.Notify("ALARM", "BURGLARY " + e.Area.Name + " " + e.Area.AreaBurglaryAlarmText, NotificationPriority.Emergency);

                if (!alarms.Contains("BURGLARY" + e.ID))
                {
                    alarms.Add("BURGLARY" + e.ID);
                }
            }
            else if (alarms.Contains("BURGLARY" + e.ID))
            {
                Notification.Notify("ALARM CLEARED", "BURGLARY " + e.Area.Name + " " + e.Area.AreaBurglaryAlarmText, NotificationPriority.High);

                alarms.Remove("BURGLARY" + e.ID);
            }

            if (e.Area.AreaAuxAlarmText != "OK")
            {
                Notification.Notify("ALARM", "AUX " + e.Area.Name + " " + e.Area.AreaAuxAlarmText, NotificationPriority.Emergency);

                if (!alarms.Contains("AUX" + e.ID))
                {
                    alarms.Add("AUX" + e.ID);
                }
            }
            else if (alarms.Contains("AUX" + e.ID))
            {
                Notification.Notify("ALARM CLEARED", "AUX " + e.Area.Name + " " + e.Area.AreaAuxAlarmText, NotificationPriority.High);

                alarms.Remove("AUX" + e.ID);
            }

            if (e.Area.AreaDuressAlarmText != "OK")
            {
                Notification.Notify("ALARM", "DURESS " + e.Area.Name + " " + e.Area.AreaDuressAlarmText, NotificationPriority.Emergency);

                if (!alarms.Contains("DURESS" + e.ID))
                {
                    alarms.Add("DURESS" + e.ID);
                }
            }
            else if (alarms.Contains("DURESS" + e.ID))
            {
                Notification.Notify("ALARM CLEARED", "DURESS " + e.Area.Name + " " + e.Area.AreaDuressAlarmText, NotificationPriority.High);

                alarms.Remove("DURESS" + e.ID);
            }

            string status = e.Area.ModeText();

            if (e.Area.ExitTimer > 0)
            {
                status = "ARMING " + status;
            }

            if (e.Area.EntryTimer > 0)
            {
                status = "TRIPPED " + status;
            }

            DBQueue(@"
            INSERT INTO log_areas (timestamp, id, name, 
                fire, police, auxiliary, 
                duress, security)
            VALUES ('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" + e.ID.ToString() + "','" + e.Area.Name + "','" +
                    e.Area.AreaFireAlarmText + "','" + e.Area.AreaBurglaryAlarmText + "','" + e.Area.AreaAuxAlarmText + "','" +
                    e.Area.AreaDuressAlarmText + "','" + status + "')");

            if (Global.verbose_area)
            {
                log.Debug("AreaStatus " + e.ID + " " + e.Area.Name + ", Status: " + status);
            }

            if (Global.notify_area && e.Area.LastMode != e.Area.AreaMode)
            {
                Notification.Notify("Security", e.Area.Name + " " + e.Area.ModeText());
            }
        }