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"}
Revision:
1:2e29a33cd918
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient/data/HTTPFile.cpp	Sat Jan 17 14:11:01 2015 +0000
@@ -0,0 +1,68 @@
+#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;
+}