/// <summary> /// make phone calls and send emails // /// </summary> /// <param name="alarm"></param> /// <param name="Alarmvalue"></param> private void CreateAlarm(AlarmDataSet.alarm_definitionRow alarm, Point pt) { var tbl = GetAlarmQueue(alarm.siteid, alarm.parameter); if (tbl.Rows.Count == 1) { Logger.WriteLine("Alarm already active in the queue: " + alarm.siteid + " " + alarm.parameter); return; } SendEmail(alarm, pt); //phone call by inserting into table alarm_queue var row = tbl.Newalarm_phone_queueRow(); row.id = m_server.NextID("alarm_phone_queue", "id"); row.list = alarm.list; row.siteid = alarm.siteid; row.parameter = alarm.parameter; row.value = pt.Value; row.status = "new"; row.status_time = DateTime.Now; row.confirmed_by = ""; row.event_time = pt.DateTime; row.priority = alarm.priority; tbl.Rows.Add(row); m_server.SaveTable(tbl); }
private void buttonTest_Click(object sender, EventArgs e) { DataRowView currentDataRowView = (DataRowView)dataGridView1.CurrentRow.DataBoundItem; AlarmDataSet.alarm_definitionRow alarm = (AlarmDataSet.alarm_definitionRow)currentDataRowView.Row; var numbers = m_ds.GetPhoneNumbers(comboBoxTestList.Text); Asterisk.Call(alarm.siteid, alarm.parameter, textBoxTest.Text, numbers); }
private void buttonTest_Click(object sender, EventArgs e) { DataRowView currentDataRowView = (DataRowView)dataGridView1.CurrentRow.DataBoundItem; AlarmDataSet.alarm_definitionRow alarm = (AlarmDataSet.alarm_definitionRow)currentDataRowView.Row; var numbers = m_ds.GetPhoneNumbers(comboBoxTestList.Text); var login = new Login(); if (login.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Asterisk.Call(alarm.siteid, alarm.parameter, textBoxTest.Text, numbers, login.Username, login.Password); } }
/// <summary> /// Check each point in the series for an alarm /// </summary> /// <param name="s"></param> internal void Check(Series s) { var alarm = GetAlarmDefinition(s.SiteID, s.Parameter); // is alarm defined if (alarm.Rows.Count == 0) { return; } if (alarm.Rows.Count > 1) { throw new Exception("bad... alarm_definition constraint not working (siteid,parameter)"); } AlarmDataSet.alarm_definitionRow row = alarm[0]; // check alarm_condition for each value AlarmRegex alarmEx = new AlarmRegex(row.alarm_condition); if (alarmEx.IsMatch()) { foreach (Point p in s) { if (!p.IsMissing) { if (alarmEx.IsAlarm(p.Value)) { Console.WriteLine("Alarm found"); CreateAlarm(row, p); return; } } } } // TO DO clear alarms if clear_condition }
/// <summary> /// Check each point in the series for an alarm /// </summary> /// <param name="s"></param> internal void Check(Series s) { Logger.WriteLine("Check for alarms " + s.SiteID + " " + s.Parameter); var alarm = GetAlarmDefinition(s.SiteID.ToLower(), s.Parameter.ToLower()); // is alarm defined if (alarm.Rows.Count == 0) { return; } if (alarm.Rows.Count > 1) { throw new Exception("bad... alarm_definition constraint not working (siteid,parameter)"); } Logger.WriteLine("found alarm definition " + s.SiteID + " " + s.Parameter); AlarmDataSet.alarm_definitionRow row = alarm[0]; // check alarm_condition for each value AlarmRegex alarmEx = new AlarmRegex(row.alarm_condition); if (alarmEx.IsMatch()) { foreach (var c in alarmEx.AlarmConditions()) { if (c.Condition == AlarmType.Above) { foreach (Point p in s) { if (!p.IsMissing && p.Value > c.Value) { Logger.WriteLine("alarm_condition: " + row.alarm_condition); Logger.WriteLine("Alarm above found: " + p.Value); CreateAlarm(row, p); return; } } } if (c.Condition == AlarmType.Below) { foreach (Point p in s) { if (!p.IsMissing && p.Value < c.Value) { Console.WriteLine("Alarm below found"); CreateAlarm(row, p); return; } } } if (c.Condition == AlarmType.Dropping) { double num_a = s[0].Value; double num_b = s[1].Value; double num_c = s[2].Value; double num_d = s[3].Value; if ((num_a - num_b) > c.Value | (num_b - num_c) > c.Value | (num_c - num_d) > c.Value) { Console.WriteLine("Alarm dropping found"); CreateAlarm(row, s[0]); return; } } if (c.Condition == AlarmType.Rising) { double num_a = s[0].Value; double num_b = s[1].Value; double num_c = s[2].Value; double num_d = s[3].Value; if ((num_b - num_a) > c.Value | (num_c - num_b) > c.Value | (num_d - num_c) > c.Value) { Console.WriteLine("Alarm dropping found"); CreateAlarm(row, s[0]); return; } } } } // TO DO clear alarms if clear_condition }