Hi all,
I’ve been working on what should (and no doubt is) a very straight forward problem to solve, but due to me not really having a clue what I’m doing with NR I’m no doubt over complicating things. The problem I’m trying to solve is to simply turn off a light if it’s left on by accident.
The light is for our downstairs washroom and the switch is outside the door. I originally plumped for this and it worked, to a fashion but I quickly discovered from some screams that some people spend A LOOOOOOONG time in there.
So, I decided to insert some logic and a contact sensor in to the mix. With the help of @greenspace10 (I assume it’s one and the same person here) on Reddit I ended up with this:
But it turns out that people are weird and do all sorts of things. Like open the door then switch on the light. Switch on the light and do nothing at all. Go in there and spin around for 20 minutes, whilst singing show tunes. So, I’ve tried to account for everything and it seems to work. However, I am positive that there must be a better way to do this or a way to make the flow more efficient and so I come to you cool nerds to ask you to take a look and let me know how you would improve or change it please?
Due to character count, I’ve put the exported JSON on Pastebin:
Because I’ve done the same feature for the same reasons, let me give you my 2c.
If you want some fancy system disabling light as precisely as possible or even make the system turn lights on and off fully automatically you need a lot of sensors to cover all (corner) cases. btw counting on doors open/close events is pretty weak because it assumes doors are being closed everytime which must not be true
If your goal is just to make sure the light is not accidently left on for the the whole day then simple timer is enough. I went this way. we still use switches to turn light on and off, but in case we forget, HA do it on behalf of us after some arbitary time.
The time is set depending on room. lower floor toilet is set to 15mins (I figured out it’s too short for me but then I can turn it on again from mobile). Pantry and store room both are set to 5mins.
Ussually nobody spend more than this. If so, I programmed long push to disable the timer anyway.
The rest cases are too rare to spend resources on them. Long story short make it as simple as possible.
Yeah, I ended up reverting to just a timed duration and took your advice on the 15 minutes. The logic based on the contact sensor was…wrong. I’d still like to have it based on presence, but like you say it’s complex and needs multiple sensors.
Heh, your slightly overengineered automation reminds me of some of my own
I ended up doing a big sweep across all my HA automations a while ago and basically trashed everything that seems too complex with too many corner cases, replacing it either with simple and functional alternatives or just ditching it altogether. Bathroom lighting was part of that too. In the end I just asked myself if I really needed such precise timing and a complex state machine, just to turn off a few LED lights with an insignificant power consumption (and a very long lifespan). Did I really care that much if they were on for another 10 minutes or even half an hour longer ? Nah, I just wanted to avoid them being on all night if me or my GF forgot about them.
So I ended up just using a motion sensor and the lights turn off if there wasn’t any movement for 30 minutes. Simple and effective.
My first thought was to have a 5 minute timer coupled with a motion sensor, which would then loop to check for motion every minute. Stupidly, I thought that a contact sensor would be the easier and more accurate measure. I was wrong. Very, very wrong.
This is what i had in the past. Also I think your flow could be significantly simplified with a trigger node.
And agree unless you have a bunch of sensors lying around, not really worth the hassle.