diff options
Diffstat (limited to 'libraries/Bridge/examples/OLDYahooWeather')
| -rw-r--r-- | libraries/Bridge/examples/OLDYahooWeather/OLDYahooWeather.ino | 94 | 
1 files changed, 94 insertions, 0 deletions
| diff --git a/libraries/Bridge/examples/OLDYahooWeather/OLDYahooWeather.ino b/libraries/Bridge/examples/OLDYahooWeather/OLDYahooWeather.ino new file mode 100644 index 0000000..b751e1d --- /dev/null +++ b/libraries/Bridge/examples/OLDYahooWeather/OLDYahooWeather.ino @@ -0,0 +1,94 @@ +/* +  Yahoo Weather Forecast parser +  + http://developer.yahoo.com/weather/ + This sketch demonstrate how to use the Linux command line tools + to parse a simple XML file on the Arduino Yún. +  + First thing download the XML file from the Yahoo Weather service  + than use "grep" and "cut" to extract the data you want. +  + To find  the location ID of your location, browse or search for your  + city from the Weather home page. The location ID is in the URL for  + the forecast page for that city. +  + created 21 Jun 2013 + by Federico Vanzati +  + */ + +#include <Bridge.h> + +String locationID = "725003";  // Turin, Italy + +// table with keywords to search in the XML file +// the third column is the tag to the field +String forecast[10][3] = { +  "location",   "2",  "city", +  "condition",  "6",  "temperature", +  "condition",  "2",  "condition", +  "astronomy",  "2",  "sunrise", +  "astronomy",  "4",  "sunset", +  "atmosphere", "2",  "humidity", +  "atmosphere", "6",  "pressure", +  "wind",       "6",  "wind speed", +  "wind",       "4",  "wind direction", +  "wind",       "2",  "chill temperature"   +}; + + +void setup() { +  Bridge.begin(); +  Serial.begin(9600); +  while(!Serial); +   +  Serial.println("Weather Forecast for your location: \n"); +} + +void loop() { + +  for(int i=0; i<10; i++) { +     +    // Compose the request +     +    // curl is a program that connect to an URL an download the content +    // is used to get the weather forecast from yahoo in XML format +    String command = "curl -s ";  // -s is the silent option +    command += "http://weather.yahooapis.com/forecastrss";  // yahoo weather RSS service +    command += "?w=";  // query for the location +    command += locationID; +    //command += "\\&u=c";  // ask for celsius degrees +     +    // add a new process  +    // grep is used to extract a single line of content containig a search keyword form the XML +    command += " | ";  // pipe a new process +    command += "grep ";  +    command += forecast[i][0];  // word to search in the XML file + +    // add a new process  +    // cut is a program that split a text in different fields  +    // when encouter the passed  character delimiter +    command += " | ";  // pipe a new process +    command += "cut "; +    command += "-d \\\" ";  // -d parameter split the string every " char +    command += "-f ";  // -f parameter is to return the 6th splitted element  +    command += forecast[i][1]; // the field are already manually calculated and inserted in the forecast table + + +    Serial.print(forecast[i][2]); +    Serial.print("= "); +     +    // run the command +    Process wf; +    wf.runShellCommand(command); +     +    while(wf.available()>0) +    { +      Serial.print( (char)wf.read() ); +    } +  } +   +  //do nothing forevermore +  while(1);   +} + | 
