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