/// <summary> /// Constructor of the class - performs initialization /// </summary> public TempHumAvgEngine() { TempHumEntity fakeValue = new TempHumEntity(0, 0, false); //Initialize value containers FullMinuteValues = new Dictionary<int, TempHumEntity>(); for (int i = 1; i < 13; i++) { FullMinuteValues.Add(i, fakeValue); } FullHourValues = new Dictionary<int, TempHumEntity>(); for (int i = 1; i < 61; i++) { FullHourValues.Add(i, fakeValue); } FullMinuteValuesPosition = 1; FullHourValuesPosition = 1; }
/// <summary> /// Method to call every 5 seconds to record a value (temp and humidity) /// </summary> /// <param name="tempC">Temperature in Celcius</param> /// <param name="humidity">Humidity in percent</param> public void AddValue(double tempC, double humidity) { TempHumEntity newValue = new TempHumEntity(tempC, humidity, true); FullMinuteValues[FullMinuteValuesPosition] = newValue; FullMinuteValuesPosition += 1; if (FullMinuteValuesPosition == 13) { //Calculate average for the last 12 values (full minute) and put the result in the hour values container double totalTempC = 0; double totalHumidity = 0; for (int i = 1; i < 13; i++) { totalTempC = totalTempC + FullMinuteValues[i].TempC; totalHumidity = totalHumidity + FullMinuteValues[i].Humidity; } TempHumEntity newMinuteValue = new TempHumEntity(totalTempC / 12, totalHumidity / 12, true); FullHourValues[FullHourValuesPosition] = newMinuteValue; FullHourValuesPosition += 1; if (FullHourValuesPosition == 61) { //Reset position FullHourValuesPosition = 1; } //Reset position FullMinuteValuesPosition = 1; } }