private void SendEmail(alarm_definitionRow alarm, Point pt) { // old: Alarm condition at site WICEWS for parameter GH -- value = 0.43 var siteDescription = ""; var t = m_server.Table("sitecatalog", "select description from sitecatalog where siteid='" + alarm.siteid + "'"); if (t.Rows.Count > 0) { siteDescription = t.Rows[0][0].ToString(); } var parameterName = ""; t = m_server.Table("parametercatalog", "select name from parametercatalog where id='" + alarm.parameter + "' and timeinterval = 'Irregular'"); if (t.Rows.Count > 0) { parameterName = t.Rows[0][0].ToString(); } var subject = "Alarm Condition at" + siteDescription + " " + alarm.siteid; var body = "Alarm condition at site" + alarm.siteid + " parameter = " + alarm.parameter; var emails = GetEmailList(alarm.list); if (emails.Length == 0) { Logger.WriteLine("subject: " + subject); Logger.WriteLine("body: " + body); } else { SendEmail(emails, subject, body); } }
private void Check(Series s, alarm_definitionRow alarm) { Logger.WriteLine("found alarm definition " + s.SiteID + " " + s.Parameter); AlarmRegex alarmEx = new AlarmRegex(alarm.alarm_condition); if (alarmEx.IsMatch()) { var c = alarmEx.GetAlarmCondition(); if (c.Condition == AlarmType.Above) { CheckForAboveAlarm(s, alarm, c); } else if (c.Condition == AlarmType.Below) { CheckForBelowAlarm(s, alarm, c); } else if (c.Condition == AlarmType.Dropping || c.Condition == AlarmType.Rising) { CheckForRateOfChangeAlarm(s, alarm, c); } } }
private void CheckForBelowAlarm(Series s, alarm_definitionRow alarm, AlarmCondition c) { foreach (Point p in s) { if (!p.FlaggedBad && !p.IsMissing && p.Value < c.Value) { Console.WriteLine("Alarm below found"); CreateAlarm(alarm, p); break; } } }
private void CheckForAboveAlarm(Series s, alarm_definitionRow alarm, AlarmCondition c) { foreach (Point p in s) { if (!p.FlaggedBad && !p.IsMissing && p.Value > c.Value) { Logger.WriteLine("alarm_condition: " + alarm.alarm_condition); Logger.WriteLine("Alarm above found: " + p.Value); CreateAlarm(alarm, p); break; } } }
private void CheckForRateOfChangeAlarm(Series s, alarm_definitionRow alarm, AlarmCondition c) { Logger.WriteLine("Checking Rate of Change: " + c.Condition + " " + c.Value); // need data one time step before.. read from database. if (s.TimeInterval == TimeInterval.Irregular) { s.Read(s.MinDateTime.AddMinutes(-20), s.MaxDateTime.AddMinutes(1)); } else if (s.TimeInterval == TimeInterval.Daily) { s.Read(s.MinDateTime.AddDays(-1), s.MaxDateTime.AddMinutes(1)); } for (int i = 1; i < s.Count; i++) { var pt = s[i]; var prev = s[i - 1]; if (!pt.IsMissing && !pt.FlaggedBad & !prev.IsMissing && !prev.FlaggedBad) { double hrs = pt.DateTime.Subtract(prev.DateTime).TotalHours; double change = 0; if (c.Condition == AlarmType.Rising) { change = (pt.Value - prev.Value) / hrs; } ; if (c.Condition == AlarmType.Dropping) { change = (prev.Value - pt.Value) / hrs; } Logger.WriteLine(pt.ToString() + " Change per hour: " + change.ToString("F2")); if (change > c.Value) { Console.WriteLine("Alarm " + c.Condition); CreateAlarm(alarm, pt); break; } } } }
private void SendEmail(alarm_definitionRow alarm, Point pt) { // vms message: Alarm condition at site WICEWS for parameter GH -- value = 0.43 var tn = "instant_" + alarm.siteid + "_" + alarm.parameter; string siteDescription = "siteid = " + alarm.siteid; var seriesDescription = "siteid = " + alarm.siteid + " parameter = " + alarm.parameter; var series = m_db.GetSeriesFromTableName(tn.ToLower()); if (series != null) { siteDescription = series.SiteDescription(); seriesDescription = series.SeriesDescription(); } var subject = "Alarm Condition at " + siteDescription + " (" + alarm.siteid.ToUpper() + ") " + alarm.parameter + ": " + alarm.alarm_condition; var body = "\n<br/>"; body += "This email is from the Hydromet system.\n<br/>"; body += subject; body += "\n<br/>alarm condition: " + alarm.parameter + " " + alarm.alarm_condition; body += "\n<br/>" + alarm.parameter + " = " + seriesDescription; body += "\n<br/>" + " "; body += "\n<br/>" + pt.ToString(); body += "\n<br/>\n<br/>" + subject; var emails = GetEmailList(alarm.list); if (emails.Length == 0) { Logger.WriteLine("no emails found for list='" + alarm.list + "'"); Logger.WriteLine("subject: " + subject); Logger.WriteLine("body: " + body); } else { SendEmail(emails, subject, body); } }
public alarm_definitionRowChangeEvent(alarm_definitionRow row, global::System.Data.DataRowAction action) { this.eventRow = row; this.eventAction = action; }
private void SendEmail(alarm_definitionRow alarm, Point pt) { // old: Alarm condition at site WICEWS for parameter GH -- value = 0.43 var siteDescription = ""; var t = m_server.Table("sitecatalog", "select description from sitecatalog where siteid='" + alarm.siteid + "'"); if (t.Rows.Count > 0) siteDescription = t.Rows[0][0].ToString(); var parameterName = ""; t = m_server.Table("parametercatalog", "select name from parametercatalog where id='" + alarm.parameter + "' and timeinterval = 'Irregular'"); if (t.Rows.Count > 0) parameterName = t.Rows[0][0].ToString(); var subject = "Alarm Condition at" + siteDescription + " " + alarm.siteid; var body = "Alarm condition at site" + alarm.siteid + " parameter = " + alarm.parameter; var emails = GetEmailList(alarm.list); if( emails.Length == 0) { Logger.WriteLine("subject: " + subject); Logger.WriteLine("body: " + body); } else { SendEmail(emails, subject, body); } }