Home Automation - Bathroom Extractor Fan

I thought I would share another one of my convenience projects and my journey in getting there.

When we bought our property last year, the on-suite bathroom to our main bedroom was a mess, there was clearly a problem with moisture at some point, paint peeling off the ceiling and some mold.

I presumed it was an issue with the elderly coupe who lived there taking nice hot showers with the window and door closed. As there is no air brick in the room.

1 Bathroom renovation and 6 months later proved me wrong, having the window open seemed to not have evacuated enough moisture and there was some mold starting to creep in on the ceiling.

Queue the bathroom extractor fan project. Fitted the extractor and wired it to a wall switch, voila, problem solved, it took only 3 days for my wife to be annoyed at herself for forgetting to turn it on and having to get out “mid shower” and to my surprise the first time ever, she asked if I could automate something.

The entire home automation concept has always been my “thing” much to her annoyance, she has admitted over the last year that some of the automation’s are “convenient”.

I digress.

The extractor was fitted to a sonoff mini, to keep the WAF factor up, just like every light in the house, there is a manual switch for the wife, and I use my phone. a d1 mini in the roof with a sonoff temperature and humidity sensor right above the shower, I was lazy and in a hurry, the sonoff sensor comes in a nice enclosure and i didnt need to have one 3D printed for a dht22.

The next step was to work out the automation process, having monitored the data in grafana for a whole day, I was set, or so I thought. Fan turned on once humidity exceeded 60% and ran for 15 mins.

Test day 1, proved me oh so wrong, I took my morning shower, and it worked great, fan turned on and off as expected. SWAMBO went for her shower, and boom, in the brown stuff I was, it didnt work, Humidity had not dropped low enough to trigger again. I asume this is due to the placement of my sensor, and it might die sooner than expected, ill deal with that if it happens.

Much to my surprise, whilest brainstorming the solution that afternoon, i heard the fan turn on, you guessed it, the room had become just humid enough to turn the fan on, without any water running.

I figured, that serves me to set a higher set point. so we moved it to 70.That evening, SWAMBO decided to take a bath, she was not impressed when the FAN ran for 15mins and there was “no steam” in the room. Running her bath had gotten the humidity to 72%

After a few days and seeing what other people online had done, the basic setup was, just turn it on at 95%. I do still run it for 2 mins at 70%, and 5 mins at 80% to ensure no moisture is hanging around in the room.

I was fairly happy with the result, untill the weekend approached, our routine differs, normally I get up and shower way before SWAMBO does, my automation worked great, as humidity had some time to come down before she sowers and the fan would turn on. She had a shower and I had one after, needless to say the fan turned off in the middle of my shower. the following day, a similar routine except I waited 15mins to go shower, sadly humidity had not recovered enough and I manually turned on the Fan.

Lots of searching and digging and scrubbing through the data my new automation’s behave quite well.
I had found the Trend sensor in Home assistant nad had a fair amount of trial and error with getting mine setup right.

My first issue I assume relates to placement of the sensor, humidity stays very high 99/100% (dependant on who took a shower) for quite some time, however the temperature drops fairly quickly.

Trend sensors

Shower occupancy based on Temperature
1 sensor if the temperature rises by more than 0.7 deg in 2 minutes
1 sensor if the temperature drops by more than 0.5 deg in 2 minutes

Temperature drops slower than it rises.

Shower occupancy based on Humidity
1 sensor if the humidity rises by more than 1% in 1 minute
1 sensor if the humidity drops by more than 1% in 1 minute

My final list of automations

Humidity above 70% run for 2 minutes
Humidity above 80% run for 5 minutes
Humidity above 90% and temp/humidity trend is rising, just turn on
If temperature or humidity trend starts dropping turn fan off
If fan has been turned on for 15 min, turn it off (a max runtime)

For the curious at heart some scenarios and data.

I shower, it turns on shortly after ive gotten in, as the humidity reaches 70%, it continues running due to the other automation firing. As my shower routine differs from SWAMBO, no shaving nonsense, humidity generally never exceeds 96-98% the fan turns off shortly after im done drying off, as humidity drops by 1%

SWAMBO showers, it turns on as expected, regardless of the time between showers, temp or humidity spikes and turns on the fan. It reaches 100% humidity and stays there for a significant amount of time after her shower, temp starts dropping shortly after she has gotten dressed, and the fan turns off.

Sorry for the long rad if you’ve made it to the end.


I wanted to do this same modification to our extractor. For us the fan switches on with the light, so it’s always running when someone is taking a shower. The initial irritation (which we have gotten used to by now) is that it creates a bit of a draught which is unwelcome in winter.

I explained my plan. The wife said she doesn’t want another “wart” on the wall. I figured, fine… the draught bothers you more than it bothers me, and it saves me a heap of work. And so the automation was never done :slight_smile:

Nice one @C.Potgieter
I am planning a similar automation when I get some time and all the other projects that are higher on the list get done.

One question. Did you just add an extractor that pulls the humid air into your roof, or did you add a vent to the outside?

1 Like

