![](/media/cache/group/ep_srxDLMd.webp.50x50_q85.jpg)
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
main.cpp@5:f81113cbe930, 2015-05-27 (annotated)
- 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?
User | Revision | Line number | New 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 | } |