Show Posts
Pages: 1 2 [3] 4 5 ... 47
31  Using Arduino / Programming Questions / Re: XML fetching question: Ethernet Shield on: September 16, 2012, 06:19:34 am
All of these services weather or time send xml data.

As I showed you in a earlier post I was able to receive the time data.

I also think the problem is in the ethernet connection and configuration. Gateway and Subnet a optional.

Did you check the WebClient example?
32  Using Arduino / Programming Questions / Re: XML fetching question: Ethernet Shield on: September 16, 2012, 04:17:50 am
Code:
// Ethernet
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x13, 0x1D };
byte ip[] = { 78,149,131,230 };
byte gateway[] = { 10, 0, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
IP doesn't match to the gateway IP.

It looks like your client can't make a connection to the Yahoo server.

Can you check your example sketch "WebClient" from the ethernet library. With this sketch you should be able to get response from the google server. After successful run of the Webclient sketch you can copy the ethernet settings to you weather sketch.
33  Using Arduino / Programming Questions / Re: XML fetching question: Ethernet Shield on: September 14, 2012, 12:52:39 pm
Quote
Why isn't my version working then?

@stuarthooper
What message do you see in the serial monitor.
Compare with my working example above.
You should check the ip address from the yahoo server. May be you have to use a different. Make a ping in the command box.

Quote
Your code appears to be "different" from the code I used. I suggest you try the code that worked for me to see if you have hardware issues or just issues with your code.
I provided 2 different ways and working sketches to read the yahoo weather xml.

1. My own solution from an other thread
http://arduino.cc/forum/index.php/topic,121992.msg920175.html#msg920175

2. The fixed version from stuarthooper that worked on my board.

Zoomkat is right. These are two different code example. He tested successful version 1 which uses the TextFinder Library.



34  Using Arduino / Programming Questions / Re: XML fetching question: Ethernet Shield on: September 13, 2012, 02:16:54 am
I checked your sketch and changed some lines (Fixed IP, Server IP, Serial Begin)
Here is a working version. See the result in the serial monitor:


worldweatheronline-xml by Arduinopraxis

Code:
#include <SPI.h>
#include <Ethernet.h>


// Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD };
byte ip[] = { 10, 0, 1, 101 };
byte gateway[] = { 10, 0, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

// initialize the library instance:
EthernetClient client;

const unsigned long requestInterval = 60000;  // delay between requests

//char serverName[] = "http://www.worldweatheronline.com/feed/tz.ashx";  // time URL

// Server
IPAddress server(81,201,134,251);

boolean requested;                   // whether you've made a request since connecting
unsigned long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String time = "";                  // string to hold the time
boolean readingTime = false;       // if you're currently reading the time

void setup() {
  // reserve space for the strings:
  currentLine.reserve(256);
  time.reserve(150);
  
  // Start Serial Port
  Serial.begin(9600);
  Serial.println("Setup...");
  // Start Ethernet
  Ethernet.begin(mac, ip);

  // connect to Time Server:
  connectToServer();
}



void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();

      // add incoming byte to end of line:
      currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }
      // if the current line ends with <localtime>, it will
      // be followed by the time:
      if ( currentLine.endsWith("<localtime>")) {
        // time is beginning. Clear the time string:
        readingTime= true;
        time = "";
      }
      // if you're currently reading the bytes of the time,
      // add them to the time String:
      if (readingTime) {
        if (inChar != '<') {
          time += inChar;
        }
        else {
          // if you got a "<" character,
          // you've reached the end of the time:
          readingTime = false;
          Serial.println(time);  
          // close the connection to the server:
          client.stop();
        }
      }
    }  
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  //if (client.connect(serverName, 80)) {
  if (client.connect(server, 80)) {  
    Serial.println("making HTTP request...");
    // make HTTP GET request to server:
    client.println("GET /feed/tz.ashx?key=(yourkey_here)&q=london&format=xml");
    client.println("HOST: www.worldweatheronline.com");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}  
35  Using Arduino / Programming Questions / Re: XML fetching question: Ethernet Shield on: September 12, 2012, 09:35:18 am
The easiest way to read XML data is to use the TextFinder Library
http://www.arduino.cc/playground/Code/TextFinder

See my example of fetching XML data from Yahoo Weather API
http://arduino.cc/forum/index.php/topic,121992.msg920175.html#msg920175
36  Using Arduino / Programming Questions / Re: Extract data from weather service? on: September 12, 2012, 04:56:48 am
Reading data from Yahoo Weather API, see my post

