protected override void SendDataTimer(object state) { DoubleBarSensorValue dataObject = GetDataObject(); CommonSensorValue commonValue = ToCommonSensorValue(dataObject); EnqueueData(commonValue); }
public void AddSensorValue(DoubleBarSensorValue value) { try { string productName = _productManager.GetProductNameByKey(value.Key); bool isNew = false; if (!_productManager.IsSensorRegistered(productName, value.Path)) { isNew = true; _productManager.AddSensor(productName, value); } DateTime timeCollected = DateTime.Now; SensorData updateMessage = _converter.Convert(value, productName, timeCollected, isNew ? TransactionType.Add : TransactionType.Update); _queueManager.AddSensorData(updateMessage); _valuesCache.AddValue(productName, updateMessage); if (value.EndTime == DateTime.MinValue) { _barsStorage.Add(value, updateMessage.Product, timeCollected); return; } _barsStorage.Remove(productName, value.Path); SensorDataEntity dataObject = _converter.ConvertToDatabase(value, timeCollected); Task.Run(() => SaveSensorValue(dataObject, productName)); } catch (Exception e) { _logger.LogError(e, $"Failed to add value for sensor '{value?.Path}'"); } }
private CommonSensorValue ToCommonSensorValue(DoubleBarSensorValue data) { CommonSensorValue result = new CommonSensorValue(); string serializedValue = GetStringData(data); result.TypedValue = serializedValue; result.SensorType = SensorType.DoubleBarSensor; return(result); }
private void FillNumericData(DoubleBarSensorValue value, List <double> values) { value.Max = GetRoundedNumber(values.Last()); value.Min = GetRoundedNumber(values.First()); value.Count = values.Count; value.Mean = GetRoundedNumber(CountMean(values)); value.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.25)), 0.25)); value.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.5)), 0.5)); value.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.75)), 0.75)); }
public override CommonSensorValue GetLastValue() { try { DoubleBarSensorValue dataObject = GetPartialDataObject(); CommonSensorValue commonValue = ToCommonSensorValue(dataObject); return(commonValue); } catch (Exception e) { return(null); } }
public ActionResult <DoubleBarSensorValue> Post([FromBody] DoubleBarSensorValue sensorValue) { try { _monitoringCore.AddSensorValue(sensorValue); return(Ok(sensorValue)); } catch (Exception e) { _logger.LogError(e, "Failed to put data!"); return(BadRequest(sensorValue)); } }
protected override string GetStringData(SensorValueBase data) { try { DoubleBarSensorValue typedData = (DoubleBarSensorValue)data; return(JsonConvert.SerializeObject(typedData)); //return Serializer.Serialize(typedData); } catch (System.Exception e) { Console.WriteLine(e); return(string.Empty); } }
public ActionResult <DoubleBarSensorValue> Post([FromBody] DoubleBarSensorValue sensorValue) { try { _dataCollector.ReportSensorsCount(1); _dataReceiver.AddSensorValue(sensorValue); return(Ok(sensorValue)); } catch (Exception e) { _logger.LogError(e, "Failed to put data!"); return(BadRequest(sensorValue)); } }
internal static string GetTypedData(SensorValueBase sensorValue) { object sensorData = sensorValue switch { BoolSensorValue boolSensorValue => GetBoolSensorTypedData(boolSensorValue), IntSensorValue intSensorValue => GetIntSensorTypedData(intSensorValue), DoubleSensorValue doubleSensorValue => GetDoubleSensorTypedData(doubleSensorValue), StringSensorValue stringSensorValue => GetStringSensorTypedData(stringSensorValue), IntBarSensorValue intBarSensorValue => GetIntBarSensorTypedData(intBarSensorValue), DoubleBarSensorValue doubleBarSensorValue => GetDoubleBarSensorTypedData(doubleBarSensorValue), FileSensorBytesValue fileSensorBytesValue => GetFileSensorBytesTypedData(fileSensorBytesValue), UnitedSensorValue unitedSensorValue => GetUnitedSensorTypedData(unitedSensorValue), _ => null, }; return(sensorData != null?JsonSerializer.Serialize(sensorData) : string.Empty); }
private DoubleBarSensorValue GetPartialDataObject() { DoubleBarSensorValue result = new DoubleBarSensorValue(); List <double> currentValues; lock (_syncObject) { currentValues = new List <double>(_valuesList); result.StartTime = barStart; } result.LastValue = currentValues.Last(); currentValues.Sort(); FillNumericData(result, currentValues); FillCommonData(result); result.EndTime = DateTime.MinValue.ToUniversalTime(); return(result); }
private DoubleBarSensorValue GetDataObject() { DoubleBarSensorValue result = new DoubleBarSensorValue(); List <double> collected; lock (_syncObject) { collected = new List <double>(_valuesList); _valuesList.Clear(); //New bar starts right after the previous one ends result.StartTime = barStart; result.EndTime = DateTime.Now; barStart = DateTime.Now; } result.LastValue = collected.Last(); collected.Sort(); FillNumericData(result, collected); FillCommonData(result); return(result); }
private void FillCommonData(DoubleBarSensorValue value) { value.Key = ProductKey; value.Path = Path; value.Time = DateTime.Now; }
private static DoubleBarSensorData GetDoubleBarSensorTypedData(DoubleBarSensorValue sensorValue) => GetSensorData(sensorValue.Min, sensorValue.Max, sensorValue.Mean, sensorValue.LastValue, sensorValue.Count, sensorValue.StartTime, sensorValue.EndTime, sensorValue.Percentiles, sensorValue.Comment);