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