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); } } }
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); } }
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())); }
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()); } }