http://arduino.cc/forum/index.php/topic,121992.msg920175.html#msg920175
37  Using Arduino / Project Guidance / Re: Weather LCD display via XML on: September 11, 2012, 01:59:53 am
To read the XML from Yahoo Weather API you can use the TextFinder library.

Before you read the weather data you need to get the ID (woeid) from your city.

Example: Zurich/Switzerland
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Schweiz%20Z%C3%BCrich%22&format=xml

You will find the ID in the field <woeid>

Code to read the Yahoo Weather API

Code:
//
// Read Yahoo Weather API XML
// 03.09.2012
// http://arduino-praxis.ch


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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD };
byte ip[] = { 10, 0, 1, 101 };
byte gateway[] = { 10, 0, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };

// Server Yahoo
IPAddress server(87,248,122,181);

EthernetClient client;
TextFinder  finder( client ); 

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


void setup()
{
  // Start Ehternet
  Ethernet.begin(mac, ip);
  // Start Serial Port
  Serial.begin(9600);
  Serial.println("Setup...");
}


void loop()
{
  if (client.connect(server, 80))
  {
    // Call Wetter-API
    // w: ID from your City
    // http://weather.yahooapis.com/forecastrss?w=12893459&u=c
    ///
    Serial.println("Connect to Yahoo Weather...");
    client.println("GET /forecastrss?w=12893459&u=c HTTP/1.0");
    client.println("HOST:weather.yahooapis.com\n\n");
    client.println();
    Serial.println("Connected...");
  }
  else
  {
    Serial.println(" connection failed");
  }
 

  if (client.connected())
  {
   
    // Humidity
   if ( (finder.getString("<yweather:atmosphere humidity=\"", "\"",hum,4)!=0) )
   {
     Serial.print("Humidity:  ");
     Serial.println(hum);
   }
   else
   {
     Serial.print("No Humidity Data");
   }
   
   
    // Place/City
    if ( (finder.getString("<title>Conditions for ", " ",place,50)!=0) )
    {
      Serial.print("City:  ");
      Serial.println(place);
    }
   
   
    // Temperature
    if(finder.find("temp=") )
    {
     int temperature = finder.getValue();
     Serial.print("Temp C:  ");
     Serial.println(temperature);
   }
   else
   {
     Serial.print("No Temperature Data");
   }
   
         
  // END XML
  }
  else
  {
    Serial.println("Disconnected");
  }
 
  client.stop();
  client.flush();
  delay(60000);
}


38  Using Arduino / Project Guidance / Re: Weather LCD display via XML on: September 08, 2012, 10:04:18 am
You can use the Yahoo Weather API. I implemented a project in my book.
See my blog post regarding the stop of Google Weather
http://arduino-praxis.ch/2012/08/google-stoppt-weather-api/

I will post the code soon.
39  International / Deutsch / Re: Gutes Buch für den Einstieg on: August 05, 2012, 03:52:59 am
@Yeahuno

Das Arduino Cookbook gibts auch in deutsch als Arduino Kochbuch.
40  International / Deutsch / Re: Client/Server problem on: August 04, 2012, 09:27:00 am
Wie und wo wird "clientOnline" deklariert?

Die Fehlermeldung wird ausgegeben auch wenn die Verbindung funktioniert hat da kein else-Zweig vorhanden ist. Die Ausgabe erfolgt jeweils nach der  if (client.connect(server, 9002))-Abfrage.
Tip: zum Testen in jedem if-Zweig eine eindeutige Ausgabe auf die serielle Schnittstelle senden um den Programmcode zu prüfen.

Code:
if(!client.connect(server, 9002))
    {
      Ethernet.begin(mac, ip);// start the Ethernet connection
      delay(1000); // give the Ethernet shield a second to initialize
      Serial.println("connecting...");
    }

    // if you get a connection, report back via serial:
    if (client.connect(server, 9002)) {
      Serial.println("connected");
      client.println("GET /status?p0=playlist&p1=resume&p2="+playlist+"&" + player[2] + "HTTP/1.1");
      client.println();
      clientOnline=true;

    }

   // hier sollte der else-Fall ausgegeben werden

    // if you didn't get a connection to the server:
    Serial.println("connection failed");
