예제 #1
0
        private static void AddEvent(EventThreadManagerConfig eventConfig, float value)
        {
            var dateTime       = DateTime.Now;
            var dateTimeString = dateTime.ToString(DtFormat);
            // Добавляем event в базу.
            //var rawVal = value.Replace(',', '.');

            var event_ = context.Events.Create();

            event_.TagId = eventConfig.TagId;
            event_.Value = value;
            event_.Time  = dateTime;

            context.Events.Add(event_);
            // сохраняем
            context.SaveChanges();

            var z = (from ti in context.Events
                     where ti.TagId == eventConfig.TagId //&& ti.STime == dateTime
                     orderby ti.Time descending
                     select ti.Id);

            var id     = z.ToList();// Создадим тревогу чтобы не дергать каждый раз базу.
            var result = new EventThreadManagerEvent
            {
                Id    = id.First(),
                TagId = eventConfig.TagId,
                Time  = dateTime,
                Value = value,
            };

            _events.Add(result);
            logger.Logged("Info", "add event [" + eventConfig.TagId + "][" + value + "] to alarmserver...", "AlarmThreadManager", "OpenAlarm");
        }
예제 #2
0
        // Загружает конфигурацию тревог при старте системы.
        public static void LoadAlarmsConfigurations()
        {
            lock (ConfigLocker)
            {
                _cfgs.Clear();
                _cfgsEv.Clear();
                _soundalarms.Clear();
                var taglist = _tags.Where(x => x.Type == 2 && !String.IsNullOrEmpty(x.Prop));

                foreach (var tagjson in taglist)
                {
                    dynamic alarm = JsonConvert.DeserializeObject(tagjson.Prop);
                    var     tag   = new TagId
                    {
                        TagName  = ("Sfera." + Convert.ToString(alarm.Connection) + "." + tagjson.Name.Replace("_unreal", "")).Replace('/', '.'),
                        PollerId = Convert.ToInt32(alarm.Opc)
                    };
                    try
                    {
                        var events = Convert.ToString(alarm.Events);
                        if (events != null && events != "")
                        {
                            var event_ = new EventThreadManagerConfig();
                            var _props = _json.Deserialize(events, event_.GetType());
                            event_ = (EventThreadManagerConfig)_props;
                            if (event_.Enabled)
                            {
                                event_.Tag   = tag;
                                event_.TagId = Convert.ToInt32(tagjson.Id);
                                _cfgsEv.Add(event_);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.Logged("Err", "add Event tag [" + tag.PollerId + "][" + tag.TagName + "] to alarmserver failed: " + ex.Message,
                                      "AlarmThreadManager", "LoadAlarmsLastStates");
                    }
                    try
                    {
                        var tagId  = Convert.ToInt32(tagjson.Id);
                        var alarms = Convert.ToString(alarm.Alarms);
                        if (alarms != null && alarms != "")
                        {
                            var alarm_ = new AlarmThreadManagerConfig();
                            var _props = _json.Deserialize(alarms, alarm_.GetType());
                            alarm_ = (AlarmThreadManagerConfig)_props;
                            if (alarm_.Enabled)
                            {
                                alarm_.TagId = Convert.ToInt32(tagjson.Id);
                                alarm_.Tag   = tag;

                                if (alarm_.Sound)
                                {
                                    _soundalarms.Add(tagId);
                                }

                                if (alarm_.HihiSeverity == null)
                                {
                                    alarm_.HihiSeverity = Double.MaxValue;
                                }
                                if (alarm_.HiSeverity == null)
                                {
                                    alarm_.HiSeverity = Double.MaxValue;
                                }
                                if (alarm_.LoSeverity == null)
                                {
                                    alarm_.LoSeverity = Double.MinValue;
                                }
                                if (alarm_.LoloSeverity == null)
                                {
                                    alarm_.LoloSeverity = Double.MinValue;
                                }
                                _cfgs.Add(alarm_);
                            }

                            logger.Logged("Info", "Конфигурация тревоги [" + tag.PollerId + "][" + tag.TagName + "] добавлена...", "AlarmThreadManager", "LoadAlarmsLastStates");
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.Logged("Err", "Неверная конфигурация тревоги [" + tag.PollerId + "][" + tag.TagName + "] : " +
                                      ex.Message, "AlarmThreadManager", "LoadAlarmsLastStates");
                    }
                }
            }
        }