🚿 Bathroom Humidity Exhaust Fan

I would suggests you start at +1 & -1. The best way to find your settings is to add your fan, humidity sensor and your derivative sensor into a dashboard. You will then be able to monitor your site. When you have a shower have a look at what happened and look at the first real increase to see what % that is. Below is a example and this is just normal humidity changes through the day in a 2 hour window.

below is a actual shower. The idea is to have the lowest % possible that will not give you a false trigger. Sensor position should also be considered (close to the steam).

I have a different blueprint for this called 'toilet exhaust fan with time delay"

Is this with this blueprint? as I haven’t had any false triggers to date. I have had false triggers when I tried different blueprints turning ON at night.

Thanks for the tips, I have done that now. I just started with your blueprint yesterday, so I am trying to avoid false triggers while getting it to work :wink: Previously, I had used the Generic Hygrostat integration and it was very unreliable.
Here is the graph from today showing the peaks for the shower around 9:00am, but there are also peaks of +1% and -1.5% so I think I will start at 2% and take it from there.

Screenshot 2023-01-01 171549

Yep that’s the way to do it :+1:

Success! The fan turned on just over a minute after the shower started, and it triggered the off delay about two minutes after it stopped.

1 Like

All good :smiley: :+1:

The Settings - FAQ

First you must set up a “Humidity Derivative Sensor”. On how to do this Click Here

Humidity Derivative Sensor

This is the sensor that will be used as the trigger.

Fan Switch

This is the fan you would like to turn ON. You can also include an input boolean. Input booleans are used to link my toilet exhaust fan blueprint with this blueprint.

Input - Fan Speed - Low Speed Switch

If you have a fan with different speeds, you will have the option to stage your fan before turning it OFF. This is where you would enter your low-speed entity. It will be used in your selection for summer and winter modes

Input - Fan Speed - Switch Off

If you have a fan with different speeds, this allows you to enter your OFF entity. It will be used in your selection for summer and winter modes.

Input - Bathroom Humidity Sensor (Optional)

Select your bathroom humidity sensor. This sensor, located in your bathroom, will be used as the reference if you choose ‘The Maximum Humidity Option’ in your selection for summer and winter modes.

Rising Humidity & Falling Humidity Settings

Once you have your ‘Humidity Derivative Sensor’ set up in Home Assistant (HA), the best way to find your settings is to add your exhaust fan, humidity sensor, and humidity derivative sensor to a dashboard. To do this:

  1. Go to a dashboard.
  2. In the top right corner, click the three dots and select ‘Edit dashboard.’
  3. Click ‘+ ADD CARD.’
  4. Select ‘History Graph.’
  5. In the entity field, add your exhaust fan, humidity sensor, and humidity derivative sensor entities.
  6. Set the time range to show ‘2’ hours (you can change this any time).
  7. Click ‘Save’ and ‘DONE.’

You will now see something like this.

The above image shows humidity changes throughout the day in a 2-hour window. You can see the ‘Humidity Derivative Sensor’ values fluctuating around +0.75 and -0.48. Your values might be higher, as it all depends on your specific site and the location of your sensor.

The image below illustrates the effects of taking showers, with data from two separate instances. In the first shower, the humidity level increases to around +10.0 and then decreases to approximately -7.0 after finishing. Similarly, in the second shower, the humidity rises to about +14.0 and then drops to around -7.5 afterward. If you hover your mouse over your graph in Home Assistant (HA), a pop-up window will display more accurate figures.

Now that we can observe what’s happening, we can adjust our settings accordingly. Looking at the Rising Humidity Derivative %:

  1. The first shower’s initial increase is just below +5.0, and the ending is just above -5.0.
  2. The second shower’s initial increase is around +7.0, and the ending is just above -5.0.

Note: These readings are with a working exhaust fan, so you may need to initially set it to +1.0 & -1.0 and then adjust and readjust your settings to achieve the desired results.

