I have 2 parameters in DB: start and stop. value for them can be eg 07:00-23:00 or 23:00-07:00 (start after 07, stop after 23 or start after 23, stop after 07)
In t
UPDATE: Based on your update
This looks better, the only thing I'm confused about is your if datetime.now() < endTrig conditional.
Correct me if I'm still misunderstanding you, but your current conditional looks like it reads:
if now() is before endTrigger:
- if status is 1, we are good, stay on
- if status is 0, turn on
- if status is anything else (but cant it only be 1 or 0?):
* if status is 1 ... (but wait, we already checked for this above!)
* if status is 0 ... (ditto, these two checks will never trigger)
* otherwise, force off
if now() is after endTime:
- some logging (shouldnt this be where we turn off?)
You mentioned status must be 0 or 1. Based on that I would expect your conditional to look something like:
.
. [start/end setup stuff]
.
# If we haven't reached end time yet
if datetime.now() < endTrig:
# If status is 1, we're already on
if curStatus == 1:
log('Already on')
# If status isn't 1, it must be 0 and we should turn on
else:
log('Turn on')
flipSwitchOn()
# If we have passed the end time
else:
# If we're on, time to turn off
if curStatus == 1:
log('Turning off')
flipSwitchOff()
# If its not 1 it must be 0, we're off, stay off
else:
log('Already off')