Allows my home wiz lights to be timed on and off according to a schedule.

Dependents:   heating

Committer:
andrewboyson
Date:
Mon May 10 08:24:22 2021 +0000
Revision:
0:9af80a39adcc
Child:
4:65f000627fb0
New version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 0:9af80a39adcc 1 #include <time.h>
andrewboyson 0:9af80a39adcc 2
andrewboyson 0:9af80a39adcc 3 #include "clk.h"
andrewboyson 0:9af80a39adcc 4 #include "log.h"
andrewboyson 0:9af80a39adcc 5
andrewboyson 0:9af80a39adcc 6 // J F M A+1 M+1 J+1 J+1 A+1 S+1 O+1 N D
andrewboyson 0:9af80a39adcc 7 static uint16_t sunrises[] = { 8*60+46, 8*60+ 8, 7*60+ 3, 5*60+41, 4*60+25, 3*60+30, 3*60+26, 4*60+13, 5*60+15, 6*60+15, 7*60+20, 8*60+21 };
andrewboyson 0:9af80a39adcc 8 static uint16_t sunsets [] = { 15*60+45, 16*60+43, 17*60+45, 18*60+51, 19*60+53, 20*60+49, 21*60+ 4, 20*60+21, 19*60+ 6, 17*60+46, 16*60+29, 15*60+39 };
andrewboyson 0:9af80a39adcc 9
andrewboyson 0:9af80a39adcc 10 int WizSunSetMinutes ()
andrewboyson 0:9af80a39adcc 11 {
andrewboyson 0:9af80a39adcc 12 struct tm tmUtc;
andrewboyson 0:9af80a39adcc 13 ClkNowTmUtc (&tmUtc);
andrewboyson 0:9af80a39adcc 14
andrewboyson 0:9af80a39adcc 15 int start = sunsets[tmUtc.tm_mon];
andrewboyson 0:9af80a39adcc 16 int finish = tmUtc.tm_mon == 11 ? sunsets[0] : sunsets[tmUtc.tm_mon+1];
andrewboyson 0:9af80a39adcc 17 int extra = (finish - start) * (tmUtc.tm_mday-1) / 30;
andrewboyson 0:9af80a39adcc 18
andrewboyson 0:9af80a39adcc 19 return start + extra;
andrewboyson 0:9af80a39adcc 20 }
andrewboyson 0:9af80a39adcc 21 int WizSunRiseMinutes()
andrewboyson 0:9af80a39adcc 22 {
andrewboyson 0:9af80a39adcc 23 struct tm tmUtc;
andrewboyson 0:9af80a39adcc 24 ClkNowTmUtc (&tmUtc);
andrewboyson 0:9af80a39adcc 25
andrewboyson 0:9af80a39adcc 26 int start = sunrises[tmUtc.tm_mon];
andrewboyson 0:9af80a39adcc 27 int finish = tmUtc.tm_mon == 11 ? sunrises[0] : sunrises[tmUtc.tm_mon+1];
andrewboyson 0:9af80a39adcc 28 int extra = (finish - start) * (tmUtc.tm_mday-1) / 30;
andrewboyson 0:9af80a39adcc 29
andrewboyson 0:9af80a39adcc 30 return start + extra;
andrewboyson 0:9af80a39adcc 31 }