Buienradar

Hallo allemaal.
Ik had het idee om de temperatuur windsnelheid etc. Op een lcd te tonen. Ik vond een soort gelijke code die het deed met google weather maar die werkt niet meer. Ik ben nog niet erg ervaren, dus kan iemand mij hier mee helpen.
ik had de xml link gevonden op http://gratisweerdata.buienradar.nl/

/*
 * Based on SimpleClientGoogleWeatherDHCP - This one comes with High Temp and Current conditions data.
 * gets xml data from http://www.google.com/ig/api?weather=milwaukee,wi
 * reads temperature from field:  <temp_f data="66" /> 
 * writes temperature  to 20x4 LCD. Using Ardiuno Mega 2640
 */

#if ARDUINO > 18
#include <SPI.h>         // needed for Arduino versions later than 0018 
#endif

#include <Ethernet.h>
#include <TextFinder.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 7, 6, 5, 4, 3, 2); 
//LCD Pinout is: PIN 1 is VSS TO GND, PIN 2 is VDD 5v, PIN 3 is V0 TO GRN) PIN 4 is RS, PIN5 is RW, PIN6 is E, DB Pins 4 thru 14 (PINS 7 - 10 (DB 0 - DB 3 OPEN) Pin 15 backlight 
//16 backlight ground
int backLight = 1;    // pin 28 will control the backlight
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x8F, 0xD3 };
byte ip[] = { 192, 168, 178, 1 };
byte server[] = {
  217,118,167,200 }; // Google

EthernetClient client;

TextFinder  finder( client );  
char cond[40];
char fcond[40];
char wind[25];
int forelow1;
int forehigh1;
void setup()
{
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
  lcd.begin(20,4);
  lcd.setCursor(0,0);
  lcd.print("I'm alive");
  Ethernet.begin(mac, ip);
}

void loop()
{
  if (client.connect(server, 80)) {
    client.println("GET http://www.buienradar.nl/weerstation/6290/Meetstation Twente");  
    client.println();
  } 
  else {
    lcd.println("Can not connect ");

  } 
  if (client.connected()) {
    finder.find("<condition data");
    finder.getString("=","/",cond,(40));
    finder.find("<luchtvochtigheid>");
    int temperature = finder.getValue();
    finder.find("<windsnelheidBF>");
    finder.getString(":","/",wind,(40));
    finder.find("<low data=");
    forelow1 = finder.getValue();
    finder.find("<high data=");
    forehigh1 = finder.getValue();
    finder.find("<condition data");
    finder.getString("=","/",fcond,(40));
    //Print this    
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Currently:");
    lcd.setCursor(0,1);
    lcd.print("Temperature = ");
    lcd.print(temperature);
    lcd.setCursor(0,2);
    lcd.print("Wind:");
    lcd.print(wind);
    lcd.setCursor(0,3);
    lcd.print(cond);
    delay(4000);
    lcd.clear();
    lcd.print("Tomorrow: ");
    lcd.setCursor(0,1);
    lcd.print("Expected Low: ");
    lcd.print(forelow1);
    lcd.setCursor(0,2);
    lcd.print("Expected High: ");
    lcd.print(forehigh1);
    lcd.setCursor(0,3);
    lcd.print(fcond);  
    delay(4000);

  }
  else {
    lcd.clear();
    lcd.print("Can not find xml tag");

  }
  client.stop();
  client.flush();  
  delay(4000); // wait a minute before next update
}

“Doet het niet” is niet duidelijk genoeg.
Wat gaat er mis ?

Ik weet niet hoe je de gegevens: temperatuur luchtvochtigheid etc. uit de xml haalt.

Google is je beste vriend

Hij werkt nu bijna…
ik gebruik nu de api van http://weather.yahooapis.com/forecastrss?w=729139&u=c
het einige waar ik niet uitkom is om de “<yweather:condition text=” op het scherm te krijgen. Wat doe ik fout?

alvast bedankt.

#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD };
byte ip[] = { 192, 168, 178, 15 };
byte gateway[] = { 192, 168, 178, 1 };
byte subnet[] = { 255, 255, 255, 0 };

