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