Created
May 16, 2016 16:21
-
-
Save kszucs/437bd79da899a071da95f462036a290d to your computer and use it in GitHub Desktop.
Pico C weather API consumer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This programm calls the aerisapi.com weather web service. | |
// The return value is a JSON string. Since PicoC does not support | |
// JSON I use scraping of the string to find the values. | |
enum OutputPorts | |
{ | |
Temperature, // AQ1 | |
Humidity, // AQ2 | |
windKPH, // AQ3 | |
Precip1HR, | |
UV | |
}; | |
int GetIntValue(char *name, int def) | |
{ | |
int value = def; | |
int pos = strfind(result, name, 0); | |
if(pos > 0) | |
{ | |
char *stemp = calloc(1, 10); | |
int lenName = strlen(name); | |
strncpy(stemp, result + pos + lenName, 5); | |
value = atoi(stemp); | |
setoutput(Temperature, temp); | |
free(stemp); | |
stemp = 0; | |
} | |
printf ("%s = %d", name, value); | |
return value; | |
} | |
/// <Summary> | |
/// Main loop. | |
/// </Summary> | |
while(TRUE) | |
{ | |
char *host = "www.wunderground.com"; | |
char *page = "/api/Your_Key/conditions/q/CA/San_Francisco.json"; | |
char *result = httpget(host, page); | |
if(result != 0) | |
{ | |
int temp = GetIntValue("\"temp_c\":", -100); // a -100 az alapertelmezett ertek (gondolom) | |
if(temp != -100) // ha nem az alapertelmezett ertek akkor beallitjuk az eredmenyben | |
{ | |
setoutput(Temperature, temp); | |
} | |
int humidity = GetIntValue("\"relative_humidity\":", -100); | |
if(humidity != -100) | |
{ | |
setoutput(Humidity, humidity); | |
} | |
int wind = GetIntValue("\"wind_kph\":", -100); | |
if(wind != -100) | |
{ | |
setoutput(windKPH, wind); | |
} | |
int precip = GetIntValue("\"precip_1h_metric\":", -100); | |
if(precip != -100) | |
{ | |
setoutput(Precip, precip); | |
} | |
int uv = GetIntValue("\"UV\":", -100); | |
if(uv != -100) | |
{ | |
setoutput(Precip, precip); | |
} | |
free(result); | |
} | |
// Slow the loop down 10 minutes | |
int sleepTime = 10 * 60 * 1000; | |
sleep(sleepTime); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"response": { | |
"version": "0.1", | |
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html", | |
"features": { | |
"conditions": 1 | |
} | |
}, | |
"current_observation": { | |
"image": { | |
"url": "http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png", | |
"title": "Weather Underground", | |
"link": "http://www.wunderground.com" | |
}, | |
"display_location": { | |
"full": "San Francisco, CA", | |
"city": "San Francisco", | |
"state": "CA", | |
"state_name": "California", | |
"country": "US", | |
"country_iso3166": "US", | |
"zip": "94101", | |
"latitude": "37.77500916", | |
"longitude": "-122.41825867", | |
"elevation": "47.00000000" | |
}, | |
"observation_location": { | |
"full": "SOMA - Near Van Ness, San Francisco, California", | |
"city": "SOMA - Near Van Ness, San Francisco", | |
"state": "California", | |
"country": "US", | |
"country_iso3166": "US", | |
"latitude": "37.773285", | |
"longitude": "-122.417725", | |
"elevation": "49 ft" | |
}, | |
"estimated": {}, | |
"station_id": "KCASANFR58", | |
"observation_time": "Last Updated on June 27, 5:27 PM PDT", | |
"observation_time_rfc822": "Wed, 27 Jun 2012 17:27:13 -0700", | |
"observation_epoch": "1340843233", | |
"local_time_rfc822": "Wed, 27 Jun 2012 17:27:14 -0700", | |
"local_epoch": "1340843234", | |
"local_tz_short": "PDT", | |
"local_tz_long": "America/Los_Angeles", | |
"local_tz_offset": "-0700", | |
"weather": "Partly Cloudy", | |
"temperature_string": "66.3 F (19.1 C)", | |
"temp_f": 66.3, | |
"temp_c": 19.1, | |
"relative_humidity": "65%", | |
"wind_string": "From the NNW at 22.0 MPH Gusting to 28.0 MPH", | |
"wind_dir": "NNW", | |
"wind_degrees": 346, | |
"wind_mph": 22.0, | |
"wind_gust_mph": "28.0", | |
"wind_kph": 35.4, | |
"wind_gust_kph": "45.1", | |
"pressure_mb": "1013", | |
"pressure_in": "29.93", | |
"pressure_trend": "+", | |
"dewpoint_string": "54 F (12 C)", | |
"dewpoint_f": 54, | |
"dewpoint_c": 12, | |
"heat_index_string": "NA", | |
"heat_index_f": "NA", | |
"heat_index_c": "NA", | |
"windchill_string": "NA", | |
"windchill_f": "NA", | |
"windchill_c": "NA", | |
"feelslike_string": "66.3 F (19.1 C)", | |
"feelslike_f": "66.3", | |
"feelslike_c": "19.1", | |
"visibility_mi": "10.0", | |
"visibility_km": "16.1", | |
"solarradiation": "", | |
"UV": "5", | |
"precip_1hr_string": "0.00 in ( 0 mm)", | |
"precip_1hr_in": "0.00", | |
"precip_1hr_metric": " 0", | |
"precip_today_string": "0.00 in (0 mm)", | |
"precip_today_in": "0.00", | |
"precip_today_metric": "0", | |
"icon": "partlycloudy", | |
"icon_url": "http://icons-ak.wxug.com/i/c/k/partlycloudy.gif", | |
"forecast_url": "http://www.wunderground.com/US/CA/San_Francisco.html", | |
"history_url": "http://www.wunderground.com/history/airport/KCASANFR58/2012/6/27/DailyHistory.html", | |
"ob_url": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=37.773285,-122.417725" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment