Beispiel Abfrage Cloud Dienst Sunrise / Sunset

Dependencies:   EthernetInterface MbedJSONValue mbed-rtos mbed

Fork of HTTP_GET by smd.iotkit2.ch

Sunrise Sunset stellt ein API zur Verfügung, mittels dem die Sonnen Auf- und Untergangszeiten für einen bestimmten Ort abgefragt werden können.

Links

Beispiel: Abfrage für Zürich

http://api.sunrise-sunset.org/json?lat=47.3686498&lng=8.5391825

{"results":
   { "sunrise":"5:38:12 AM",
     "sunset":"5:31:12 PM",
     "solar_noon":"11:34:42 AM",
     "day_length":"11:53:00",
     "civil_twilight_begin":"5:07:47 AM",
     "civil_twilight_end":"6:01:38 PM",
     "nautical_twilight_begin":"4:32:04 AM",
     "nautical_twilight_end":"6:37:21 PM",
     "astronomical_twilight_begin":"3:55:32 AM",
     "astronomical_twilight_end":"7:13:52 PM"
   },
   "status":"OK"}

HTTPClient/data/HTTPFile.cpp

Committer:
stefan1691
Date:
2015-05-27
Revision:
5:cfe277d00d6b
Parent:
1:2e29a33cd918

File content as of revision 5:cfe277d00d6b:

#include "HTTPFile.h"

//#define DEBUG "HTfi"
#include <cstdio>
#if (defined(DEBUG) && !defined(TARGET_LPC11U24))
#define DBG(x, ...)  std::printf("[DBG %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
#define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
#define ERR(x, ...)  std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
#define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
#else
#define DBG(x, ...)
#define WARN(x, ...)
#define ERR(x, ...)
#define INFO(x, ...)
#endif

HTTPFile::HTTPFile(char* filename) {
    INFO("HTTPFile %s", filename);
    file = fopen(filename, "w");   
    m_chunked = false; 
}

void HTTPFile::close() {
    INFO("close()");
    if (file) {
        fclose(file);
        file = NULL;
    }        
}

void HTTPFile::writeReset() {
    INFO("writeReset()");
    if (file) {
        rewind(file);   
    }
}

int HTTPFile::write(const char* buf, size_t len) {
    size_t written;
    INFO("write(%d,%s) m_len(%d), chunk %d", len, buf, m_len, m_chunked);
    if (file) {
        written = fwrite(buf, 1, len, file);   
        INFO("  writ:%d, ftell: %d", written, ftell(file)); 
        if ((!m_chunked && (ftell(file) >= m_len)) || (m_chunked && !written)) {
            INFO("closing");
            close();
        }
    }
    return len;    
}

void HTTPFile::setDataType(const char* type) {
    INFO("setDataType(%s)", type);
}

//void HTTPFile::setLocation(const char * location) {
//
//}

void HTTPFile::setIsChunked(bool chunked) {
    INFO("setIsChunked(%d)", chunked);
    m_chunked = chunked;
}

void HTTPFile::setDataLen(size_t len) {
    INFO("setDataLen(%d)", len);
    m_len = len;
}