Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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;
            }
        }