コード例 #1
0
ファイル: AlarmDataSet.cs プロジェクト: ruo2012/Pisces
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        /// <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
        }
コード例 #5
0
ファイル: AlarmDataSet.cs プロジェクト: ruo2012/Pisces
        /// <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
        }