41  International / Deutsch / Re: Gutes Buch für den Einstieg on: August 04, 2012, 07:43:26 am
Quote
habe auch schon ein paar Bücher für den Arduino gelesen, aber ich brauche kein Buch, das mir auf den ersten 10 Kapiteln erstmal die Grundlagen der Elektronik erklärt!  smiley-roll
Meine Worte  smiley-wink

Quote
Wer sich mit mit der Programmierung von Mikroprozessoren beschäftigen will, sollte schon einen Kondensator von einen Widerstand unterscheiden können!
Erleichtert die Realisierung einer Anwendung ungemein.
In der Praxis sind diese Grundlagen aber nicht immer vorhanden. Darum haben die meisten Bücher einzelne Kapitel mit Grundlagen der Elektrotechnik.

Das erwähnte Buch von Erik Bartmann eignet sich auch sehr gut für den Einstieg, da es von ganz vorne anfängt. Für Leute mit Grundkenntnissen wird aber auch hier viel Bekanntes wiederholt.

Wie bereits erwähnt, lernt ein erfahrener Anwender mehr mit den Beispielen im Netz.
MetaKnight möchte zwar eine Arduino-Bibel oder Einführung in Arduino, will aber keine Grundlagenkapitel.

Ich denke mit den vorhandenen Büchern sollte eine Einarbeitung in Arduino für einen fortgeschrittenen Anwender möglich sein. Die Grundlagenkapitel kann man ja überspringen  smiley-wink
42  International / Deutsch / Re: Gutes Buch für den Einstieg on: August 04, 2012, 04:12:44 am
Hallo zusammen,

ich bin der Autor des Buchtitels "Arduino Praxiseinstieg".
Gerne möchte ich mich für die Bucherwähnungen und Bemerkungen bedanken.

Erfahrungsgemäss sind Einsteigerbücher für Anwender mit Arduino-oder Mikrokontroller-Erfahrung meist zu wenig detailiert. Hier empfehle ich statt Büchern sein Wissen mit dem Studium und Aufbau von verfügbaren Arduino-Projekten zu erweitern. Meist sind dann die Interessen themenspezifisch und die Fachliteratur geht hier dann oft zu wenig tief in die gewünschte Thematik ein.

@MetaKnight
Vielleicht kann du genauer beschreiben welche Beispiele irreführend und nicht hilfreich sind. Sende mir doch einfach eine Message.
Für weiterführende Beispiele kann ich dir das Buch "Arduino Cookbook", mittlerweile auch in Deutsch verfügbar, empfehlen.
Welche Thematik interessiert dich den speziell? Vielleicht kann ich dir dazu einen Tipp geben.

Gruss
Thomas

43  Using Arduino / Sensors / Re: Reading Oregon OS V3 sensors on: July 14, 2012, 12:16:29 pm
Hello

Brian from Lostbyte.net just informed me that he finally put up his website.
The earlier mentioned Sketch is now available again. You can download it from:

http://www.lostbyte.com/wp-content/uploads/2010/04/osv3_decode.zip

I tested the sketch and was able to read the sensor data from my outside weather sensors.
44  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 04:04:56 am
Quote
Gibt es eigenlich die Möglichkeit, im "LOGFORMAT" das Datum und die Uhrzeit getrennt auszulesen

Dann machst du eigene Formate für Uhr und Datum, basierend auf dem Beispiel

Code:
const char LOGFORMATDATE[] = "%02u.%02u.%04u";
const char LOGFORMATTIME[] = "%02u:%02u:%02u";

Und bei der Ausgabe einfach nur die nötigen Werte übergeben, also

Code:
static char dataStringDate[11];
sprintf(dataStringDate, LOGFORMATDATE, now.day(), now.month(), now.year() );
static char dataStringTime[9];
sprintf(dataStringTime, LOGFORMATTIME, now.hour(),now.minute(),now.second() );



Update: mkl0815 war schneller
 
smiley-wink
45  International / Deutsch / Re: Brauche mal Hilfe bei Schaltung -> ganz einfach on: June 20, 2012, 01:18:31 am
Ich würde in diesem Fall alle Bauteile und Verbindungen entfernen und dann nochmals neu aufbauen.

Viel Erfolg

PS:
vielleicht kannst du auch ein Foto von deinem Steckbrett publizieren. Die Bilder mit der Fritzing-Schaltung scheinen nämlich ok zu sein. Es kann also nur an deinem Aufbau liegen.
Pages: 1 2 [3] 4 5 ... 47