Skip to content

Commit 4523e7a

Browse files
committed
add support for only_on_change in state_trigger
1 parent 8a64fd4 commit 4523e7a

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

custom_components/pyscript/eval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ async def do_service_call(func, ast_ctx, data):
455455
kwarg_check = {
456456
"task_unique": {"kill_me"},
457457
"time_active": {"hold_off"},
458-
"state_trigger": {"state_hold", "state_check_now"},
458+
"state_trigger": {"state_hold", "state_check_now", "only_on_change"},
459459
}
460460
for dec_name in trig_args:
461461
if dec_name not in kwarg_check and "kwargs" in trig_args[dec_name]:

custom_components/pyscript/trigger.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@ def __init__(
538538
self.state_trigger_kwargs = trig_cfg.get("state_trigger", {}).get("kwargs", {})
539539
self.state_hold_dur = self.state_trigger_kwargs.get("state_hold", None)
540540
self.state_check_now = self.state_trigger_kwargs.get("state_check_now", False)
541+
self.only_on_change = self.state_trigger_kwargs.get("only_on_change", True)
541542
self.time_trigger = trig_cfg.get("time_trigger", {}).get("args", None)
542543
self.event_trigger = trig_cfg.get("event_trigger", {}).get("args", None)
543544
self.state_active = trig_cfg.get("state_active", {}).get("args", None)
@@ -785,6 +786,12 @@ async def trigger_watch(self):
785786
else:
786787
func_args = notify_info
787788

789+
#
790+
# check if our value changed and if we want to trigger on non changes
791+
#
792+
if self.only_on_change and "change" in func_args and not func_args['change']:
793+
continue
794+
788795
#
789796
# now check the state and time active expressions
790797
#

0 commit comments

Comments
 (0)