My sensor is positioned at the highest point right next to the fan inlet, resulting in high readings. Your readings might be lower, but the fundamental principle remains the same.

After monitoring my site for some time, I’ve observed that during summer mode, my readings never exceed +2.3 & -1.5, while in winter mode, they never exceed +1.0 & -0.8. With the sensor positioned high next to the fan, showering results in similar patterns to the graph above. It’s advisable to keep your settings as low as possible for faster reaction times, but we also want to avoid false triggers, especially at night.

In my setup, I’ve set the “Rising Humidity %” in summer (hot climate) to +3.2 and the “Falling Humidity %” to -3.1. In winter (cold climate), I’ve adjusted the “Rising Humidity %” to +1.8 and the “Falling Humidity %” to -1.2

Your settings will vary depending on factors such as your site, location, and climate. However, having the ability to monitor your settings will help you determine the optimal configuration for your specific situation.

If you experience false triggers turning ON the fan, consider adjusting your ‘Rising Humidity %’ or ‘Maximum Humidity’ settings if you’re using that option, as these are the triggers for activating the fan. You can analyze your trace lines to determine whether it was the ‘Rising Humidity %’ or the ‘Maximum Humidity’ that caused the activation, helping you pinpoint which setting to adjust.

Conversely, the ‘Falling Humidity %’ or the ‘Maximum Run Time Setting’ triggers the automation to initiate the ‘Time Delay.’ Monitor the system’s behavior and adjust the settings as necessary.

Time Delay

The ‘Time Delay’ setting is crucial, but its optimal duration can vary depending on factors such as the type of fan you have and the location of your humidity sensor. It’s essential to monitor this setting to ensure the fan adequately reduces humidity before turning off. As shown in the above image, the humidity tends to return to around the starting value after a shower, which can be particularly challenging during colder winter months. In such cases, additional measures like providing heat, opening a window, removing wet towels, or drying them may be necessary to reduce humidity levels effectively.

Start with a time delay of around 10 minutes and adjust as necessary based on your observations. For my setup, I have my ‘Time Delay’ set to 4.5 minutes in summer (hot climate) and 15 minutes in winter (cold climate).

Safe Guard - Maximum Run Time Setting

The Maximum Run Time Setting serves as a safeguard, ensuring the fan doesn’t run excessively, even during the longest showers. It shouldn’t be necessary if your settings are correct. I’ve set mine to 17 minutes for summer (hot climate) and 20 minutes for winter (cold climate).

Use The Maximum Humidity Option (Optional)

Sometimes, after a shower, the humidity can take longer to return to its normal level. This delay may result in a lower rising % when another shower is taken before the humidity has fully normalized, thus failing to trigger the automation. Enabling this option allows the fan to be activated when the humidity rises above the set value.

I’ve found this option particularly effective during busy periods with back-to-back showers. Remember, my sensor is directly on the fan inlet above the shower. For summer (hot climate), I’ve set mine to 85%, and for winter (cold climate), I’ve set mine to 87%.

NOTE: To enable this option, you must input your ‘Bathroom Humidity Sensor’ in ‘Input - Bathroom Humidity Sensor’. Your bathroom humidity sensor is the actual humidity sensor located in your bathroom.

Use The Winter Mode Option (Optional)

This option allows you to add another set of settings specifically for the winter months (colder months). The settings are the same as above, but you’ll need to select the months you want to apply the winter mode settings to. I’ve enabled this option for my setup.

Humidity Derivative Sensor By-pass

This will enable you to bypass the humidity derivative sensor and operate your fan as usual. Please note that the entity cannot be included in the ‘Fan Switch’, ‘Fan Speed - Low Speed Switch’, or ‘Fan Speed - Off Switch Option’ selections. Please see our FAQ on how to set this up without having a physical switch.

Use The Fan Speed Options

This applies if you have a fan with multiple speeds. You can choose the options you’d like to use.

Fan Speed - Low Speed Time Delay

