I want to be able to toggle a light switch 3 times on and off to open my garage door. But, if I dont do the 3 times in under 20 seconds I want it to timeout so its not saving these for when I hit the 3 and opens my garage door at some odd time.
what switch is it? Zigbee? ZHA or z2m?
Use a wait_for_trigger with timeout set to true.
https://www.home-assistant.io/docs/scripts/#wait-for-trigger
Its a TP Link Kasa wifi switch
Thanks for this info. I tried it but it still seems to trigger randomly. I may be doing something else wrong. Not sure this is worth the trouble. Thanks though!!
Have you listened to events when you press the switch? does it send a different even when you click once and when you click 3 times? If it sends the same message, one way I can think of achieving this in YAML
Create a counter:
counter:
your_counter:
initial: 0
minimum: 0
maximum: 3
Then this automation should work. Never tried it and cannot test it though, be prepared to debug. Note restart mode.
- alias: 'YOUR AUTOMATION'
mode: restart
trigger:
- platform: YOUR SWITCH TRIGGER
action:
- service: counter.increment
entity_id: counter.YOUR_COUNTER
- choose:
- conditions:
- condition: state
entity_id: counter.YOUR_COUNTER
state: 3
sequence:
- service: counter.reset
entity_id: counter.YOUR_COUNTER
- service: OPEN YOUR GARAGE HERE
default:
- delay: '00:00:02' # I know you said 20 seconds but 2 seconds is more than enough for 3 clicks. Change it at will.
- service: counter.reset
entity_id: counter.YOUR_COUNTER
Hi, I believe you wanted to set initial and maximum, as with step 3 it actually will jump to 3 then 6 then 9 and so on for every increment action.
Hey Tom, I deleted and recreated the Automation and it seems to be working for the most part. Not sure what I had messed up but I appreciate your help! Thanks Again!!
Hey Obaldius,
I recreated the automation and it seems to be working well so far. Not sure what I had messed up in the original but had changed so many things trying to get it working so who knows. I did create a counter and will use your method if this automation doesn’t seem reliable. I appreciate your time helping with this!!!
I suggest using the history stats sensor.
Set it to:
state: "on"
type: count
start: {{ now().timestamp() -20 }}
end: {{ now() }}
This should give you the count of times the light has been on the last 20 seconds.
EDIT: I see now that “3 times on and off” has also been interpreted as on-off-on, where as I read it as on-off-on-off-on
you are totally right, thanks, I fixed it.