yet another 18B20 Temperature sensor. variable number of sensors working in parasite mode, serial 16x2 display with diagnostic output and post to a rest web service

Dependencies:   EthernetInterface HTTPClient NTPClient mbed-rtos mbed

Committer:
wkinkeldei
Date:
Thu Jan 03 18:50:43 2013 +0000
Revision:
1:9e88b2508768
added switch sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wkinkeldei 1:9e88b2508768 1 #include "local_time.h"
wkinkeldei 1:9e88b2508768 2
wkinkeldei 1:9e88b2508768 3 LocalTime::LocalTime() {}
wkinkeldei 1:9e88b2508768 4
wkinkeldei 1:9e88b2508768 5 struct tm *LocalTime::tm() {
wkinkeldei 1:9e88b2508768 6 time_t seconds = time(NULL);
wkinkeldei 1:9e88b2508768 7
wkinkeldei 1:9e88b2508768 8 struct tm *t = localtime(&seconds);
wkinkeldei 1:9e88b2508768 9 if (seconds > last_sunday(t->tm_year, 3) && seconds < last_sunday(t->tm_year, 10)) {
wkinkeldei 1:9e88b2508768 10 seconds += 7200;
wkinkeldei 1:9e88b2508768 11 } else {
wkinkeldei 1:9e88b2508768 12 seconds += 3600;
wkinkeldei 1:9e88b2508768 13 }
wkinkeldei 1:9e88b2508768 14
wkinkeldei 1:9e88b2508768 15 return localtime(&seconds);
wkinkeldei 1:9e88b2508768 16 }
wkinkeldei 1:9e88b2508768 17
wkinkeldei 1:9e88b2508768 18 time_t LocalTime::last_sunday(int year, int month) {
wkinkeldei 1:9e88b2508768 19 struct tm t1;
wkinkeldei 1:9e88b2508768 20
wkinkeldei 1:9e88b2508768 21 t1.tm_sec = 0; t1.tm_min = 0; t1.tm_hour = month == 10 ? 3 : 2;
wkinkeldei 1:9e88b2508768 22 t1.tm_mday = 31; t1.tm_mon = month; t1.tm_year = year;
wkinkeldei 1:9e88b2508768 23
wkinkeldei 1:9e88b2508768 24 // convert to seconds since epoch
wkinkeldei 1:9e88b2508768 25 time_t seconds = mktime(&t1);
wkinkeldei 1:9e88b2508768 26
wkinkeldei 1:9e88b2508768 27 // convert back to tm because we need to know the week day
wkinkeldei 1:9e88b2508768 28 struct tm *t2 = localtime(&seconds);
wkinkeldei 1:9e88b2508768 29
wkinkeldei 1:9e88b2508768 30 // subtract weekday to get back last sunday of month requested
wkinkeldei 1:9e88b2508768 31 return seconds - 86400 * t2->tm_wday;
wkinkeldei 1:9e88b2508768 32 }