I was going to design a aesthetically pleasing ceiling flush mount, similar to this

Part of my reasons for wanting to turn it off “quick enough” was the draft in the room after the shower.

Currently I vent into the roof only, will be looking at venting to outside with some ducting soon.

1 Like

Interesting and great use of the humidity and temperature. I trigger mine based on the geyser temp dropping and the bathroom light being on. Not perfect, as if wife is showering and I’m in the spare bathroom I also get the extractor on! Requires light in bathroom to be on but that’s really not a problem as we both shower in the evening. Use a double press of the bathroom light to block the fan if the wife wants to bath and not be bothered by the draught!

Fan runs until geyser temp rate of change slows or stops and then a little bit longer, along with some filtering. Ran a bunch of filters and graphed them for a week to see which gave me the best results in different scenarios.

I thought about using similar trends, however they would not suite my needs, I also have geyser temp available, but don’t need it turning on if were doing the dishes, I shower in the morning, if the sun is out, no need for the light, so that wont work, lastly, I can only imagine what SWAMBO would say if the extractor fan right above the loo ran every time she went for a visit and turned the light on. If I chose to automate it, temp and humidity was the only option, and then it became a lot more complex then I ever thought it could be.

The other alternative…

Hey Alexa! Turn off the darn fan, I’m freezing here!


Yeah, that makes a lot of sense - probably what I love about doing all the automation ourselves, is that we can tailor it to work the best for our own habits and situations!

That’s the one thing I am yet to tackle - google/Alexa voice control!

I wonder if they tested and found that a reasonably small percentage of wives are called “Alexa”… I, for example, know at least two Alexa’s who might take offence at your alternative. :stuck_out_tongue:

1 Like

SWAMBO would kill me, ive owned an echo dot for 3years, that was a gift, its the only “smart kakkie thing” that she refuses to let me use, but ill get there soon.

Well, you can change the wake word.

Now this isn’t much fun! Why spoil your excuse… Oh wait… You can always change it to your own wife’s name and claim that it just didn’t want to recognise your voice with any other name… :thinking:

If ever I get a device like that, I will change it to the wife’s name.

With a super sexy voice … and then set the “wife’s name” to ignore all the wife says. :laughing: :laughing:

I can be fairly certain my wife will find it amusing the first time. Then she will ask me what I paid for the joke, and then she will be angry at me wasting our money like that while I could’ve used it to buy myself new clothes (this is her current project, trying to get me to go buy clothes…).

1 Like

Hah! I know this is off-topic, but I too hate buying clothes. Actually it’s not the buying of the clothes. I love new clothes. What I hate is going to a shop, finding something I like and which the wife won’t hate, then going into a rickety change room and trying it on. That is the part I hate. It takes time and it involves decisions about style rather than functionality. The actual buying and wearing of new clothes is the easy part.

This is my situation as well. :smile:

This was one of the very first things I automated in my house! It already had an extractor fan in the bathroom, but also connected to the light switch.

Cue my frustration when the kids enter the bathroom, turns on the light and then hours later I hear the poor little fan extracting zero moisture in our cold and dry highveld bathroom.

So intially:

  • Sonoff on the extractor fan
  • Yeelight in place of the old bulb
  • Zigbee switch to turn on the light (single press) and overwrite the fan (long press), placed low enough so that the kids could now also reach the bathroom light
  • Xiaomi T&H sensor, prestik-ed above the shower.
  • Bonus: added a motion detector to turn on light automatically and off after 30 mins of no motion
  • Home Assistant to control it all.

I also eventually opted for the trend sensor – basically if the humidity increases more than a certain amount in a short space, turn on the fan. If it falls more than certain amount, turn off the fan. It sometimes oscilates a bit - turns off the fan, humidity increases again, turns on the fan, humidity decreases, turns off the fan etc. but the Xioami sensors do not update that fast, so it doesn’t bother too much (and happens seldom).

Disadvantage with the whole setup is the light switch needs to stay on. Visitors doesn’t understand home-automation, so they often turn off the whole thing.

So eventually installed a Sonoff Mini in the light switch and replaced the old toggle switch with a dimmer push-button. Added some rules to Tasmota on the Sonoff mini:

  1. Single press: toggle the yeelight
  2. Double press: toggle the fan
  3. Press-and-hold: toggle the built-in relay.


  • It works and looks close enough to a light switch that people get it
  • I can still control the fan
  • Sometimes the yeelights do act up, and thus a power-cycle is still possible with press-and-hold action.

@ebendl exactly why i have sonoff mini’s connected to every light switch, keeps WAF up, SWAMBO is happy, she has a manual feedback “switch” to use, any visitors, inlaws, house sitters can use the lights as lights, and I can automate them if I need be. Even the fan controller I made from a sonoff 4ch, has 2 wires connected to gpio that goes to a switch on the wall.

CBI dimmer switches are great, and I can swap the old switch face onto the button, so they are blank. Also helps to keep some of the OCD away, I can live with the switches always in the off position, but a light that is off and the switch in the “on” position bugs my mind sometimes.