public RingCollection <SensorValue> CreateHistory(RingCollection <SensorValue> values) { values.Clear(); // Create a sorted list of all sensor log times List <DateTime> times = new List <DateTime>(); foreach (ISensor s in used) { foreach (SensorValue v in s.Values) { times.Add(v.Time); } } times.Sort((a, b) => b.CompareTo(a)); foreach (DateTime cur in times) { float val = ParseOutput(cur); values.Append(new SensorValue(val, cur)); } if (values.Count > 0) { values.Last = new SensorValue(ParseOutput(), DateTime.UtcNow); } return(values); }
private void AppendValue(float value, DateTime time) { if (values.Count >= 2 && values.Last.Value == value && values[values.Count - 2].Value == value) { values.Last = new SensorValue(value, time); return; } values.Append(new SensorValue(value, time)); }
private void AppendValue(float value, DateTime time) { if (values.Count >= 2 && values.Last.Value == value && values[values.Count - 2].Value == value) { values.Last = new SensorValue(value, time); return; } values.Append(new SensorValue(value, time)); // Calculate moving average if (!float.IsNaN(value)) { if (avgValue == null) { avgValue = 0.0f; } countForAvg += 1; avgValue = ((avgValue * (countForAvg - 1)) + value) / countForAvg; } }