Allows my home wiz lights to be timed on and off according to a schedule.
wiz/wiz-sun.c@0:9af80a39adcc, 2021-05-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |