So my bathrooms have “at least” the following:
I use the Zooz Muti for Humidity Sensors. I tried to use them for motion but the older models were too slow for real time motion on events. However, although I have not tried the new ones yet, I hear that motion on events are more responsive in the newer models. If so, then these are ideal for bathrooms as they give temp, lux, humidity and motion.
Occupany is really simple using a webCoRE Variable.
If motion changes to active
Door is closed
Then set variable to occupancy=true
Of course this could be as complex as you like…if motion stays active for x then set variable…If motion is active and door is open, wait x minutes, set variable…and so on…
Here’s an example of an old CoRE Humidity Piston that has worked flawlessly since the beginning which controls the two fans in my Master Bedroom.
Here’s one to control the fan and light in the toilet room. It gives an example of a more advanced but IMHO, simple approach to Bathroom Automation.
Like most things in HA, multiple devices work together to accomplish a particular task. The more devices you have, the more complex your HA “can” be.