private static async Task <bool> PostMeasurement(NetatmoStationData measurements, TraceWriter log) { bool success = true; using (var http = new HttpClient()) { var stationId = Environment.GetEnvironmentVariable(EnvWundergroundStationId); var key = Environment.GetEnvironmentVariable(EnvWundergroundStationKey); if (string.IsNullOrEmpty(key)) { log.Error($"ERROR no {EnvWundergroundStationKey} set"); return(false); } if (string.IsNullOrEmpty(stationId)) { log.Error($"ERROR no {EnvWundergroundStationId} set"); return(false); } var timestamp = measurements.Body?.Devices?[0]?.Modules?[0]?.DashboardData?.TimeUtc; var temperature = measurements.Body?.Devices?[0]?.Modules?[0]?.DashboardData?.Temperature; var humidity = measurements.Body?.Devices?[0]?.Modules?[0]?.DashboardData?.Humidity; var pressure = measurements.Body?.Devices?[0]?.DashboardData?.AbsolutePressure; var tempF = UnitConversions.FromCelsiusToFahrenheit(temperature.Value); var inHg = UnitConversions.InHgFromMillibars(pressure.Value); var uri = $"{WeatherUndergroundPostMeasurementUri}?action=updateraw&dateutc=={timestamp.Value}&tempf={tempF}&humidity={humidity.Value}&baromin={inHg}&ID={stationId}&PASSWORD={key}"; log.Info($"URI: {uri}"); var response = await http.GetAsync(uri); if (response.IsSuccessStatusCode) { log.Info($"Measurement posted succesfully. {response.StatusCode} - {response.ReasonPhrase}"); success = true; } else { log.Error($"ERROR posting measurement: {response.StatusCode} - {response.ReasonPhrase}"); success = false; } } return(success); }