From 4b851f7e9c7319502e76214ecd6a658470405dd9 Mon Sep 17 00:00:00 2001
From: Fede85 <f.vanzati@gmail.com>
Date: Fri, 21 Jun 2013 20:09:04 +0200
Subject: added the YahooWeather example

---
 .../Bridge/examples/YahooWeather/YahooWeather.ino  | 94 ++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 libraries/Bridge/examples/YahooWeather/YahooWeather.ino

(limited to 'libraries/Bridge')

diff --git a/libraries/Bridge/examples/YahooWeather/YahooWeather.ino b/libraries/Bridge/examples/YahooWeather/YahooWeather.ino
new file mode 100644
index 0000000..b751e1d
--- /dev/null
+++ b/libraries/Bridge/examples/YahooWeather/YahooWeather.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);  
+}
+
-- 
cgit v1.2.3-18-g5258