This is an additional time delay to run the fan on low speed before turning it off. To use this feature, you must select the option to use the low-speed fan in ‘The Fan Speed Options,’ and you must enter your low fan speed in the 'Input - Fan Speed - Low Speed Switch.

Manual Fan Switch Option

This feature enables you to add a switch for manual control of the fan, allowing you to turn it on and off manually while still allowing the automation to take control when needed. This is particularly useful for removing any unwanted fumes from deodorant, hairspray, or the toilet. The auto-off time delay in option 2 ensures that you never forget to turn the fan off.

The switch can be:

  • Switch
  • Binary sensor
  • Input boolean

:warning: Please Note: The switch cannot be the actual fan switch and must be independent. Using the actual fan switch will prevent the automation from functioning properly.

Lights Options

This feature is useful for controlling different lights when taking a shower, especially if you have LED lights installed in a shower niche.

The Automation Link

This feature enables you to link your other automations, automatically disabling them when this automation is activated. It’s particularly useful if you’re using another blueprint to control the lights, switches, or scenes in your bathroom and want to deactivate it when this automation is on. This ensures that the bathroom lights remain on when you’re in the shower and the motion sensor is unable to detect motion.

For more information on the Automation Link Option Click Here

Safe Guard - HA Restart

If Home Assistant restarts for any reason, the automation will evaluate the conditions and try to preform the correct action.


Blacky :smiley:

Back to FAQ: Click Here

1 Like

Hello I’m trying to use your blueprint, so far seems the most well thought that I have found for humidity control. I plan to use it in a technical room where I have some electronic equipment (router, switches, etc) but which is also prone to increased level of humidity. I have purchased an Aqara temperature humidity sensor and an Aqara smart plug, I also already have a dehumidifier. So basically what I am trying o do is whenever humidity is rising above a certain procent the dehumidifier to start automatically, it’s on auto and plugged into the Aqara plug. I have created the derivative humidity sensor with the helper and also make the Aqara plug look like a fan switch but in the blueprint settings it says at the fan section that no matching device is found, I have attached the part of the blueprint with the troubling settings.

@ionutm80 Firstly welcome to the community :smiley:

This issue is a bug in the latest release of HA. If you go back to your backup then it will be resolved until HA fixes it but you will loose what you have done from your update to now.

Another way if you are keen then you can try this.

Find out your “entity ID” you would like to use. Go to, Settings / Devices & Services, click on top tab “Entities”. Find it there.

Open the blueprint, click on 3 dots top right, and “edit in YAML”. You should see something like this.

alias: Bathroom Humidity Exhaust Fan
description: ""
  path: Blackshome/bathroom-humidity-exhaust-fan.yaml

For “Fan Switch *” enter “input” and change your entity_id to your sensor.

alias: Bathroom Humidity Exhaust Fan
description: ""
  path: Blackshome/bathroom-humidity-exhaust-fan.yaml
        - switch.your_sensor_here

This is how my one looks like once everything is filled in.

alias: Bathroom Humidity Exhaust Fan
description: ""
  path: Blackshome/bathroom-humidity-exhaust-fan.yaml
    trigger: sensor.bathroom_humidity_derivative
      entity_id: switch.bathroom_exhaust_fan
    falling_humidity: -2
    rising_humidity: 2
    time_out: 25
    include_bypass: bypass_disabled
    time_delay: 3

Now click 3 dots top right and select “Edit in visual editor”

Hopefully you see your fan now :crossed_fingers:

Fill out the rest.

Not sure if it will work because I don’t know what HA did but be assured the blueprint works.

1 Like

Hi again, it worked, I could add my fan switch, now I have to fine tune the automation based on your guidance above. Thanks a lot for this blueprint and for the help provided!

Love it. If you have any other questions just ask. Your use case is interesting.

1 Like

Hi again,

