10.1 Kombiniert die Übung 6.4 Wenn sich jemand nähert, Lauflicht einschalten mit dem Yahoo Weather Dienst, dass bei Unterwarnungen das Lauflicht eingeschaltet wird.

Dependencies:   EthernetInterface mbed-rtos mbed spxml

Fork of YahooWeather by smd.iotkit2.ch

Committer:
stefan1691
Date:
Wed May 27 15:17:54 2015 +0000
Revision:
5:f81113cbe930
Parent:
3:aad64a4b6ff6
Child:
6:735d5412de0d
Beispiel Abfrage Yahoo Weather fuer Zuerich

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 5:f81113cbe930 1 /** Beispiel Abfrage Yahoo Weather fuer Zuerich
marcel1691 1:2e29a33cd918 2 */
WiredHome 0:fb5060c39dd1 3 #include "mbed.h"
WiredHome 0:fb5060c39dd1 4 #include "HTTPClient.h"
marcel1691 1:2e29a33cd918 5 #include "HTTPText.h"
WiredHome 0:fb5060c39dd1 6 #include "EthernetInterface.h"
stefan1691 5:f81113cbe930 7 #include "spdomparser.hpp"
stefan1691 5:f81113cbe930 8 #include "spxmlnode.hpp"
stefan1691 5:f81113cbe930 9 #include "spxmlhandle.hpp"
WiredHome 0:fb5060c39dd1 10
WiredHome 0:fb5060c39dd1 11 EthernetInterface eth;
stefan1691 3:aad64a4b6ff6 12 // HTTPClient Hilfsklasse
WiredHome 0:fb5060c39dd1 13 HTTPClient http;
stefan1691 3:aad64a4b6ff6 14 // I/O Buffer
marcel1691 1:2e29a33cd918 15 char message[6000];
WiredHome 0:fb5060c39dd1 16
WiredHome 0:fb5060c39dd1 17 DigitalOut myled(LED1);
WiredHome 0:fb5060c39dd1 18
marcel1691 1:2e29a33cd918 19 int main()
marcel1691 1:2e29a33cd918 20 {
stefan1691 5:f81113cbe930 21 printf("\tYahoo Weather\n");
WiredHome 0:fb5060c39dd1 22 eth.init();
WiredHome 0:fb5060c39dd1 23 eth.connect();
WiredHome 0:fb5060c39dd1 24
marcel1691 1:2e29a33cd918 25 while(1)
marcel1691 1:2e29a33cd918 26 {
WiredHome 0:fb5060c39dd1 27 myled = 1;
stefan1691 5:f81113cbe930 28 // Yahoo Weather fuer Zuerich
stefan1691 5:f81113cbe930 29 int ret = http.get("http://weather.yahooapis.com/forecastrss?w=784794&u=c", message, sizeof(message));
marcel1691 1:2e29a33cd918 30 if ( !ret )
marcel1691 1:2e29a33cd918 31 {
stefan1691 5:f81113cbe930 32 // XML Parser
stefan1691 5:f81113cbe930 33 SP_XmlDomParser parser;
stefan1691 5:f81113cbe930 34 // char[] bzw. XML parsen
stefan1691 5:f81113cbe930 35 parser.append( message, strlen( message ) );
stefan1691 5:f81113cbe930 36 SP_XmlHandle rootHandle( parser.getDocument()->getRootElement() );
stefan1691 5:f81113cbe930 37 SP_XmlElementNode * node = rootHandle.getChild( "channel" ).toElement();
stefan1691 5:f81113cbe930 38
stefan1691 5:f81113cbe930 39 SP_XmlHandle handle(node);
stefan1691 5:f81113cbe930 40 SP_XmlElementNode * condition = handle.getChild( "item" ).getChild("yweather:condition").toElement();
stefan1691 5:f81113cbe930 41 // Allgemeine Lage, Sonnig, Bewoelkt etc.
stefan1691 5:f81113cbe930 42 printf( "%s, ", condition->getAttrValue("text") );
stefan1691 5:f81113cbe930 43 // Temperatur in Celsius
stefan1691 5:f81113cbe930 44 printf( "%sC, ", condition->getAttrValue("temp") );
stefan1691 5:f81113cbe930 45 // Datum und Zeit letzte Aktualisierung
stefan1691 5:f81113cbe930 46 printf( "%s\n", condition->getAttrValue("date") );
stefan1691 5:f81113cbe930 47 }
marcel1691 1:2e29a33cd918 48 else
marcel1691 1:2e29a33cd918 49 printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
stefan1691 5:f81113cbe930 50
WiredHome 0:fb5060c39dd1 51 myled = 0;
marcel1691 1:2e29a33cd918 52
WiredHome 0:fb5060c39dd1 53 wait(10);
WiredHome 0:fb5060c39dd1 54 }
stefan1691 5:f81113cbe930 55 //eth.disconnect();
WiredHome 0:fb5060c39dd1 56 }