How to deal with flaky switches in Home Assistant
Sometimes your smart switch can't be replaced. Here's a trick to cope with it: repeat the action!
Here's a tip coming straight from Gunnar's question in the Home Assistant community forum:
Hi!
I try to switch on my boiler during the 4 cheapest hours with a smart plug. The smart plug seems to go to sleep, and often misses the turn-on message. Else the binary sensor for turning on seems to work. I will try to send the turn-on message a few times to the smart plug to make sure it wakes up and turns the boiler on. I have found a few examples of using repeat and repeat.index in the automation to do something similar, but I`m still not sure exactly how to do this. The code without repeat look like this:
- id: 'xxxxxxxxxxx'
alias: Bereder på
description: Slå på bereder innenfor de 4 billigste timer
trigger:
- platform: state
entity_id:
- binary_sensor.billigste_4_timer
from: 'off'
to: 'on'
condition: []
action:
- type: turn_on
device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
entity_id: switch.bereder_kjeller_socket_1
domain: switch
mode: single
The answer to Gunnar's question is that the action in his automation should be replaced with the following code:
action:
... some other stuff...
- repeat:
count: "16"
sequence:
- service: switch.turn_on
data: {}
target:
entity_id: switch.boilah
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
The code above would turn on the switch boilah
sixteen times, with a wait of 5 seconds in between.