@@ -230,7 +230,13 @@ async def wait_until(
230230 __test_handshake__ = None ,
231231 ):
232232 """Wait for zero or more triggers, until an optional timeout."""
233- if state_trigger is None and time_trigger is None and event_trigger is None and mqtt_trigger is None and webhook_trigger is None :
233+ if (
234+ state_trigger is None
235+ and time_trigger is None
236+ and event_trigger is None
237+ and mqtt_trigger is None
238+ and webhook_trigger is None
239+ ):
234240 if timeout is not None :
235241 await asyncio .sleep (timeout )
236242 return {"trigger_type" : "timeout" }
@@ -413,7 +419,12 @@ async def wait_until(
413419 state_trig_timeout = True
414420 time_next = now + dt .timedelta (seconds = this_timeout )
415421 if this_timeout is None :
416- if state_trigger is None and event_trigger is None and mqtt_trigger is None and webhook_trigger is None :
422+ if (
423+ state_trigger is None
424+ and event_trigger is None
425+ and mqtt_trigger is None
426+ and webhook_trigger is None
427+ ):
417428 _LOGGER .debug (
418429 "trigger %s wait_until no next time - returning with none" ,
419430 ast_ctx .name ,
@@ -860,6 +871,8 @@ def __init__(
860871 self .mqtt_trigger_kwargs = trig_cfg .get ("mqtt_trigger" , {}).get ("kwargs" , {})
861872 self .webhook_trigger = trig_cfg .get ("webhook_trigger" , {}).get ("args" , None )
862873 self .webhook_trigger_kwargs = trig_cfg .get ("webhook_trigger" , {}).get ("kwargs" , {})
874+ self .webhook_local_only = self .webhook_trigger_kwargs .get ("local_only" , True )
875+ self .webhook_methods = self .webhook_trigger_kwargs .get ("methods" , {"POST" , "PUT" })
863876 self .state_active = trig_cfg .get ("state_active" , {}).get ("args" , None )
864877 self .time_active = trig_cfg .get ("time_active" , {}).get ("args" , None )
865878 self .time_active_hold_off = trig_cfg .get ("time_active" , {}).get ("kwargs" , {}).get ("hold_off" , None )
@@ -1049,7 +1062,9 @@ async def trigger_watch(self):
10491062 await Mqtt .notify_add (self .mqtt_trigger [0 ], self .notify_q )
10501063 if self .webhook_trigger is not None :
10511064 _LOGGER .debug ("trigger %s adding webhook_trigger %s" , self .name , self .webhook_trigger [0 ])
1052- Webhook .notify_add (self .webhook_trigger [0 ], self .notify_q )
1065+ Webhook .notify_add (
1066+ self .webhook_trigger [0 ], self .webhook_local_only , self .webhook_methods , self .notify_q
1067+ )
10531068
10541069 last_trig_time = None
10551070 last_state_trig_time = None
@@ -1237,6 +1252,11 @@ async def trigger_watch(self):
12371252 user_kwargs = self .mqtt_trigger_kwargs .get ("kwargs" , {})
12381253 if self .mqtt_trig_expr :
12391254 trig_ok = await self .mqtt_trig_expr .eval (notify_info )
1255+ elif notify_type == "webhook" :
1256+ func_args = notify_info
1257+ user_kwargs = self .webhook_trigger_kwargs .get ("kwargs" , {})
1258+ if self .webhook_trig_expr :
1259+ trig_ok = await self .webhook_trig_expr .eval (notify_info )
12401260
12411261 else :
12421262 user_kwargs = self .time_trigger_kwargs .get ("kwargs" , {})
0 commit comments