public void TestRainfallDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.RainFall, SafetyFactor.Rainfall); var d = new RainFallData(1.5) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestCableForceDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.MagneticFlux, SafetyFactor.CableForce); var d = new MagneticFluxData(18.69, 25, 500) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestSeepageDataSerializer() { var r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.Seepage); var d = new SeepageData(23) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); // 插入一条记录 }
public void TestForcesteelbarDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Voltage, SafetyFactor.Forcesteelbar); var d = new VibratingWireData(1869, 25, 18, 18) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestWind3DDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Wind_OSL, SafetyFactor.Wind3D); var d = new Wind2dData(5, 256) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestDeformationCrackJointDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.LVDT_XW, SafetyFactor.DeformationCrackJoint); var d = new LVDTData(10, 5) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestDeformationSettlementGroupDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.SettlementGroup); var d = new PressureData(23, 23) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestDeepDisplacement2DataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Inclinometer_OLD, SafetyFactor.DeformationDeepDisplacement); var d = new InclinationData(0.023, 0.232, 0.01, 0.02) { ////AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestLogErrorData() { var r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.StressStrainPoreWaterPressure); s1.FactorTypeTable = "T_THEMES_STRESS_STRAIN_PORE_WATER_PRESSURE"; var d = new PressureData(23, 23) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { ErrorCode = (int)Errors.SUCCESS, Data = d, Sensor = s1 }); r.Finished = DateTime.Now; Assert.IsTrue(msDbAccessor.LogErrorData(r.SensorResults[0])); }
/// <summary> /// /// </summary> /// <param name="source"></param> public void ProcessResult(DACTaskResult source) { if (source == null || source.SensorResults == null) { return; } Dictionary <string, ConfigInfo> configInfos = GetConfigInfos(source); foreach (var sensorResult in source.SensorResults) { //传感器的过滤类型 if (SensorTypeFilter.Contains(sensorResult.Sensor.SensorType)) { var sensor = sensorResult.Sensor; if (sensor == null || sensorResult.Data == null || sensorResult.Data.ThemeValues == null) { continue; } var sensorId = sensor.SensorID.ToString(); for (var i = 0; i < sensorResult.Data.ThemeValues.Count; i++) { var keyi = sensorId + "-" + (i + 1).ToString(); var themeValue = sensorResult.Data.ThemeValues[i]; var validateWindow = ValidateWindowses.ContainsKey(keyi) ? ValidateWindowses[keyi] : null; var configInfo = configInfos.ContainsKey(keyi) ? configInfos[keyi] : null; RefreshValidatorWindows(validateWindow, configInfo, keyi); if (themeValue != null && ValidateWindowses.ContainsKey(keyi)) //有配置信息,同时有窗口 { var analysisValue = new AnalysisValue(Convert.ToDecimal(themeValue.Value)); //计算的过程中使用Decimal类型 ValidateWindowses[keyi].ProcessValue(analysisValue); //进行数据的验证 sensorResult.Data.ThemeValues[i] = analysisValue.IsValid ? Convert.ToDouble(analysisValue.RawValue) : Convert.ToDouble(analysisValue.ValidValue); } } } } }
public void TestSettlementCalc_IncompleteAcqWithBase() { _dactask1 = Acq1(TID1); _dactask2 = Acq2(TID2); _sensorGroup = InitialSensorGroup(); var calcMethod = typeof(FS.SMIS_Cloud.DAC.DataCalc.DataCalc).GetMethod("Calc", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); calcMethod.Invoke(null, new object[] { _dactask1, new SensorGroup[] { _sensorGroup } }); Assert.AreEqual(2, _dactask1.SensorResults.Count); Assert.IsFalse(_dactask1.SensorResults[0].IsOK); Assert.IsFalse(_dactask1.SensorResults[1].IsOK); _sensorGroup = InitialSensorGroup(); calcMethod.Invoke(null, new object[] { _dactask2, new SensorGroup[] { _sensorGroup } }); Assert.AreEqual(3, _dactask2.SensorResults.Count); Assert.IsFalse(_dactask2.SensorResults[0].IsOK); Assert.IsTrue(_dactask2.SensorResults[1].IsOK); Assert.IsTrue(_dactask2.SensorResults[2].IsOK); Assert.AreEqual(0.0, _dactask2.SensorResults[1].Data.ThemeValues[0].Value, 0.000000001); Assert.AreEqual(-1.5, _dactask2.SensorResults[2].Data.ThemeValues[0].Value, 0.000000001); }
public void TestTempSerializer() { var r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.TempHumidity, SafetyFactor.Temp); var d = new TempData(25.5) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1, ResponseTime = DateTime.Now }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestStressStrainPoreWaterPressureDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.StressStrainPoreWaterPressure); var d = new PressureData(23, 23) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, Sensor = s1 }); int savedCnt = sqLiteDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); DACTaskResult r2 = new DACTaskResult(); var s2 = NewSensor(ProtocolType.VibratingWire, SafetyFactor.StressStrainPoreWaterPressure); var d2 = new VibratingWireData(1869, 25, 18, 18) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s2 }; r2.AddSensorResult(new SensorAcqResult { Data = d2, Sensor = s2 }); savedCnt = sqLiteDbAccessor.SaveDacResult(r2); Assert.AreEqual(1, savedCnt); }
public void TestTaskResult() { DACTaskResult r = new DACTaskResult(); DACTask task = new DACTask(); task.Status = DACTaskStatus.RUNNING; task.ID = 3; task.DtuID = 1; r.Task = task; task.Status = DACTaskStatus.RUNNING; r.ErrorCode = 123; r.ErrorMsg = "Hello error"; r.Elapsed = 321; r.Finished = System.DateTime.Now; DbAccessorHelper.Init(new MsDbAccessor(connstr)); Assert.IsTrue(DbAccessorHelper.DbAccessor.UpdateInstantTask(r) > 0); IList <DACTask> unfinished = DbAccessorHelper.DbAccessor.GetUnfinishedTasks(); //status=1/2 DACTask ti = unfinished[0]; Assert.AreEqual(ti.ID, 3); Assert.AreEqual(ti.Status, DACTaskStatus.RUNNING); }
private DACTaskResult Acq2(string tid) { DACTaskResult res = new DACTaskResult() { Task = new DACTask() { TID = tid, DtuID = 101 } }; res.AddSensorResult(new SensorAcqResult() { Sensor = new Sensor() { SensorID = 3 }, Data = new PressureData(0, 3.6), ErrorCode = 0 }); return(res); }
public void TestWaterLevelDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.VibratingWire, SafetyFactor.WaterLevel); s1.FactorTypeTable = "T_THEMES_ENVI_WATER_LEVEL"; var d = new VibratingWireData(1869, 25, 18, 100) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void ProcessResult(DACTaskResult rslt) { bool isOnline = false; if (this.service != null) { isOnline = this.service.GetDtuStatus(rslt.DtuCode); } Log.Info("EtDataStatusConsumer start ..."); foreach (SensorAcqResult sensorAcqResult in rslt.SensorResults) { Log.Debug("AddOrUpdateSensorStatus start ..."); if (isOnline) { this.AddOrUpdateSensorStatus(sensorAcqResult); } Log.Debug("AddOrUpdateSensorStatus end."); Log.DebugFormat("JudgeDataStatusIsOk start.."); if (this.JudgeDataStatusIsOk(sensorAcqResult)) { Log.DebugFormat("JudgeDataStatusIsOk end."); Log.DebugFormat("GetRangeByProductId start.."); var ranges = this.GetRangeByProductId(sensorAcqResult.Sensor.ProductId); Log.DebugFormat("GetRangeByProductId end ."); Log.DebugFormat("JudgeDataOverRange start.."); var sb = this.JudgeDataOverRange(sensorAcqResult, ranges); Log.DebugFormat("JudgeDataOverRange end."); if (!string.IsNullOrEmpty(sb)) { Log.InfoFormat("Sensor:{0} generate a OVER RANGE alarm:{1}, sending..", sensorAcqResult.Sensor.SensorID, sb); this.SendDataOverRangeWarning(sensorAcqResult, sb); } } } Log.Info("EtDataStatusConsumer end ."); }
public void TestSeepageDataSerializer() { var r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.Seepage); s1.FactorTypeTable = "T_THEMES_ENVI_SEEPAGE"; var d = new SeepageData(23) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(0, savedCnt); // 插入一条记录 }
public void TestVoltageDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Voltage, SafetyFactor.DeformationCrack); s1.FactorTypeTable = "T_THEMES_DEFORMATION_CRACK"; var d = new VoltageData(0.2, 2.5) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestForceEarthPressureDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.VibratingWire, SafetyFactor.ForceEarthPressure); s1.FactorTypeTable = "T_THEMES_FORCE_EARTH_PRESSURE"; var d = new VibratingWireData(1869, 25, 18, 18) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult() { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestDeformationBridgeDeflectionDataSerializer() { var r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Pressure_MPM, SafetyFactor.DeformationBridgeDeflection); s1.FactorTypeTable = "T_THEMES_DEFORMATION_SETTLEMENT"; var d = new PressureData(23, 23) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestCableForceDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.MagneticFlux, SafetyFactor.CableForce); s1.FactorTypeTable = "T_THEMES_CABLE_FORCE"; var d = new MagneticFluxData(18.69, 25, 500) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { ErrorCode = (int)Errors.SUCCESS, Data = d, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestWind3DDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Wind_OSL, SafetyFactor.Wind3D); s1.FactorTypeTable = "T_THEMES_ENVI_WIND"; var d = new Wind2dData(5, 256) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { Data = d, ErrorCode = (int)Errors.SUCCESS, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestRainfallDataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.RainFall, SafetyFactor.Rainfall); s1.FactorTypeTable = "T_THEMES_ENVI_RAINFALL"; var d = new RainFallData(1.5) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { ErrorCode = (int)Errors.SUCCESS, Data = d, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void TestDeepDisplacement2DataSerializer() { DACTaskResult r = new DACTaskResult(); var s1 = NewSensor(ProtocolType.Inclinometer_OLD, SafetyFactor.DeformationDeepDisplacement); s1.FactorTypeTable = "T_THEMES_DEFORMATION_DEEP_DISPLACEMENT"; var d = new InclinationData(0.023, 0.232, 0.01, 0.02) { //AcqTime = DateTime.Now, //ResultCode = 0, //Sensor = s1 }; r.AddSensorResult(new SensorAcqResult { ErrorCode = (int)Errors.SUCCESS, Data = d, Sensor = s1 }); r.Finished = DateTime.Now; int savedCnt = msDbAccessor.SaveDacResult(r); Assert.AreEqual(1, savedCnt); }
public void ProcessResult(DACTaskResult source) { throw new Exception("error"); }
public void ProcessResult(DACTaskResult source) { Thread.Sleep(100); source.ErrorMsg += "C---3"; Console.WriteLine("C---3:{0},rslt.msg:{1}", ++count, source.ErrorMsg); }
/// <summary> /// 分析采集数据 /// </summary> /// <param name="rslt"></param> public void ProcessResult(DACTaskResult rslt) { Log.Info("DataAnalyzer has recieved DACTaskResult, starts to analyze.."); int count = 0; if (rslt.IsOK) { var sens = rslt.SensorResults.Select(s => s.Sensor.SensorID); var thresholds = this.GetSensorThreshold(sens); // 所有传感器阈值 foreach (var sensorResult in rslt.SensorResults) { if (sensorResult.IsOK && sensorResult.Data != null && sensorResult.ErrorCode == 0) { var sensor = sensorResult.Sensor; var analyzingData = this.GetAnalyzingData(sensorResult); if (analyzingData.Data == null || analyzingData.Data.Any(d => d == null)) { Log.WarnFormat( "data:[{0}] not meet the Analyze's condition", sensorResult.Data.ThemeValues == null ? null : string.Join(",", sensorResult.Data.ThemeValues)); continue; } var sensorThreshold = thresholds.Where(s => s.SensorId == sensor.SensorID).ToList(); // 当前传感器阈值 var sensorAnalyzeResult = this.AnalyzeSensorData(analyzingData, sensorThreshold); // 添加到整体评分集合 GradingSet.Add(sensor, sensorAnalyzeResult); // 发送阈值告警 if (sensorAnalyzeResult.ThresholdAlarm != null && sensorAnalyzeResult.ThresholdAlarm.AlarmDetails.Any()) { try { Log.InfoFormat( "Sensor:{0} generate a OVER THRESHOLD alarm, sending..", sensor.SensorID); WarningHelper.SendWarning( (int)sensor.SensorID, (int)sensor.StructId, sensorAnalyzeResult.ThresholdAlarm); Log.InfoFormat("Sensor:{0} alarm send success", sensor.SensorID); } catch (Exception e) { Log.ErrorFormat("Sensor:{0} alarm send error", e, sensor.SensorID); } } count++; } } } Log.InfoFormat("Data Analyzed, success:{0}", count); }
/// <summary> /// 获取传感器的异常数据处理配置信息 /// </summary> /// <param name="source">传感器采集信息</param> /// <returns>相应传感器的异常数据处理配置信息</returns> private Dictionary <string, ConfigInfo> GetConfigInfos(DACTaskResult source) { var configInfos = new Dictionary <string, ConfigInfo>(); if (source != null && source.SensorResults != null) { List <uint> sensorIdList = source.SensorResults.Select(sensorResult => sensorResult.Sensor.SensorID).ToList(); if (sensorIdList.Count > 0) { try { string cs = ConfigurationManager.AppSettings["SecureCloud"]; ISqlHelper sqlHelper = SqlHelperFactory.Create(DbType.MSSQL, cs); string sql = string.Format(@" select [ItemId] as factorId, [Enabled] as isValitor, [WindowSize] as windowSize, [KT] as KThreshold, [DT] as DiscreteThreshold, [RT] as ReCalcRValueThreshold, [SensorId] as SensorId, [NeedLog] as NeedLog from[T_DATA_STABLE_FILTER_CONFIG] where SensorId in ({0})", string.Join(",", sensorIdList.ToArray())); DataTable dt = sqlHelper.Query(sql).Tables[0]; foreach (DataRow item in dt.Rows) { var sensorId = item[6]; var keyi = sensorId + "-" + (item[0]).ToString(); if (item[2] == DBNull.Value || item[3] == DBNull.Value || item[4] == DBNull.Value || item[5] == DBNull.Value) { continue; //有一个数据为空,整条记录无效 } if (!configInfos.ContainsKey(keyi)) { var values = new ConfigInfo(); configInfos.Add(keyi, values); } configInfos[keyi].IsOpenWindow = Convert.ToBoolean(item[1]); configInfos[keyi].WindowSize = Convert.ToInt32(item[2]); configInfos[keyi].KThreshold = Convert.ToDecimal(item[3]); configInfos[keyi].DiscreteThreshold = Convert.ToInt32(item[4]); configInfos[keyi].ReCalcRValueThreshold = Convert.ToInt32(item[5]); configInfos[keyi].NeedLog = Convert.ToBoolean(item[7]); configInfos[keyi].SensorId = Convert.ToInt32(item[6]); configInfos[keyi].ValueIndex = Convert.ToInt32(item[0]); } } catch (Exception e) { } } } return(configInfos); }
public void ProcessResult(DACTaskResult source) { _logger.Info("DataCalc has recieved DACTaskResult, starts to calculate.."); StartCalc(source); }