LiquidCrystal lcd(8, 7, 6, 5, 4, 3, 2);

// Server Yahoo
IPAddress server(66,196,66,157);

int backLight = 1;

EthernetClient client;
TextFinder  finder( client );  

char place[50];
char hum[30];
char cond[40];


void setup()
{
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH); 
  lcd.begin(20,4);
  // Start Ehternet
  Ethernet.begin(mac, ip);
  // Start Serial Port
  Serial.begin(9600);
  Serial.println("Setup...");
  lcd.setCursor(0,0);
  lcd.print("Opstarten...");
  delay(3000);
  lcd.clear();
} 


void loop()
{
  if (client.connect(server, 80))
  {
    
    Serial.println("Connect to Yahoo Weather...");
    lcd.setCursor(0,0);
    lcd.print("Weer gegevens laden...");
    client.println("GET http://weather.yahooapis.com/forecastrss?w=729139&u=c");
    client.println();
    Serial.println("Connected...");
    lcd.setCursor(0,1);
    lcd.print("Gelukt!");
    lcd.clear(); 
  } 
  else
  {
    Serial.println(" connection failed");
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Geen verbinding");
    lcd.setCursor(0,3);
    lcd.print("ERROR code 0001");
    
  } 
 

  if (client.connected())
  {
    
    // Humidity
   if ( (finder.getString("<yweather:atmosphere humidity=\"", "\"",hum,40)!=0) )
   {
     Serial.print("Humidity:  ");
     Serial.println(hum);
     Serial.print("%");
     lcd.setCursor(0,1);
     lcd.print("vochtigheid:  ");
     lcd.print(hum);
     lcd.print(" %");
   } 
   else
   {
     Serial.print("No Humidity Data");
     lcd.setCursor(0,0);
     lcd.print("Geen Vochtigheid");
     lcd.setCursor(0,1);
     lcd.print("iformatie gevonden");
     lcd.setCursor(0,3);
     lcd.print("ERROR code 0002");
   }
    
    
    // Place/City
    if ( (finder.getString("<title>Conditions for ", " ",place,50)!=0) )
    {
      Serial.print("City:  ");
      Serial.println(place);
      lcd.setCursor(0,0);
      lcd.print("Plaats:  ");
      lcd.setCursor(0,0);
      lcd.print(place);
    }
    else
    {
      lcd.setCursor(0,0);
     lcd.print("Geen plaats gevonden");
     lcd.setCursor(0,3);
     lcd.print("ERROR code 0003");
    }
    
    // Temperature
    if(finder.find("temp=") )
    {
     int temperature = finder.getValue();
     Serial.print("Temp C:  ");
     Serial.println(temperature);
     lcd.setCursor(0,2);
     lcd.print("Temperatuur:  ");
     lcd.print(temperature);
     lcd.print(" C");
   }
   else
   {
     Serial.print("No Temperature Data");
     lcd.setCursor(0,0);
     lcd.print("Geen temperatuur");
     lcd.setCursor(0,1);
     lcd.print("iformatie gevonden");
     lcd.setCursor(0,3);
     lcd.print("ERROR code 0004");
   }
   if(finder.find("<yweather:condition text=")) {
     finder.getString("=","/",cond,(40));
     lcd.setCursor(0,3);
     lcd.print(cond);
   }
   else {
     lcd.setCursor(0,3);
     lcd.print("geen conditie");
   }
     
   
         
  // END XML
  }
  
  else
  {
    Serial.println("Disconnected"); 
    lcd.setCursor(0,0);
    lcd.print("Disconnected");
  }
 
  client.stop();
  client.flush();
  delay(60000); 
}

Je bent zeer vaag in je foutomschrijvingen…

het einige waar ik niet uitkom is om de “<yweather:condition text=” op het scherm te krijgen. Wat doe ik fout?

Krijg je iets anders? Krijg je een foutmelding?
Kan je een scherm afdruk geven, via de monitor?

Waar heb je deze sketch gehaald, komt ook bij mij op?

Een duidelijke vraag helpt om het probleem te definiëren.