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

main.cpp

Committer:
stefan1691
Date:
2015-05-27
Revision:
5:f81113cbe930
Parent:
3:aad64a4b6ff6
Child:
6:735d5412de0d

File content as of revision 5:f81113cbe930:

/** Beispiel Abfrage Yahoo Weather fuer Zuerich
 */
#include "mbed.h"
#include "HTTPClient.h"
#include "HTTPText.h"
#include "EthernetInterface.h"
#include "spdomparser.hpp"
#include "spxmlnode.hpp"
#include "spxmlhandle.hpp"

EthernetInterface eth;
// HTTPClient Hilfsklasse
HTTPClient http;
// I/O Buffer
char message[6000];

DigitalOut myled(LED1);

int main()
{
    printf("\tYahoo Weather\n");
    eth.init();
    eth.connect();

    while(1) 
    {
        myled = 1;
        // Yahoo Weather fuer Zuerich
        int ret = http.get("http://weather.yahooapis.com/forecastrss?w=784794&u=c", message, sizeof(message));
        if ( !ret ) 
        {
            // XML Parser
            SP_XmlDomParser parser;
            // char[] bzw. XML parsen
            parser.append( message, strlen( message ) );
            SP_XmlHandle rootHandle( parser.getDocument()->getRootElement() );
            SP_XmlElementNode * node = rootHandle.getChild( "channel" ).toElement();

            SP_XmlHandle handle(node);
            SP_XmlElementNode * condition = handle.getChild( "item" ).getChild("yweather:condition").toElement();
            // Allgemeine Lage, Sonnig, Bewoelkt etc.
            printf( "%s, ", condition->getAttrValue("text") );
            // Temperatur in Celsius
            printf( "%sC, ", condition->getAttrValue("temp") );
            // Datum und Zeit letzte Aktualisierung
            printf( "%s\n", condition->getAttrValue("date") );
        } 
        else
            printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());

        myled = 0;

        wait(10);
    }
    //eth.disconnect();
}