@@ -230,7 +230,13 @@ async def wait_until(
230
230
__test_handshake__ = None ,
231
231
):
232
232
"""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
+ ):
234
240
if timeout is not None :
235
241
await asyncio .sleep (timeout )
236
242
return {"trigger_type" : "timeout" }
@@ -413,7 +419,12 @@ async def wait_until(
413
419
state_trig_timeout = True
414
420
time_next = now + dt .timedelta (seconds = this_timeout )
415
421
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
+ ):
417
428
_LOGGER .debug (
418
429
"trigger %s wait_until no next time - returning with none" ,
419
430
ast_ctx .name ,
@@ -860,6 +871,8 @@ def __init__(
860
871
self .mqtt_trigger_kwargs = trig_cfg .get ("mqtt_trigger" , {}).get ("kwargs" , {})
861
872
self .webhook_trigger = trig_cfg .get ("webhook_trigger" , {}).get ("args" , None )
862
873
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" })
863
876
self .state_active = trig_cfg .get ("state_active" , {}).get ("args" , None )
864
877
self .time_active = trig_cfg .get ("time_active" , {}).get ("args" , None )
865
878
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):
1049
1062
await Mqtt .notify_add (self .mqtt_trigger [0 ], self .notify_q )
1050
1063
if self .webhook_trigger is not None :
1051
1064
_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
+ )
1053
1068
1054
1069
last_trig_time = None
1055
1070
last_state_trig_time = None
@@ -1237,6 +1252,11 @@ async def trigger_watch(self):
1237
1252
user_kwargs = self .mqtt_trigger_kwargs .get ("kwargs" , {})
1238
1253
if self .mqtt_trig_expr :
1239
1254
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 )
1240
1260
1241
1261
else :
1242
1262
user_kwargs = self .time_trigger_kwargs .get ("kwargs" , {})
0 commit comments