Hi,
I try to implement this Countdown Timer. Generaly it works, but I don’t know how to cancel it if the switch goes OFF before time expires.
import time
import personal.countdown_timer
reload (personal.countdown_timer)
from personal.countdown_timer import CountdownTimer
from core.log import log_traceback, logging, LOG_PREFIX
from datetime import datetime, timedelta
log = logging.getLogger("{}.TEST.countdown_timer".format(LOG_PREFIX))
from core.rules import rule
from core.triggers import when
func_called = False
def test():
global func_called
func_called = True
number = "alarmTime" // number Item for countdown
delay_item = "alarmDelay" // switch Item for starting countdown
@rule("Countdown timer", description="Start countdown for getting out")
@when("Item alarmDelay received update")
def countdown_timer(event):
if((items[delay_item]) == ON):
timer = CountdownTimer(log, (datetime.now() + timedelta(seconds=10)), test, number)
time.sleep(0.1)
# elif((items[delay_item]) == OFF):
# log.info("Cancel...")
# timer.cancel()
If I try to do else or elif timer.cancel, I got local variable ‘timer’ referenced before assignment error. As I am total noob in python, could you please show me some example how it should be implemented?