I’ve been investigating this issue in detail.
When my back door is normally closed, everything works fine — the MESH network finds its way to the outdoor sensors without problems.
However, when the back door stays open for a longer period (which happens more often now with the warmer weather), the MESH network starts to “optimize” itself, finding a lower-resistance path through the open door. But once the door is closed again, that newly formed path collapses, and it takes quite a while before the network re-stabilizes.
This behavior repeats itself every time.
And yes — the door really does block the signal. Even WiFi barely reaches the outside when the door is shut.
What I’d like to have is some kind of queue or retry mechanism.
Because what happens now is: I turn off the light when I go to bed, but the next morning the light is still on — the command was lost due to the temporary mesh failure.
What I’ve been experimenting with:
I’m playing around with checking service call events like this:
alias: Check lamp status after command
trigger:
- platform: event
event_type: call_service
event_data:
domain: light
service: turn_on
- platform: event
event_type: call_service
event_data:
domain: light
service: turn_off
When a light’s status is changed, this event (trigger.event.data) returns something like:
{'domain': 'light', 'service': 'turn_on', 'service_data': {'entity_id': 'light.tz3000skuggeg3ts0012'}}
So in theory, you could check if light.tz3000skuggeg3ts0012 is still OFF two minutes after the ON command, and if so, send the ON command again.
I just don’t know if there’s a cleaner way to access this — or whether Home Assistant splits commands like Bash or Python does. Or would I need to handle this in JavaScript?