public async Task <bool> UpdateTemperature(string temp, string humidity) { double dTemperature = -1, dHumidity = -1; if (!double.TryParse(temp, out dTemperature) || !double.TryParse(humidity, out dHumidity)) { return(false); } if (dTemperature < ConfigurationManager.MinTemperature || dTemperature > ConfigurationManager.MaxTemperature) { telemetry.TrackEvent("Temp out of bounds", new Dictionary <string, string> { { "Temp", temp.ToString() }, { "Humidity", humidity.ToString() } }, null); var ambiantTemp = await _nestService.GetCurrentAmbiantTemperature(); var targetTemp = await _nestService.GetCurrentTargetTemperature(); if (ambiantTemp.HasValue && targetTemp.HasValue) { if (dTemperature < ConfigurationManager.MinTemperature) { if (targetTemp.Value <= ambiantTemp.Value && ambiantTemp.Value < ConfigurationManager.MaxThermostatTemperature) { await _nestService.SetTemperature(ambiantTemp.Value + 1); } else { telemetry.TrackTrace($"Beer temperature was {dTemperature} but did not update thermostat because ambiant temp is {ambiantTemp.Value} and target temp is {targetTemp.Value}"); } } else { if (targetTemp.Value >= ambiantTemp.Value && ambiantTemp.Value > ConfigurationManager.MinThermostatTemperature) { await _nestService.SetTemperature(ambiantTemp.Value - 1); } else { telemetry.TrackTrace($"Beer temperature was {dTemperature} but did not update thermostat because ambiant temp is {ambiantTemp.Value} and target temp is {targetTemp.Value}"); } } } } if (await _blobStorageService.InsertTempAndHumidity(dTemperature, dHumidity)) { return(true); } return(false); }