@@ -667,7 +667,7 @@ def timer_active_check(cls, time_spec, now, startup_time):
667
667
results ["+" ].append (this_match )
668
668
669
669
# An empty spec, or only neg specs, is True
670
- result = any (results ["+" ]) if results ["+" ] else True and all (results ["-" ])
670
+ result = ( any (results ["+" ]) if results ["+" ] else True ) and all (results ["-" ])
671
671
672
672
return result
673
673
@@ -927,6 +927,9 @@ async def trigger_watch(self):
927
927
state_trig_timeout = False
928
928
notify_info = None
929
929
notify_type = None
930
+ now = dt_now ()
931
+ if startup_time is None :
932
+ startup_time = now
930
933
if self .run_on_startup :
931
934
#
932
935
# first time only - skip waiting for other triggers
@@ -947,9 +950,6 @@ async def trigger_watch(self):
947
950
check_state_expr_on_start = False
948
951
else :
949
952
if self .time_trigger :
950
- now = dt_now ()
951
- if startup_time is None :
952
- startup_time = now
953
953
time_next = TrigTime .timer_trigger_next (self .time_trigger , now , startup_time )
954
954
_LOGGER .debug (
955
955
"trigger %s time_next = %s, now = %s" , self .name , time_next , now ,
@@ -969,15 +969,19 @@ async def trigger_watch(self):
969
969
self .notify_q .get (), timeout = timeout
970
970
)
971
971
state_trig_timeout = False
972
+ now = dt_now ()
972
973
except asyncio .TimeoutError :
974
+ now += dt .timedelta (seconds = timeout )
973
975
if not state_trig_timeout :
976
+ notify_type = "time"
974
977
notify_info = {
975
978
"trigger_type" : "time" ,
976
979
"trigger_time" : time_next ,
977
980
}
978
981
elif self .have_trigger :
979
982
_LOGGER .debug ("trigger %s waiting for state change or event" , self .name )
980
983
notify_type , notify_info = await self .notify_q .get ()
984
+ now = dt_now ()
981
985
else :
982
986
_LOGGER .debug ("trigger %s finished" , self .name )
983
987
return
@@ -1094,10 +1098,6 @@ async def trigger_watch(self):
1094
1098
self .active_expr .get_logger ().error (exc )
1095
1099
trig_ok = False
1096
1100
if trig_ok and self .time_active :
1097
- if now is None :
1098
- now = dt_now ()
1099
- if startup_time is None :
1100
- startup_time = now
1101
1101
trig_ok = TrigTime .timer_active_check (self .time_active , now , startup_time )
1102
1102
1103
1103
if not trig_ok :
0 commit comments