@@ -667,7 +667,7 @@ def timer_active_check(cls, time_spec, now, startup_time):
667667 results ["+" ].append (this_match )
668668
669669 # 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 ["-" ])
671671
672672 return result
673673
@@ -927,6 +927,9 @@ async def trigger_watch(self):
927927 state_trig_timeout = False
928928 notify_info = None
929929 notify_type = None
930+ now = dt_now ()
931+ if startup_time is None :
932+ startup_time = now
930933 if self .run_on_startup :
931934 #
932935 # first time only - skip waiting for other triggers
@@ -947,9 +950,6 @@ async def trigger_watch(self):
947950 check_state_expr_on_start = False
948951 else :
949952 if self .time_trigger :
950- now = dt_now ()
951- if startup_time is None :
952- startup_time = now
953953 time_next = TrigTime .timer_trigger_next (self .time_trigger , now , startup_time )
954954 _LOGGER .debug (
955955 "trigger %s time_next = %s, now = %s" , self .name , time_next , now ,
@@ -969,15 +969,19 @@ async def trigger_watch(self):
969969 self .notify_q .get (), timeout = timeout
970970 )
971971 state_trig_timeout = False
972+ now = dt_now ()
972973 except asyncio .TimeoutError :
974+ now += dt .timedelta (seconds = timeout )
973975 if not state_trig_timeout :
976+ notify_type = "time"
974977 notify_info = {
975978 "trigger_type" : "time" ,
976979 "trigger_time" : time_next ,
977980 }
978981 elif self .have_trigger :
979982 _LOGGER .debug ("trigger %s waiting for state change or event" , self .name )
980983 notify_type , notify_info = await self .notify_q .get ()
984+ now = dt_now ()
981985 else :
982986 _LOGGER .debug ("trigger %s finished" , self .name )
983987 return
@@ -1094,10 +1098,6 @@ async def trigger_watch(self):
10941098 self .active_expr .get_logger ().error (exc )
10951099 trig_ok = False
10961100 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
11011101 trig_ok = TrigTime .timer_active_check (self .time_active , now , startup_time )
11021102
11031103 if not trig_ok :
0 commit comments