I would like to turn on mood lighting automatically when I’m taking a shower, what’s the best way to detect that?
- I’ve considered humidity sensors, but that will take a while to kick in and not immediately when the shower starts.
- I’ve also considered a water leak sensor but those are not meant to be trigger every day for a long time like 10-15 minutes. That would kill the battery, right?
- Smart valves can kind of work, but it feels like overkill because I don’t care about the valve functionality.
I would prefer the solution to be battery powered (don’t want to be messing with too many cables around a shower), but I can’t seem to find one.
The right way is some sort of inline water flow sensor, so it’ll trigger within seconds of you turning on the shower to warm it up. With an esp32 and a sensor, and some clever use of the sleep function, it’d probably last a year or so on a couple of AA’s.
Low effort and price tech is probably better in a wet environment though! If you just want the mood lighting, get a wireless button and stick it somewhere near. Tap it on, tap it off!
If you want to feel that automatic magic, consider a cheap battery powered temperature sensor. If you fix the chassis to the shower head pipe it’d probably be accurate enough. Also, assuming you need to wait for your shower to heat up, you’d have a pretty good idea when your shower was hot too - when it triggers your automation for the lights!
Just make sure the sensor polls often enough or can be made to report on a significant temperature difference in a timely fashion. Something like this might do it: https://sonoff.tech/products/sonoff-zigbee-temperature-and-humidity-sensor-snzb-02p
Also avoid WiFi for buttons, connection and addressing takes ages and sicks for an instant response needed for something like lighting changes
I’m using just humidity and its working great. I put the sensor away from my sink so it isn’t triggered by washing my hands.
This will only consider you showering if humidity goes 9% above the 1hr average humidity:
You need a ‘Statistics’ Helper, call it “Average Bathroom Humidity” and base it on whatever humidity sensor you have. Make it “average linear” then set Max Age to 1 hour. (leave other options default)
Make this Template Binary Sensor called “Showering”:
{{ (states('sensor.bathroom_sensor_humidity')|float - states('sensor.average_bathroom_humidity')|float) > 9 }}Multiple waterproof 4k cameras pointed at the inside of your shower from every angle and image recognition by some AI that detects when a naked person enters.
Don’t forget to use Wifi and no firewall
You could use a classic dead man switch: Place several buttons around the whole place - basically everywhere except in the shower. Once you stop pressing any of these buttons for - let’s say - 30 seconds you can assume you’re taking a shower.
what if you go outside
Place some outside too
Couple ideas, depending on what you have:
- When the warm water pipe heats up
- when the water heater starts drawing more power
- when the water meter detects warm water usage in the evening
- when the sound volume goes up in the bathroom
- when the weight sensors go off under the shower (or around it as you get in)
- when a movement sensor detects movement in the shower
- when a magnetic door sensor sees the shower curtains open
- when you press a (waterproof) button in the shower
- when a weight sensor under the shampoo holder detects less weight
Made a flowchart for you:
< Do you feel wet? > | +-- yes --> < are you indoors? > | | | +-- yes --> < are you wearing pants? > | | | | | +-- yes --> [ you peed yourself ] | | | | | +-- no --> [ you're taking a shower ] | | | +-- no --> [ it's raining ] | +-- no --> [ you are not taking a shower ]



