示例#1
0
        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);
        }