I have set the derivative sensor with a time window of 3 minutes as per your FAQ above. Initially I have set the autommation based on your blueprint to -0.5 & 0.5 so it did not triggered when the first event that I was looking for happened: my wife put some clothes to dry in the technical room to take advantage of the heat inside at exactly 9.31 PM, I have attached 2 graphs with the evolution of the 2 sensors.

What would be the best settings for me to trigger specifically when these type of events occur? The derrivative jumps immediately at 9.31 PM but then drops also abruptly at 9.53 PM while the humidity remains high and above the 25% threshold that I would like to see constant within the technical room. Please help me, I’m a bit lost.
Thanks in advance and kind regards.

Hi, I have attached below the evolution up to this morning of the 2 senzors, derivative and actual humidity, as can be seen the derivative is decreasing very abruptly because it has a 3 minute moving average while the actual humidity is decreasing over a longer time period.The small period in which the dehumidifier worked is because I trigerred it manually to see whether the switch is working.

By the way the graphs are before updating this morning to 2023.1.2, after that the derivative senzors do not show anymore like line graphs but instead like history bar.

@ionutm80 I will PM you.

In regards to @ionutm80 set up. We have created an new blueprint called Temperature Control Exhaust Fan.

Hi Blacky, nice blueprint! I want to use this blue print for my Itho box. Therefore I do not want to use a fan switch, because my fan is still running on status ‘low’ (percentage of the full speed of the fan) . The status is created with a ‘preset mode’ entity with status ‘low’ and ‘high’. So, now I want to use the instead of the fan switch a status of the entity. Is that possible?

@skipper79 Can you show me your entity ID. I going to update the blueprint with a extra option probably tomorrow. Maybe I will include this in the update. If not I can show you how to do it.

Also what state does the entity have? example ON / OFF

@Blacky, thank you for all these awesome blueprints! I’m trying to make the switch from SmartThings webCoRE since it just got shutdown. Unfortunately, my bathroom setup requires some combination of your Toilet Exhaust Fan and Bathroom Humidity Exhaust Fan blueprints and I was wondering if you could recommend the best course of action.

In my bathroom, the same fan handles toilet exhaust and humid exhaust. Sometimes, I’m just using the toilet and want the fan to be turned on manually via the in-wall smart switch and turn off after some set amount of time (say 15 min). At other times, I’m using the shower and want the fan to turn on automatically when the humidity rises and turn off when it drops. If turned on manually before the humidity rise, I want it to stay on until the humidity drops. Do you think any of your blueprints can support this scenario? If not, do you recommend I try to tweak one of them and if so which one?

1 Like

Sure. The enitiy is of the type fan with the following attributes:

preset_modes: []
percentage: 100
percentage_step: 1
preset_mode: null
temp: 17.8
hum: 73.8
ppmw: 9416
Speed status: 23
Internal fault: 0
Frost cycle: 0
Filter dirty: 0
friendly_name: Itho fan
supported_features: 1

And with the following script I define the presets:

To create a 3 button interface (scripts.yml)

#-----Mechanical ventilation presets
  alias: MV preset low
  icon: mdi:fan-speed-1
    - service: fan.set_percentage
        entity_id: fan.itho_fan
        percentage: 33

  alias: MV preset medium
  icon: mdi:fan-speed-2
    - service: fan.set_percentage
        entity_id: fan.itho_fan
        percentage: 50

  alias: MV preset high
  icon: mdi:fan-speed-3
    - service: fan.set_percentage
        entity_id: fan.itho_fan
        percentage: 100

So, with this I defined a button, for ‘High’, on my lovelace as follows:

  - entity: fan.itho_fan
      action: call-service
      service: script.mv_preset_high
    icon: mdi:fan-speed-3

Try using two blueprints “Timer Relay - Run ON Timer and Bathroom Humidity Exhaust Fan” and select the same fan. Putting it all into one blueprint can be tricky. Both of the blueprints are mine and its why I have a few.

Us this blueprint Timer Relay - Run ON Timer

Use this blueprint Bathroom Humidity Exhaust Fan

Hope this helps you

Blacky :grinning:

1 Like