public async Task <IActionResult> Edit(int id, [Bind("SensorGroupId,Name,Description")] SensorGroup sensorGroup) { if (id != sensorGroup.SensorGroupId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(sensorGroup); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SensorGroupExists(sensorGroup.SensorGroupId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(sensorGroup)); }
public SensorGroup read_sensors() { SensorGroup main_group = new SensorGroup(); main_group.source_id = source; main_group.name = source; SensorNode node; node = new SensorNode(); node.source_id = source; node.idx = 0; node.identifier = "hdkasdk"; node.is_sensor = true; node.name = "Dummy Sensor 1"; node.unit = (int)SensorNodeBase.UnitType.Number; node.range = (int)SensorNodeBase.Range.None; node.time_scale = (int)SensorNodeBase.TimeScale.None; node.sensor_value = rnd_number.Next(2000, 10000) / 100.0; main_group.children.Add(node); node = new SensorNode(); node.source_id = source; node.idx = 0; node.identifier = "loz9324zld"; node.is_sensor = true; node.name = "Dummy Sensor 2"; node.unit = (int)SensorNodeBase.UnitType.Temperature; node.range = (int)SensorNodeBase.Range.None; node.time_scale = (int)SensorNodeBase.TimeScale.None; node.sensor_value = rnd_number.Next(5000, 7000) / 100.0; main_group.children.Add(node); return(main_group); }
public SensorGroupViewModel(SensorGroup sensorGroup) { this.Id = sensorGroup.Id; this.Name = sensorGroup.Name; if (!String.IsNullOrEmpty(sensorGroup.TimeStamp)) { if (!String.IsNullOrEmpty(sensorGroup.Name)) { this.Name += " " + DateTimeUtil.HowLongAgo(sensorGroup.TimeStamp); } } List <SensorViewModel> sensors = new List <SensorViewModel>(); List <SensorValueViewModel> values = new List <SensorValueViewModel>(); if (sensorGroup.Items != null) { foreach (var sensor in sensorGroup.Items) { if (sensor.Value?.Values != null) { var sensorViewModel = new SensorViewModel(sensor.Value); if (sensorViewModel.Values != null && sensorViewModel.Values.Any()) { values.AddRange(sensorViewModel.Values); } } } } this.Sensors = sensors; this.SensorValues = values; }
public static IAlgorithm CreateAlgorithm(SensorGroup group) { switch (group.GroupType) { case GroupType.Inclination: return(new DeepDisplacementAlgorithm(group)); break; case GroupType.SaturationLine: return(new SaturationLineAlgorithm(group)); break; case GroupType.Settlement: return(new SettlementAlgorithm(group)); break; case GroupType.VirtualSensor: return(new VirtualSensorAlgorithm(group)); break; default: break; } return(null); }
public void ProbeMachine_Basic_Success() { // Setup // Act SensorGroup group = _data.ProbeMachine(); // Assert group.ShouldNotBeNull(); }
public async Task <IActionResult> Create([Bind("SensorGroupId,Name,Description")] SensorGroup sensorGroup) { if (ModelState.IsValid) { _context.Add(sensorGroup); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(sensorGroup)); }
public static int Update(uint dtuId, SensorGroup group, IList <SensorAcqResult> acqRes, string taskId) { int calccnt = 0; if (_calcPlans.ContainsKey(group.GroupId)) { var plan = _calcPlans[group.GroupId]; IList <SensorAcqResult> calRes = null; if (plan.GetGuid() == taskId) { plan.AddToPlan(dtuId, acqRes); if (plan.IsReady()) { if (plan.DoCalc(out calRes)) { calccnt++; } if (calRes != null) { foreach (var sar in calRes) { acqRes.Add(sar); } } CalcPlan cp; _calcPlans.TryRemove(group.GroupId, out cp); } } else //new round acquisition { if (plan.DoCalc(out calRes)) { calccnt++; } CalcPlan cp; _calcPlans.TryRemove(group.GroupId, out cp); var nplan = _calcPlans.GetOrAdd(group.GroupId, new CalcPlan(group, taskId)); nplan.AddToPlan(dtuId, acqRes); if (calRes != null) { foreach (var sar in calRes) { acqRes.Add(sar); } } } } else { var nplan = _calcPlans.GetOrAdd(group.GroupId, new CalcPlan(group, taskId)); nplan.AddToPlan(dtuId, acqRes); } return(calccnt); }
public void ProbeMachine_UtilizationFirstTime_NonZero() { // Setup // Act SensorGroup group = _data.ProbeMachine(); SensorNode utilNode = group.GetSensor("test", "utilization"); // Assert utilNode.sensor_value.ShouldBeGreaterThan(0); }
public CalcPlan(SensorGroup gp, string taskId) { _calcGroup = gp; _roundGuid = taskId; var dtus = gp.GetDtuIdList(); foreach (var dtu in dtus) { DtuJobStatus.Add(dtu, false); } }
/// <summary> /// is called every second from the service handler /// </summary> public void worker() { if (_dataSource == null) { return; } SensorGroup sensors = _dataSource.ProbeMachine(); _sensorData = sensors; _sensorUpdate = true; }
public void ProbeMachine_UtilizationNextTime_NonZero() { // Setup // Act SensorGroup group1 = _data.ProbeMachine(); SensorGroup group2 = _data.ProbeMachine(); SensorNode utilNode = group2.GetSensor("test", "utilization"); // Assert utilNode.sensor_value.ShouldBe(15); }
public SensorGroup read_sensors() { if (read_error_count > 10) { TimeSpan diff = DateTime.Now - last_read; if (diff.TotalSeconds > 30) { read_error_count--; //allow one read out } else { return(null); } } last_read = DateTime.Now; bool read_result = read(); if (!read_result) { read_error_count++; return(null); } if (sensors == null || sensors.Length == 0 || groups == null || groups.Length == 0) { read_error_count++; return(null); } read_error_count = 0; SensorGroup main_group = new SensorGroup(); main_group.source_id = source; main_group.name = source; foreach (OhmGroup g in groups) { if (g != null) { SensorGroup newGroup = new SensorGroup(); newGroup.name = g.Name; newGroup.source_id = source; newGroup.children.AddRange(GetSensorsFromGroup(g.Identifier)); if (newGroup.children.Count > 0) { newGroup.children = newGroup.children.OrderBy(x => x.name).ToList(); main_group.children.Add(newGroup); } } } return(main_group); }
protected void Page_Load(object sender, EventArgs e) { string tid = Request.QueryString["group_id"]; groupId = tid; if (!string.IsNullOrEmpty(tid) && int.TryParse(tid, out int g_id)) { this.asensor = _db.Sensors.Where(a => a.GroupId == g_id).First(); this.group = _db.SensorGroups.SingleOrDefault(g => g.GroupID == g_id); //put the initial value to textbox if (!IsPostBack) { alertTxt.Text = _db.AlertValues.SingleOrDefault(a => a.GroupID == g_id).Value.ToString(); } var allSensorVal = _db.Sensors.Where(s => s.GroupId == g_id); // loop through all sensors and add into a list foreach (var sensor in allSensorVal) { sensorValList.Add(sensor.SensorVal.ToString()); sensorDtList.Add(DateTime.Parse(sensor.TimeOperate.ToString())); } this.sensorValStr = ""; //put the last five value into string for (int s = sensorValList.Count - 12; s < sensorValList.Count; s++) { if (s > sensorValList.Count - 12) { this.sensorValStr += "~"; this.sensorDtStr += "~"; } this.sensorValStr += sensorValList[s].ToString(); this.sensorDtStr += sensorDtList[s].TimeOfDay.ToString(); } } }
public CalcPlan(SensorGroup gp, int acqNum) { this._calcGroup = gp; this._acqNum = acqNum; }
public DeepDisplacementAlgorithm(SensorGroup group) { this._sensorGroup = group; this.AlgorithmName = AlgorithmNames.DeepDisplaceAlgo; }
public SettlementAlgorithm(SensorGroup group) { this._sensorGroup = group; this.AlgorithmName = AlgorithmNames.SettlementAlgo; }
public SaturationLineAlgorithm(SensorGroup group) { this._sensorGroup = group; this.AlgorithmName = AlgorithmNames.SaturationLineAlgo; }
public SensorGroup ProbeMachine() { _machineNow = _machine.CurrentDateTime; SensorGroup main_group = new SensorGroup() { name = "xforma59 Plugin", source_id = _source, identifier = _source, }; main_group.children.Add(new SensorNode() { source_id = _source, identifier = "x-average-utilization", is_sensor = true, name = "xAverage Percent System Utilization", unit = (int)SensorNodeBase.UnitType.Temperature, sensor_value = GetAverageUtilization(), }); main_group.children.Add(new SensorNode() { source_id = _source, identifier = "x-instant-utilization", is_sensor = true, name = "xInstant Percent System Utilization", unit = (int)SensorNodeBase.UnitType.Temperature, sensor_value = GetInstantUtilization(), }); for (int i = 0; i < _machine.DimmerControls.Count; i++) { main_group.children.Add(new SensorNode() { source_id = _source, identifier = "x-dimmer-control-" + i.ToString(), is_sensor = true, name = "xDimmer Control " + i.ToString(), unit = (int)SensorNodeBase.UnitType.Temperature, sensor_value = GetDimmerValue(i), }); } for (int i = 0; i < _machine.FlowRates.Count; i++) { main_group.children.Add(new SensorNode() { source_id = _source, identifier = "x-flow-rate-" + i.ToString(), is_sensor = true, name = "xFlow Rate " + i.ToString(), unit = (int)SensorNodeBase.UnitType.Temperature, sensor_value = _machine.FlowRates[i], }); } for (int i = 0; i < _machine.FlashersPower.Count; i++) { main_group.children.Add(new SensorNode() { source_id = _source, identifier = "x-flasher-power-" + i.ToString(), is_sensor = true, name = "xFlasher Power " + i.ToString(), unit = (int)SensorNodeBase.UnitType.Temperature, sensor_value = _machine.FlashersPower[i], }); } return(main_group); }
public VirtualSensorAlgorithm(SensorGroup group) { this._sensorGroup = group; this.AlgorithmName = AlgorithmNames.VirtualSensorAlgo; }
private IList <SensorGroup> QueryGroups(DataTable table) { IList <SensorGroup> grouplst = new List <SensorGroup>(); if (table == null || table.Rows.Count <= 0) { return(grouplst); } var groupType = (GroupType)table.AsEnumerable().First().Field <int>("GROUP_TYPE_ID"); var groups = from g in table.AsEnumerable() group g by g.Field <int>("GROUP_ID"); foreach (var g in groups) { SensorGroup group; switch (groupType) { case GroupType.Inclination: group = new SensorGroup(g.Key, groupType); foreach (DataRow row in g) { var gp = new GroupItem { SensorId = Convert.ToInt32(row["SENSOR_ID"]), DTUId = Convert.ToUInt32(row["DTU_ID"]) }; gp.Paramters.Add("DEPTH", Convert.ToDouble(row["DEPTH"])); group.Items.Add(gp); } grouplst.Add(group); break; case GroupType.Settlement: group = new SensorGroup(g.Key, groupType); foreach (DataRow row in g) { var gp = new GroupItem { SensorId = Convert.ToInt32(row["SENSOR_ID"]), DTUId = Convert.ToUInt32(row["DTU_ID"]) }; gp.Paramters.Add("IsBase", Convert.ToByte(row["isJIZHUNDIAN"])); group.Items.Add(gp); } grouplst.Add(group); break; case GroupType.SaturationLine: group = new SensorGroup(g.Key, groupType); foreach (DataRow row in g) { var gp = new GroupItem { SensorId = Convert.ToInt32(row["SENSOR_ID"]), DTUId = Convert.ToUInt32(row["DTU_ID"]) }; gp.Paramters.Add("HEIGHT", Convert.ToDouble(row["HEIGHT"])); group.Items.Add(gp); } grouplst.Add(group); break; default: break; } } return(grouplst); }
private IList <SensorGroup> QueryVirtualSensors(uint dtuid) { IList <SensorGroup> virtualsens = new List <SensorGroup>(); String virtualSensorQuerySql = string.Format( @"select s.SENSOR_ID,s.SAFETY_FACTOR_TYPE_ID,s.STRUCT_ID,ss.DTU_ID,p.FORMAULAID,p.PROTOCOL_ID, f.Parameter1,f.Parameter2,f.Parameter3,f.Parameter4,f.Parameter5,f.Parameter6,f.Parameter7,c.CorrentSensorId, sf.THEMES_TABLE_NAME,sf.THEMES_COLUMNS from [T_DIM_SENSOR_CORRENT] c left join T_DIM_SENSOR s on s.SENSOR_ID=c.SensorId left join T_DIM_SENSOR_PRODUCT p on s.PRODUCT_SENSOR_ID = p.PRODUCT_ID left join T_DIM_FORMULAID_SET f on c.SensorId=f.SENSOR_ID left join T_DIM_SAFETY_FACTOR_TYPE sf on sf.SAFETY_FACTOR_TYPE_ID=s.SAFETY_FACTOR_TYPE_ID left join T_DIM_SENSOR ss on ss.SENSOR_ID=c.CorrentSensorId where c.SensorId in( select distinct(c.SensorId) from T_DIM_SENSOR s,[T_DIM_SENSOR_CORRENT] c where s.SENSOR_ID=c.CorrentSensorId and s.IsDeleted=0 and s.DTU_ID={0})", dtuid); DataTable table = this._dbHelper.Query(virtualSensorQuerySql).Tables[0]; if (table.Rows.Count > 0) { var groups = from g in table.AsEnumerable() group g by g.Field <int>("SENSOR_ID"); foreach (var item in groups) { if (!item.Any()) { continue; } var agroup = new SensorGroup(item.Key, GroupType.VirtualSensor); DataRow row = item.First(); // 虚拟传感器的分组信息(公式、参数、子集) agroup.FormulaId = row["FORMAULAID"] == DBNull.Value ? -1 : Convert.ToInt32(row["FORMAULAID"]); agroup.FactorTypeId = row["SAFETY_FACTOR_TYPE_ID"] == DBNull.Value ? -1 : Convert.ToInt32(row["SAFETY_FACTOR_TYPE_ID"]); agroup.FactorTypeTable = row["THEMES_TABLE_NAME"] == DBNull.Value ? "" : Convert.ToString(row["THEMES_TABLE_NAME"]); agroup.TableColums = row["THEMES_COLUMNS"] == DBNull.Value ? "" : Convert.ToString(row["THEMES_COLUMNS"]); int paraIndex = 1; while (!row.IsNull("Parameter" + paraIndex)) { agroup.FormulaParams.Add(Convert.ToDouble(row["Parameter" + paraIndex])); paraIndex++; } foreach (DataRow dr in item) { if (!dr.IsNull("CorrentSensorId")) { agroup.AddItem(new GroupItem { SensorId = Convert.ToInt32(dr["CorrentSensorId"]), DTUId = Convert.ToUInt32(dr["DTU_ID"]) }); } } // 虚拟传感器的基础信息 var virtualSensor = new Sensor(); virtualSensor.SensorID = Convert.ToUInt32(row["SENSOR_ID"]); virtualSensor.FormulaID = row.IsNull("FORMAULAID") ? 0 : Convert.ToUInt32(row["FORMAULAID"]); virtualSensor.FactorType = Convert.ToUInt32(row["SAFETY_FACTOR_TYPE_ID"]); virtualSensor.ProtocolType = row.IsNull("PROTOCOL_ID") ? 0 : Convert.ToUInt32(row["PROTOCOL_ID"]); virtualSensor.FactorTypeTable = Convert.ToString(row["THEMES_TABLE_NAME"]); virtualSensor.TableColums = Convert.ToString(row["THEMES_COLUMNS"]); virtualSensor.StructId = Convert.ToUInt32(row["STRUCT_ID"]); virtualSensor.SensorType = SensorType.Virtual; agroup.VirtualSensor = virtualSensor; virtualsens.Add(agroup); } } return(virtualsens); }
/// <summary> /// abort export plugin /// </summary> public void stop_instance() { _dataSource = null; _sensorData = null; }