18 Relay * light,
int start_hour,
int start_min, uint64_t duration_sec)
20 start_hour_(start_hour),
21 start_min_(start_min),
22 light_duration_(duration_sec),
31 start.tm_hour = start_hour_;
32 start.tm_min = start_min_;
34 start_time_ = mktime(&start);
35 Serial.printf(
"Light start time: %ld\n", start_time_);
39 tm * time,
bool is_bright)
41 time_t epoch_time = mktime(time);
44 time->tm_wday != prev_wday_ ||
48 prev_wday_ = time->tm_wday;
52 epoch_time > start_time_ && epoch_time <= start_time_ + light_duration_ &&
55 Serial.println(
"Light on");
58 Serial.println(
"Light off");
void reset(tm *time)
reset start time to given time
void run(tm *time, bool is_bright)
Run this in a loop and pass the current time and a boolean indicating if its bright.
LightScheduler(Relay *light, int start_hour, int start_min, uint64_t duration_sec)
Construct a new Light Scheduler object.
virtual void set(Switch state)=0