예제 #1
0
 private bool checkAlarmTimeWindow(AlarmRuleCatalogEngine arcEngine, DateTime msgTimestamp)
 {
     if (arcEngine.Triggered)
     {
         if (arcEngine.AlarmRuleCatalog.KeepHappenInSec <= 0)
         {
             arcEngine.LastTriggerTime = msgTimestamp;
             return(true);// Always triggered
         }
         else
         {
             DateTime nextAcceptableTime = arcEngine.LastTriggerTime.AddSeconds(arcEngine.AlarmRuleCatalog.KeepHappenInSec);
             int      result             = DateTime.Compare(msgTimestamp, nextAcceptableTime);
             if (result > 0)
             {
                 // the message timestamp is later than the next accpetable time
                 arcEngine.LastTriggerTime = msgTimestamp;
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
     }
     else
     {
         arcEngine.Triggered       = true;
         arcEngine.LastTriggerTime = msgTimestamp;
         return(true);
     }
 }
예제 #2
0
        private Dictionary <int, List <AlarmRuleCatalogEngine> > findAllMessageAlarmRules(string iotHubAlias)
        {
            Dictionary <int, List <AlarmRuleCatalogEngine> > messageIdAlarmRules = new Dictionary <int, List <AlarmRuleCatalogEngine> >();

            SFDatabaseEntities dbEntity = new SFDatabaseEntities();
            var L2Enty = from c in dbEntity.IoTDevice
                         join msgCatalog in dbEntity.IoTDeviceMessageCatalog on c.IoTHubDeviceID equals msgCatalog.IoTHubDeviceID
                         where c.IoTHubAlias == iotHubAlias && msgCatalog.MessageCatalog.DeletedFlag == false
                         select msgCatalog.MessageCatalog;
            List <MessageCatalog> mcList = L2Enty.Distinct().ToList <MessageCatalog>();

            foreach (MessageCatalog mc in mcList)
            {
                List <AlarmRuleCatalogEngine> arcEngineList = new List <AlarmRuleCatalogEngine>();
                foreach (AlarmRuleCatalog arc in mc.AlarmRuleCatalog)
                {
                    if (arc.DeletedFlag == false && arc.ActiveFlag == true)
                    {
                        ConsoleLog.WriteMessageAlarmLogToConsole("AlarmRuleCatalogId={0}", arc.Id);

                        AlarmRuleCatalogEngine are = new AlarmRuleCatalogEngine();
                        are.AlarmRuleCatalogId = arc.Id;
                        are.AlarmRuleCatalog   = arc;
                        are.RuleEngineItems    = createRuleEngineItem(arc.Id);
                        are.LastTriggerTime    = new DateTime(2017, 1, 1);
                        are.Triggered          = false;

                        arcEngineList.Add(are);
                    }
                }

                messageIdAlarmRules.Add(mc.Id, arcEngineList);
            }

            return(messageIdAlarmRules);
        }