10.2 Kombiniert die Übung 9.3 Licht zeitgesteuert Ein- und Ausschalten mit dem Sunset Sunrise Dienst, damit bei Sonnenuntergang das Licht ein und bei Sonnenaufgang das Licht ausgeschaltet wird

Dependencies:   EthernetInterface MbedJSONValue NTPClient mbed-rtos mbed

Fork of SunriseSunset by smd.iotkit2.ch

Files at this revision

API Documentation at this revision

Comitter:
stefan1691
Date:
Wed May 27 17:47:29 2015 +0000
Parent:
5:cfe277d00d6b
Commit message:
10.2 Kombiniert die ?bung 9.3 Licht zeitgesteuert Ein- und Ausschalten mit dem Sunset Sunrise Dienst, ; damit bei Sonnenuntergang das Licht ein und bei Sonnenaufgang das Licht ausgeschaltet wird

Changed in this revision

NTPClient.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NTPClient.lib	Wed May 27 17:47:29 2015 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/donatien/code/NTPClient/#881559865a93
--- a/main.cpp	Wed May 27 16:08:21 2015 +0000
+++ b/main.cpp	Wed May 27 17:47:29 2015 +0000
@@ -1,4 +1,5 @@
-/** Beispiel Abfrage Cloud Dienst Sunrise / Sunset
+/** 10.2 Kombiniert die Übung 9.3 Licht zeitgesteuert Ein- und Ausschalten mit dem Sunset Sunrise Dienst, 
+    damit bei Sonnenuntergang das Licht ein und bei Sonnenaufgang das Licht ausgeschaltet wird
  */
 #include "mbed.h"
 #include "HTTPClient.h"
@@ -6,20 +7,36 @@
 #include "EthernetInterface.h"
 #include "MbedJSONValue.h"
 #include <string>
+#include "NTPClient.h"
 
 EthernetInterface eth;
+NTPClient ntp;
 // HTTPClient Hilfsklasse
 HTTPClient http;
 // I/O Buffer
 char message[6000];
 
 DigitalOut myled(LED1);
+// Licht
+DigitalOut led( D10 );
 
 int main()
 {
-    printf("\tSunriseSunset Cloud Dienst\n");
+    printf("\tSunriseSunset Cloud Dienst - Licht ein-/ausschalten\n");
     eth.init();
     eth.connect();
+    
+    // Zeit vom Time Server holen
+    printf("Trying to update time...\r\n");
+    if (ntp.setTime("1.pool.ntp.org") == 0) 
+    {
+        printf("Set time successfully\r\n");
+        time_t ctTime;
+        ctTime = time(NULL);
+        printf("Time is set to (UTC): %s\r\n", ctime(&ctTime));
+    } 
+    else
+        printf("Error\r\n");
 
     while(1) 
     {
@@ -42,7 +59,18 @@
             sscanf( sunrise.c_str(), "%d:%d:%d AM", &rh, &rm, &rs );
             sscanf( sunset .c_str(), "%d:%d:%d PM", &sh, &sm, &ss );
             
-            printf( "Sonnenauf- %02d.%02d.%02d und untergang %02d.%02d.%02d\n", rh+2, rm, rs, sh+2+12, sm, ss );           
+            printf( "Sonnenauf- %02d.%02d.%02d und untergang %02d.%02d.%02d\n", rh+2, rm, rs, sh+2+12, sm, ss );
+            
+            // Aktuelle Zeit
+            time_t seconds = time(NULL);
+            struct tm * now = localtime( & seconds );
+            printf( "%d.%d.%d %2d:%2d:%2d\n", now->tm_mday, now->tm_mon + 1, now->tm_year + 1900, now->tm_hour, now->tm_min, now->tm_sec );             
+            
+            // Einfache Variante - nur Stunden abfragen
+            if  ( now->tm_hour < rh || now->tm_hour > (sh+12) )
+                led = 1;          
+            else
+                led = 0;
         }
         else
             printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());