Files
haos_config/blueprints/automation/Blackshome/bathroom-humidity-exhaust-fan.yaml
2026-01-30 23:31:00 -06:00

4360 lines
189 KiB
YAML

blueprint:
name: Bathroom Humidity Exhaust Fan
description: "# \U0001F6BF Bathroom Humidity Exhaust Fan\n**Version: 2.6**\n\nStep
into the future of freshness - customize it your way and experience the convenience
of automated humidity control! \U0001F33F\U0001F6BF\n\n**If you like my blueprints,
and would like to show your support or just say thank you?** [Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8)
\U0001F642\n\n<details> <summary><b>The Automation Process:</b> \U0001F448</summary>\n\n
\ - **Auto Trigger:**\n - When the derivative percentage rises above a set
value, the fan turns ON\n - When the derivative percentage falls below a
set value, the automation waits for a time delay and then turns the fan OFF.\n
\ - Optional - Set a maximum humidity percentage to trigger the fan ON. This
is useful when having back-to-back showers.\n \n **Note:** You must
have a humidity sensor in the bathroom and set up a 'Derivative Helper' for this
automation to work.\n\n - **Manual Trigger Option:**\n - This feature allows
you to manually trigger the automation.\n\n - **Multi-Speed Fan Control Option:**\n
\ - You have the option to use fan speeds to control the staging of your fan.\n
\ - You can choose to stage your fan in your preferred configuration, such
as High/Off, High/Low, High/Low/Off, High/Med/Low, etc.\n\n - **Winter Mode Option:**\n
\ - You have the option to use 'Winter Mode.' This mode allows for different
settings to be applied, accommodating the typically higher humidity levels experienced
in winter compared to summer.\n\n - **Light Control Option:**\n - Use the
\"Light Control\" option to turn ON lights, adjusting brightness levels, colour
temperatures, and transition times.\n - This feature is commonly utilized
with LED lights in a shower niche.\n - For expanded lighting options, consider
integrating my \U0001F4A1[Sensor Light](https://community.home-assistant.io/t/481048)
blueprint, which utilizes the automation link feature.\n\n - **Manual Control
Option:**\n - Use a manual fan switch to toggle the fan ON/OFF.\n -
Opt to use the auto-OFF option for timer-like functionality.\n - This is
particularly useful for removing unwanted fumes from deodorant, hairspray, or
the toilet.\n\n - **Automation Link Option:**\n - This feature simplifies
the process of automatically disabling your other automations by providing an
automation linking mechanism.\n\n - **Bypass Functionality Option:**\n -
This allows you to bypass the automation, offering manual control and additional
customization capabilities.\n\n - **Safety Measures:**\n - Set a maximum
runtime safeguard for the fan to prevent continuous operation.\n - Benefit
from built-in safeguards to ensure smooth operation and reliability, even if Home
Assistant restarts.\n\n - **Blueprint Add-On Integration:**\n - Sensor Light:
Control your lights in the bathroom. [Click Here](https://community.home-assistant.io/t/509992/240)
to learn more.\n - Toilet Exhaust Fan: Integrate with a toilet in the bathroom.
[Click Here](https://community.home-assistant.io/t/509992/387) to learn more.\n</details>\n\nNeed
help?\n- FAQ: [Click Here](https://community.home-assistant.io/t/509992/2?u=blacky)\n-
Community Support Including Updates: [Click Here](https://community.home-assistant.io/t/509992)\n\nRequired
= *\n"
domain: automation
input:
trigger_settings:
name: Auto Triggers *
icon: mdi:cog-outline
description: ⚠️ To use an auto trigger, you need to configure a humidity derivative
sensor. *
collapsed: true
input:
trigger:
name: Trigger - Humidity Derivative Sensor *
description: 'Select your humidity derivative sensor. This is the main key
trigger for this automation. To ensure the auto trigger functions correctly,
you need to create a derivative helper and select it here.
For more information on how to set up a humidity derivative sensor [Click
Here](https://community.home-assistant.io/t/509992/3)'
default: []
selector:
entity:
filter:
- domain:
- sensor
reorder: false
multiple: false
bathroom_humidity_sensor:
name: Bathroom Humidity Sensor (Optional)
description: You will have the option to use 'The Maximum Humidity Option'
below in 'Default - Summer Mode' and in 'Winter Mode'. This will be the
reference humidity sensor used in both options if selected. However, you
will still need to create a humidity derivative sensor and enter it above
for this blueprint to work
default: []
selector:
entity:
filter:
- domain:
- sensor
reorder: false
multiple: false
manual_settings:
name: Manual Trigger
icon: mdi:gesture-tap-button
collapsed: true
input:
include_manual_trigger:
name: Use The Manual Trigger Option (Optional)
description: 'This feature allows you to manually trigger the automation.
It replaces the humidity derivative settings in either ''Default - Summer
Mode'' or ''Winter Mode,'' configurations. Turning it ON initiates the
automation process, and turning it OFF starts the time delay. Note that
auto triggers can and will override the manual trigger option if triggered.
If you choose option 1, the ''Safeguard - Maximum Run Time'' will be active
in ''Default - Summer Mode'' or ''Winter Mode'' and will turn OFF the
manual trigger if you forget to do so. Alternatively, option 2 allows
you to customize different auto OFF time delays for both ''Default - Summer
Mode'' and ''Winter Mode'' settings. If using the winter mode, ensure
it is enabled below in the ''Winter Mode'' section.
This feature can operate with or without a humidity sensor, which is particularly
useful if the humidity sensor malfunctions, allowing time for repairs
and reducing stress levels. Additionally, it can initiate the fan to turn
ON before a shower, aiding in humidity removal before the auto triggers
take over. It is designed with good spouse approval in mind.
For more information on this feature and its capabilities, [click here.](https://community.home-assistant.io/t/509992/483?u=blacky)'
default: disable_manual_trigger
selector:
select:
options:
- label: 1 - Enable manual trigger
value: enable_manual_trigger
- label: 2 - Enable manual trigger + auto off time delay
value: enable_manual_trigger_time_delay
- label: Disable manual trigger
value: disable_manual_trigger
sort: false
custom_value: false
multiple: false
manual_trigger:
name: Manual Trigger
description: 'Enter an entity that will manually trigger the automation.
**NOTE** - The Manual Trigger entity cannot be your actual Fan Switch
entity; it must be a completely different entity. Alternatively, if you
prefer to use the same Fan Switch entity for the Manual Trigger function,
you can create a trigger-based template binary sensor to ensure the automation
functions correctly.
To learn how to create a trigger-based template binary sensor [Click here](https://community.home-assistant.io/t/509992/496).'
default: []
selector:
entity:
multiple: true
filter:
- domain:
- switch
- binary_sensor
- input_boolean
reorder: false
manual_trigger_default_time_delay:
name: Default - Auto Off Time Delay
description: If you've selected option 2 in the 'Manual Trigger Option'
above, please set the auto OFF time delay. This will determine the time
delay used in 'Default - Summer Mode' to automatically turn OFF the manual
trigger after it has been turned ON.
default: 15
selector:
number:
min: 0.0
max: 40.0
step: 0.5
unit_of_measurement: minutes
mode: slider
manual_trigger_winter_time_delay:
name: Winter - Auto Off Time Delay
description: If you've selected option 2 in the 'Manual Trigger Option'
above, please set the auto OFF time delay. This will determine the time
delay used in 'Winter Mode' to automatically turn OFF the manual trigger
after it has been turned ON.
default: 15
selector:
number:
min: 0.0
max: 40.0
step: 0.5
unit_of_measurement: minutes
mode: slider
fan_settings:
name: Fan *
icon: mdi:fan
collapsed: true
input:
fan_switch:
name: Fan Switch *
description: 'Select the fan you would like to turn ON. Fans, switches,
scripts & input boolean are allowed. If you''d like to turn on lights,
please refer to the ''Lights'' section below.
**NOTE** - Only entities should be used, as devices will result in an
error log.
**Script** - If you are only selecting a script, it is recommended to
create a dummy toggle helper and then select it here to ensure the automation
functions correctly.
For more information if you are only selecting a script [Click Here](https://community.home-assistant.io/t/509992/239?u=blacky).'
default: []
selector:
target:
entity:
- domain:
- fan
- switch
- script
- input_boolean
fan_speed_low:
name: Fan Speed - Low Speed Switch (Optional)
description: 'You will have the option to use ''The Fan Speed Options''
below in ''Default - Summer Mode'' and ''Winter Mode''. This reference
entity will turn the fan ON to low speed in both options if selected.
Please DO NOT select the same entities that are chosen above in ''Fan
Switch'' or below in ''Fan Speed - Switch Off'', as the automation will
not work.
**NOTE** - If you are only selecting a script, it is recommended to create
a dummy toggle helper and then select it here to ensure the automation
functions correctly.
For more information if you are only selecting a script [Click Here](https://community.home-assistant.io/t/509992/239?u=blacky).'
default: []
selector:
entity:
multiple: true
filter:
- domain:
- fan
- switch
- script
- input_boolean
reorder: false
fan_speed_off:
name: Fan Speed - Switch Off (Optional)
description: 'You will have the option to use ''The Fan Speed Options''
below in ''Default - Summer Mode'' and ''Winter Mode''. This reference
entity will turn the fan OFF in both options if selected. Please DO NOT
select the same entities that are chosen above in ''Fan Switch'' or ''Fan
Speed - Low Speed Switch'', as the automation will not work.
**Note** - If you''d like the fan to run continuously at a low speed 24/7,
you can select that speed here.'
default: []
selector:
entity:
multiple: true
filter:
- domain:
- fan
- switch
- script
- input_boolean
reorder: false
default_settings:
name: Default - Summer Mode
icon: mdi:weather-sunny
collapsed: true
input:
rising_humidity:
name: Rising Humidity Derivative
description: Specify the percentage increase that the derivative sensor
must exceed to indicate a shower has started, thus activating the fan.
The derivative sensor percentage must transition from below to above this
setpoint to trigger the automation.
default: 1
selector:
number:
min: 0.0
max: 5.0
step: 0.1
unit_of_measurement: '%'
mode: slider
falling_humidity:
name: Falling Humidity Derivative
description: Specify the percentage decrease that the derivative sensor
must fall below to indicate the shower has completed, thus activating
the time delay. The derivative sensor percentage must transition from
above to below this setpoint to trigger the automation.
default: -1
selector:
number:
min: -5.0
max: 0.0
step: 0.1
unit_of_measurement: '%'
mode: slider
time_delay:
name: Time Delay
description: After the falling humidity derivative percentage has been achieved
or the set safeguard time has elapsed, this time delay will determine
how long the fan will run before turning OFF. Alternatively, if you've
selected option 1 in the 'Fan Speed Options' below, the fan will transition
to low speed after this time delay.
default: 10
selector:
number:
min: 0.0
max: 60.0
step: 0.5
unit_of_measurement: minutes
mode: slider
time_out:
name: Safeguard - Maximum Run Time
description: Specify the maximum run time for the safeguard. If the automation
turns the fan ON and the falling humidity derivative condition fails to
execute within this time frame, the safeguard will bypass the falling
humidity derivative condition and proceed to the time delay.
default: 20
selector:
number:
min: 5.0
max: 60.0
step: 0.5
unit_of_measurement: minutes
mode: slider
include_max_humidity:
name: Use The Maximum Humidity Option (Optional)
description: 'Sometimes after a shower, humidity levels may take longer
to return to normal. As a result, the humidity may not rise significantly
when taking another shower before returning to its normal level, thus
not triggering the automation. Enabling this option allows the fan to
be turned ON when the humidity rises above the set value, regardless of
the rate of increase in rising humidity derivative percentage.
**NOTE** - Please ensure that you input your ''Bathroom Humidity Sensor''
above in the ''Triggers'' section for this option to work correctly.'
default: maximum_humidity_disabled
selector:
select:
options:
- label: Enable the maximum humidity option
value: maximum_humidity_enabled
- label: Disable the maximum humidity option
value: maximum_humidity_disabled
sort: false
custom_value: false
multiple: false
max_humidity:
name: Maximum Humidity
description: If you have enabled the maximum humidity option above, please
set the maximum humidity percentage. When using this option, it's recommended
to set this value as high as possible to minimize false triggers.
default: 100
selector:
number:
min: 80.0
max: 100.0
step: 0.5
unit_of_measurement: '%'
mode: slider
include_fan_speed:
name: Use The Fan Speed Options (Optional)
description: 'If you''re using a multi-speed fan, you can choose one of
the following options to determine how the fan will be staged when turning
OFF.
**NOTE** - Please ensure that you input your ''Fan Speeds'' entities above
in the ''Fan'' section for this option to work properly.'
default: fan_speed_disabled
selector:
select:
options:
- label: 1 - Enable the fan speed - Switch to low speed then turn off
option
value: fan_low_speed_enabled
- label: 2 - Enable the fan speed - Turn off option
value: fan_speed_off_enabled
- label: Disable the fan speed options
value: fan_speed_disabled
sort: false
custom_value: false
multiple: false
time_delay_low_speed:
name: Fan Speed - Low Speed Time Delay
description: If you've selected option 1 in the 'Fan Speed Options' above,
please set the low speed time delay. This additional delay allows the
fan to run at low speed before turning OFF.
default: 5
selector:
number:
min: 0.0
max: 20.0
step: 0.5
unit_of_measurement: minutes
mode: slider
winter_settings:
name: Winter Mode
icon: mdi:snowflake
collapsed: true
input:
include_winter_mode:
name: Use The Winter Mode Option (Optional)
description: Enabling this option will automatically apply a 'Winter Mode'
to the months you select below, allowing you to apply different settings
for the colder months of the year.
default: winter_mode_disabled
selector:
select:
options:
- label: Enable winter mode option
value: winter_mode_enabled
- label: Disable winter mode option
value: winter_mode_disabled
sort: false
custom_value: false
multiple: false
month_winter_mode:
name: Months For Winter Mode
description: Choose the months during which you want the winter mode settings
to be applied.
default: []
selector:
select:
multiple: true
mode: list
options:
- label: January
value: '1'
- label: February
value: '2'
- label: March
value: '3'
- label: April
value: '4'
- label: May
value: '5'
- label: June
value: '6'
- label: July
value: '7'
- label: August
value: '8'
- label: September
value: '9'
- label: October
value: '10'
- label: November
value: '11'
- label: December
value: '12'
sort: false
custom_value: false
winter_rising_humidity:
name: Winter Rising Humidity Derivative
description: Specify the percentage increase that the derivative sensor
must exceed to indicate a shower has started, thus activating the fan.
The derivative sensor percentage must transition from below to above this
setpoint to trigger the automation.
default: 1
selector:
number:
min: 0.0
max: 5.0
step: 0.1
unit_of_measurement: '%'
mode: slider
winter_falling_humidity:
name: Winter Falling Humidity Derivative
description: Specify the percentage decrease that the derivative sensor
must fall below to indicate the shower has completed, thus activating
the time delay. The derivative sensor percentage must transition from
above to below this setpoint to trigger the automation.
default: -1
selector:
number:
min: -5.0
max: 0.0
step: 0.1
unit_of_measurement: '%'
mode: slider
winter_time_delay:
name: Winter Time Delay
description: After the falling humidity derivative percentage has been achieved
or the set safeguard time has elapsed, this time delay will determine
how long the fan will run before turning OFF. Alternatively, if you've
selected option 1 in the 'Fan Speed Options' below, the fan will transition
to low speed after this time delay.
default: 10
selector:
number:
min: 0.0
max: 20.0
step: 0.5
unit_of_measurement: minutes
mode: slider
winter_time_out:
name: Winter Safeguard - Maximum Run Time
description: Specify the maximum run time for the safeguard. If the automation
turns the fan ON and the falling humidity derivative condition fails to
execute within this time frame, the safeguard will bypass the falling
humidity derivative condition and proceed to the time delay.
default: 20
selector:
number:
min: 5.0
max: 60.0
step: 0.5
unit_of_measurement: minutes
mode: slider
winter_include_max_humidity:
name: Winter - Use The Maximum Humidity Option (Optional)
description: 'In colder months, after a shower, humidity levels may take
longer to return to normal. As a result, the humidity may not rise significantly
when taking another shower before returning to its normal level, thus
not triggering the automation. Enabling this option allows the fan to
be turned ON when the humidity rises above the set value, regardless of
the rate of increase in rising humidity derivative percentage.
**NOTE** - Please ensure that you input your ''Bathroom Humidity Sensor''
above in the ''Triggers'' section for this option to work correctly.'
default: maximum_humidity_disabled
selector:
select:
options:
- label: Enable the maximum humidity option
value: maximum_humidity_enabled
- label: Disable the maximum humidity option
value: maximum_humidity_disabled
sort: false
custom_value: false
multiple: false
winter_max_humidity:
name: Winter Maximum Humidity
description: If you have enabled the maximum humidity option above, please
set the maximum humidity percentage. When using this option, it's recommended
to set this value as high as possible to minimize false triggers.
default: 100
selector:
number:
min: 80.0
max: 100.0
step: 0.5
unit_of_measurement: '%'
mode: slider
winter_include_fan_speed:
name: Winter - Use The Fan Speed Options (Optional)
description: 'If you''re using a multi-speed fan, you can choose one of
the following options to determine how the fan will be staged when turning
OFF.
**NOTE** - Please ensure that you input your ''Fan Speeds'' entities above
in the ''Fan'' section for this option to work properly.'
default: fan_speed_disabled
selector:
select:
options:
- label: 1 - Enable the fan speed - Switch to low speed then turn off
option
value: fan_low_speed_enabled
- label: 2 - Enable the fan speed - Turn off option
value: fan_speed_off_enabled
- label: Disable the fan speed options
value: fan_speed_disabled
sort: false
custom_value: false
multiple: false
winter_time_delay_low_speed:
name: Winter Fan Speed - Low Speed Time Delay
description: If you've selected option 1 in the 'Fan Speed Options' above,
please set the low speed time delay. This additional delay allows the
fan to run at low speed before turning OFF.
default: 5
selector:
number:
min: 0.0
max: 20.0
step: 0.5
unit_of_measurement: minutes
mode: slider
lights_settings:
name: Lights
icon: mdi:lightbulb-on-outline
collapsed: true
input:
include_lights:
name: Use The Lights Options (Optional)
description: "This option is handy for activating various lights while showering,
especially if you have LED lights in a shower niche. If you're looking
to enhance your bathroom lighting further, check out my \U0001F4A1[Sensor
Light](https://community.home-assistant.io/t/481048) blueprint. When used
together, the automation link ensures the lights stay on while showering.
You can find the automation link section below."
default: lights_disabled
selector:
select:
options:
- label: Enable the lights options
value: lights_enabled
- label: Disable the lights options
value: lights_disabled
sort: false
custom_value: false
multiple: false
light_switch:
name: Lights
description: 'Select the lights that will be turned on by the trigger sensor.
**NOTE** - You can only use entities. Areas, devices and labels are not
supported.'
default: {}
selector:
target:
entity:
- domain:
- light
light_time_delay:
name: Lights - Time Delay
description: After the falling humidity derivative percentage has been achieved
or the set safeguard time has elapsed, this time delay will determine
how long the lights will remain ON before turning OFF.
default: 10
selector:
number:
min: 0.0
max: 40.0
step: 0.5
unit_of_measurement: minutes
mode: slider
include_light_control:
name: Use The Light Control Options (Optional)
description: Select any option you would like to use. It will only control
a 'light' entity that supports each option you select. The settings are
below for each option.
default: []
selector:
select:
multiple: true
options:
- label: Use brightness
value: use_brightness
- label: Use colour temperature
value: use_colour_temperature
- label: Use transition
value: use_transition
sort: false
custom_value: false
light_brightness:
name: Brightness
description: The brightness setting for the lights when they are turned
ON.
default: 100
selector:
number:
min: 1.0
max: 100.0
mode: slider
step: 1.0
unit_of_measurement: '%'
light_colour_temperature:
name: Colour Temperature
description: The colour temperature setting for the lights when they are
turned ON.
default: 5000
selector:
number:
min: 2000.0
max: 8000.0
mode: slider
step: 100.0
unit_of_measurement: kelvin
light_transition_on:
name: Transition - ON
description: The transition setting for the lights when they are turned
ON.
default: 1
selector:
number:
min: 0.0
max: 5.0
mode: slider
step: 0.5
unit_of_measurement: seconds
light_transition_off:
name: Transition - OFF
description: The transition setting for the lights when they are turned
OFF.
default: 1
selector:
number:
min: 0.0
max: 30.0
mode: slider
step: 1.0
unit_of_measurement: seconds
manual_switch_settings:
name: Manual Fan Switch
icon: mdi:toggle-switch-outline
collapsed: true
input:
include_manual_fan_switch:
name: Use The Manual Fan Switch Option (Optional)
description: This feature allows you to manually switch the fan ON and OFF
while still enabling the automation to take control when needed. It's
particularly useful for removing unwanted fumes from deodorant, hairspray,
or the toilet. Option 2's auto-off time delay ensures you never forget
to turn the fan OFF.
default: disable_manual_fan_switch
selector:
select:
options:
- label: 1 - Enable manual fan switch option
value: enable_manual_fan_switch
- label: 2 - Enable manual fan switch + auto off option
value: enable_manual_fan_switch_auto_off
- label: Disable manual fan switch
value: disable_manual_fan_switch
sort: false
custom_value: false
multiple: false
manual_fan_switch:
name: Manual Fan Switch
description: 'Enter a switch that will toggle the fan ON/OFF. When the switch
turns the fan OFF, it will also deactivate the automation link and any
lights, if the option is enabled.
**NOTE** - The Manual Fan Switch cannot be your actual Fan Switch entity;
it must be a completely different entity. Alternatively, if you prefer
to use the same Fan Switch entity for the Manual Fan Switch function,
you can create a trigger-based template binary sensor to ensure the automation
functions correctly.
To learn how to create a trigger-based template binary sensor [Click here](https://community.home-assistant.io/t/509992/496).'
default: []
selector:
entity:
multiple: true
filter:
- domain:
- switch
- binary_sensor
- input_boolean
reorder: false
manual_fan_switch_time_delay:
name: Manual Fan Switch Auto OFF - Time Delay
description: If you've enabled option 2 above, please set the auto OFF time
delay.
default: 10
selector:
number:
min: 0.0
max: 40.0
step: 0.5
unit_of_measurement: minutes
mode: slider
automation_link_settings:
name: Automation Link
icon: mdi:link-variant
collapsed: true
input:
include_automation_link:
name: Use The Automation Link Option (Optional)
description: "This feature simplifies the process of automatically disabling
your other automations by providing an automation linking mechanism. It's
particularly useful if you're using my \U0001F4A1[Sensor Light](https://community.home-assistant.io/t/481048)
blueprint in your bathroom and want to disable it when this automation
is ON. This ensures that your bathroom lights stay ON even when your motion
sensor is unable to detect motion while you're in the shower.\n\nFor more
information on how to set up the Automation Link Option [Click Here](https://community.home-assistant.io/t/509992/240?u=blacky)"
default: disable_automation_link
selector:
select:
options:
- label: Enable automation link
value: enable_automation_link
- label: Disable automation link
value: disable_automation_link
sort: false
custom_value: false
multiple: false
automation_link:
name: Automation Link - Bypass Control
description: 'Please enter the bypass entity of the other automations you
would like to turn ON, thereby disabling it when this automation is ON.
**Note** -Your other automations must include a bypass switch that you
enter here.'
default: []
selector:
entity:
multiple: true
filter:
- domain:
- input_boolean
reorder: false
automation_link_time_delay:
name: Automation Link - Time Delay
description: After the falling humidity derivative percentage has been achieved
or the set safeguard time has elapsed, this time delay will determine
how long the automation link entities will remain ON before turning OFF.
default: 10
selector:
number:
min: 0.0
max: 40.0
step: 0.5
unit_of_measurement: minutes
mode: slider
bypass_settings:
name: Bypass
icon: mdi:cog-pause-outline
collapsed: true
input:
include_bypass:
name: Use The Trigger Sensor Bypass Option (Optional)
description: 'All the bypass options will allow manual control of your fan.
Each option determines what should happen when you turn the bypass ON.
Choose the action that you would like to activate.
**Note** - If the lights or automation link options are enabled, they
will be included in the action.'
default: bypass_disabled
selector:
select:
options:
- label: 1 - Enable the bypass - Turn the fan, lights & automation link
ON
value: bypass_enabled_turn_on
- label: 2 - Enable the bypass - Turn the fan, lights & automation link
OFF
value: bypass_enabled
- label: 3 - Enable the bypass - Keep the current fan, lights & automation
link state
value: bypass_enabled_stop
- label: Disable the bypass option
value: bypass_disabled
sort: false
custom_value: false
multiple: false
by_pass:
name: Bypass Switch
description: 'Select a switch that will bypass the humidity derivative sensor
and enable manual control of your fan.
**Note** - Ensure that the chosen entity is not included in the ''Fan''
selection, as it will cause the automation to malfunction.'
default: []
selector:
entity:
reorder: false
multiple: false
bypass_options:
name: Bypass - Extra Option
description: Please indicate whether you would like to use this option.
default: []
selector:
select:
multiple: true
options:
- label: When you turn the bypass off - Turn the fan, lights & automation
link OFF and do not run the automation.
value: bypass_turn_fan_off
sort: false
custom_value: false
include_bypass_auto_off:
name: Use The Bypass Auto OFF Option (Optional)
description: Select this option if you want the bypass to automatically
turn OFF after a set time delay. It can also function as a timer to turn
the fan ON and then OFF if you've chosen option 1 'Enable the bypass -
Turn the fan, lights & automation link ON' above.
default: bypass_auto_off_disabled
selector:
select:
options:
- label: Enable the bypass auto off option
value: bypass_auto_off_enabled
- label: Disable the bypass auto off option
value: bypass_auto_off_disabled
sort: false
custom_value: false
multiple: false
bypass_auto_off_delay:
name: Bypass Auto OFF - Time Delay
description: Please set the auto OFF time delay for the bypass.
default: 60
selector:
number:
min: 1.0
max: 240.0
step: 1.0
unit_of_measurement: minutes
mode: slider
source_url: https://gist.github.com/Blackshome/8e09a8213b834f1be4ab49ba880abed8
mode: restart
max_exceeded: silent
variables:
trigger: !input trigger
bathroom_humidity_sensor: !input bathroom_humidity_sensor
include_manual_trigger: !input include_manual_trigger
manual_trigger: !input manual_trigger
manual_trigger_default_time_delay: !input manual_trigger_default_time_delay
manual_trigger_winter_time_delay: !input manual_trigger_winter_time_delay
fan_switch: !input fan_switch
fan_speed_low: !input fan_speed_low
fan_speed_off: !input fan_speed_off
rising_humidity: !input rising_humidity
falling_humidity: !input falling_humidity
time_delay: !input time_delay
time_out: !input time_out
include_max_humidity: !input include_max_humidity
max_humidity: !input max_humidity
include_fan_speed: !input include_fan_speed
time_delay_low_speed: !input time_delay_low_speed
include_winter_mode: !input include_winter_mode
month_winter_mode: !input month_winter_mode
winter_rising_humidity: !input winter_rising_humidity
winter_falling_humidity: !input winter_falling_humidity
winter_time_delay: !input winter_time_delay
winter_time_out: !input winter_time_out
winter_include_max_humidity: !input winter_include_max_humidity
winter_max_humidity: !input winter_max_humidity
winter_include_fan_speed: !input winter_include_fan_speed
winter_time_delay_low_speed: !input winter_time_delay_low_speed
include_lights: !input include_lights
light_switch: !input light_switch
light_time_delay: !input light_time_delay
include_light_control: !input include_light_control
light_brightness: !input light_brightness
brightness_value: '{{ iif (''use_brightness'' in include_light_control , light_brightness,
) }}'
light_colour_temperature: !input light_colour_temperature
temperature_value: '{{ iif (''use_colour_temperature'' in include_light_control
, light_colour_temperature, [] ) }}'
light_transition_on: !input light_transition_on
light_transition_off: !input light_transition_off
transition_on_value: '{{ iif (''use_transition'' in include_light_control, light_transition_on,
) }}'
transition_off_value: '{{ iif (''use_transition'' in include_light_control, light_transition_off,
) }}'
include_manual_fan_switch: !input include_manual_fan_switch
manual_fan_switch: !input manual_fan_switch
manual_fan_switch_time_delay: !input manual_fan_switch_time_delay
include_automation_link: !input include_automation_link
automation_link: !input automation_link
automation_link_time_delay: !input automation_link_time_delay
include_bypass: !input include_bypass
by_pass: !input by_pass
bypass_options: !input bypass_options
include_bypass_auto_off: !input include_bypass_auto_off
bypass_auto_off_delay: !input bypass_auto_off_delay
light_entities: "{% set a = light_switch and light_switch.entity_id %} {% if a
%}\n {{ expand(a) | selectattr('domain', 'eq', 'light') | map(attribute='entity_id')
| list }}\n{% else %}\n []\n{% endif %}"
triggers:
- trigger: numeric_state
id: t0
entity_id: !input trigger
above: !input winter_rising_humidity
below: '100'
- trigger: numeric_state
id: t1
entity_id: !input bathroom_humidity_sensor
above: !input winter_max_humidity
below: '100'
- trigger: homeassistant
id: t2
event: start
- trigger: numeric_state
id: t3
entity_id: !input trigger
above: !input rising_humidity
below: '100'
- trigger: numeric_state
id: t4
entity_id: !input bathroom_humidity_sensor
above: !input max_humidity
below: '100'
- trigger: state
id: t5
entity_id: !input by_pass
from: 'off'
to: 'on'
- trigger: state
id: t6
entity_id: !input by_pass
from: 'on'
to: 'off'
- trigger: state
id: t7
entity_id: !input manual_fan_switch
from: 'off'
to: 'on'
- trigger: state
id: t8
entity_id: !input manual_trigger
from: 'off'
to: 'on'
condition:
- condition: or
conditions:
- condition: and
conditions:
- '{{ include_winter_mode == ''winter_mode_enabled'' }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: trigger
id: t0
- condition: and
conditions:
- '{{ (include_winter_mode == ''winter_mode_enabled'') and (winter_include_max_humidity
== ''maximum_humidity_enabled'') }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: trigger
id: t1
- condition: and
conditions:
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'') |
list | count > 0) or ((include_fan_speed == ''fan_low_speed_enabled'') and (expand(fan_speed_low)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or ((winter_include_fan_speed
== ''fan_low_speed_enabled'') and (expand(fan_speed_low) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) or ((include_automation_link == ''enable_automation_link'')
and (expand(automation_link) | selectattr(''state'', ''=='', ''on'') | list
| count > 0)) }}'
- condition: trigger
id: t2
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_disabled'' in include_winter_mode }}'
- condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- condition: template
value_template: '{{ (now().month | string not in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input trigger
above: !input winter_rising_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_disabled'' in include_winter_mode }}'
- '{{ ''maximum_humidity_enabled'' in include_max_humidity }}'
- condition: numeric_state
entity_id: !input bathroom_humidity_sensor
above: !input max_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- '{{ ''maximum_humidity_enabled'' in include_max_humidity }}'
- condition: template
value_template: '{{ (now().month | string not in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input bathroom_humidity_sensor
above: !input max_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t2
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- '{{ ''maximum_humidity_enabled'' in winter_include_max_humidity }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input bathroom_humidity_sensor
above: !input winter_max_humidity
below: '100'
- condition: and
conditions:
- condition: template
value_template: '{{ (include_winter_mode == ''winter_mode_disabled'') or ((include_winter_mode
== ''winter_mode_enabled'') and not (now().month | string in month_winter_mode
)) }}'
- condition: trigger
id: t3
- condition: and
conditions:
- condition: template
value_template: '{{ ((include_winter_mode == ''winter_mode_disabled'') and (include_max_humidity
== ''maximum_humidity_enabled'')) or ((include_winter_mode == ''winter_mode_enabled'')
and (include_max_humidity == ''maximum_humidity_enabled'') and not (now().month
| string in month_winter_mode )) }}'
- condition: trigger
id: t4
- condition: and
conditions:
- condition: trigger
id: t5
- '{{ (include_bypass == ''bypass_enabled_turn_on'') or (include_bypass == ''bypass_enabled'')
or (include_bypass == ''bypass_enabled_stop'') }}'
- condition: and
conditions:
- condition: trigger
id: t6
- '{{ (include_bypass != ''bypass_disabled'') }}'
- '{{ (include_bypass == ''bypass_enabled'') or (include_bypass == ''bypass_enabled_stop'')
or (include_bypass == ''bypass_enabled_turn_on'') }}'
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 ) or ((include_fan_speed == ''fan_low_speed_enabled'') and
(expand(fan_speed_low) | selectattr(''state'', ''=='', ''on'') | list | count
> 0)) or ((winter_include_fan_speed == ''fan_low_speed_enabled'') and (expand(fan_speed_low)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or ((include_lights
== ''lights_enabled'') and (expand(light_switch.entity_id) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) or ((include_automation_link == ''enable_automation_link'')
and (expand(automation_link) | selectattr(''state'', ''=='', ''on'') | list
| count > 0)) or ((include_manual_fan_switch == ''enable_manual_fan_switch'')
or (include_manual_fan_switch == ''enable_manual_fan_switch_auto_off'') and
(expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'') | list |
count > 0)) }}'
- condition: and
conditions:
- condition: trigger
id:
- t6
- '{{ (include_bypass != ''bypass_disabled'') }}'
- '{{ ''winter_mode_disabled'' in include_winter_mode }}'
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''off'') |
list | count > 0 ) or ((include_fan_speed == ''fan_low_speed_enabled'') and
(expand(fan_speed_low) | selectattr(''state'', ''=='', ''off'') | list | count
> 0)) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''off'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''on'') | list | count > 0))}}'
- condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t6
- '{{ (include_bypass != ''bypass_disabled'') }}'
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''off'') |
list | count > 0 ) or ((include_fan_speed == ''fan_low_speed_enabled'') and
(expand(fan_speed_low) | selectattr(''state'', ''=='', ''off'') | list | count
> 0)) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''off'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) }}'
- condition: template
value_template: '{{ (now().month | string not in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
below: '100'
- condition: and
conditions:
- condition: trigger
id:
- t6
- '{{ (include_bypass != ''bypass_disabled'') }}'
- '{{ ''winter_mode_enabled'' in include_winter_mode }}'
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''off'') |
list | count > 0 ) or ((winter_include_fan_speed == ''fan_low_speed_enabled'')
and (expand(fan_speed_low) | selectattr(''state'', ''=='', ''off'') | list |
count > 0)) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''off'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: numeric_state
entity_id: !input trigger
above: !input winter_rising_humidity
below: '100'
- condition: and
conditions:
- condition: state
entity_id: !input manual_fan_switch
match: any
state: 'on'
- condition: trigger
id:
- t7
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- condition: and
conditions:
- condition: state
entity_id: !input manual_trigger
match: any
state: 'on'
- condition: trigger
id:
- t8
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- condition: or
conditions:
- '{{ include_bypass == ''bypass_disabled'' }}'
- '{{ by_pass == [] }}'
- '{{ (include_bypass == ''bypass_enabled_turn_on'') and (states[by_pass].state
== ''off'') }}'
- '{{ (include_bypass == ''bypass_enabled'') and (states[by_pass].state == ''off'')
}}'
- '{{ (include_bypass == ''bypass_enabled_stop'') and (states[by_pass].state ==
''off'') }}'
- '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'') and (states[by_pass].state
== ''off'') }}'
- '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'') and (states[by_pass].state
== ''on'') and (trigger.id == ''t2'') }}'
- condition: trigger
id: t5
action:
- choose:
- alias: For winter mode when enabled and within the set winter months
conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: trigger
id:
- t0
- t1
- condition: and
conditions:
- '{{ include_winter_mode == ''winter_mode_enabled'' }}'
- condition: template
value_template: '{{ (now().month | string in month_winter_mode ) }}'
- condition: trigger
id:
- t2
- t5
- t6
- t7
- t8
sequence:
- choose:
- alias: By-pass is turned on & check by-pass option - turn fan off
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled'' }}'
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is
on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: By-pass is turned on & check by-pass option - keep the current fan
state
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled_stop'' }}'
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is
on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
else:
- stop: Stop the automation
- choose:
- alias: By-pass is turned off & preform the correct action
conditions:
- condition: trigger
id: t6
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is
on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check by-pass options - turn fan off is enabled
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check if the sensor is below falling humidity & by-pass options
- turn fan off is disabled
conditions:
- alias: Check sensor is below falling
condition: numeric_state
entity_id: !input trigger
below: !input winter_falling_humidity
- condition: not
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time
delay
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time
delay
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link
time delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check if the sensor is above winter rising humidity & by-pass options
- turn fan off is disabled
conditions:
- alias: Check sensor is above rising
condition: numeric_state
entity_id: !input trigger
above: !input winter_rising_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''off'')
| list | count > 0 ) or ((include_lights == ''lights_enabled'') and
(expand(light_switch.entity_id) | selectattr(''state'', ''=='', ''off'')
| list | count > 0)) or ((include_automation_link == ''enable_automation_link'')
and (expand(automation_link) | selectattr(''state'', ''=='', ''off'')
| list | count > 0)) }}'
- condition: not
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: We need something here to continue
delay:
milliseconds: 10
default:
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input winter_falling_humidity
timeout:
minutes: !input winter_time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time
delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Preform the manual fan switch option
conditions:
- condition: trigger
id: t7
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (winter_include_fan_speed == ''fan_low_speed_enabled'') or (winter_include_fan_speed
== ''fan_speed_off_enabled'')}}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check if manual fan switch auto off is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
}}'
sequence:
- alias: Wait until manual fan switch is turned off or the time delay
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
timeout:
minutes: !input manual_fan_switch_time_delay
- alias: Check if manual fan switch is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
sequence:
- alias: Wait until manual fan switch is turned off
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ (winter_include_fan_speed == ''fan_low_speed_enabled'') or (winter_include_fan_speed
== ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- choose:
- alias: Check if the run on timer is switch is on
conditions:
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'') and
(expand(automation_link) | selectattr(''state'', ''=='', ''on'')
| list | count > 0)) }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Preform the manual trigger option
conditions:
- condition: trigger
id: t8
sequence:
- choose:
- alias: Check if the manual fan switch option is enabled and switch is
on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn on the automation link
action: homeassistant.turn_on
target:
entity_id: !input automation_link
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: Set the transition for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
- alias: Set the transition and brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
- alias: Set the transition and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the transition, brightness and colour temperature for the
normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
- alias: Set the colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the default for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (winter_include_fan_speed == ''fan_low_speed_enabled'') or (winter_include_fan_speed
== ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check manual trigger with safeguard is selected
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger'' }}'
sequence:
- alias: Wait until manual trigger is turned off or the safeguard has
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input winter_time_out
- choose:
- alias: Check if the manual trigger switch is ON and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Check manual trigger with time delay is selected
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger_time_delay'' }}'
sequence:
- alias: Wait until manual trigger is turned off or the time delay has
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input manual_trigger_winter_time_delay
- choose:
- alias: Check if the manual trigger switch is ON and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Wait until the time delay has passes
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait until the low speed time delay passes
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled and the lights are ON
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- alias: Wait until the light time delay has passes
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'') and
(expand(automation_link) | selectattr(''state'', ''=='', ''on'')
| list | count > 0)) }}'
sequence:
- alias: Wait until the automation link time delay has passes
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Safeguard when HA restarts
conditions:
- condition: trigger
id: t2
sequence:
- choose:
- alias: Check manual trigger with safeguard is selected and manual trigger
is ON
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger'' }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Wait until manual trigger is turned off or the safeguard has
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input time_out
- choose:
- alias: Check if the manual trigger switch is on and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Check manual trigger with time delay is selected and manual trigger
is ON
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger_time_delay'' }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Wait until manual trigger is turned off or the time delay has
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input manual_trigger_winter_time_delay
- choose:
- alias: Check if the manual trigger switch is on and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check manual fan switch is enabled and manual switch is ON
conditions:
- alias: Check if the humidity derivative sensor is above falling humidity
set point and fan / lights are on
condition: template
value_template: '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
or include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- choose:
- alias: Check if manual fan switch is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
sequence:
- alias: Wait until manual fan switch is turned off
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
- alias: Check if manual fan switch auto off is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
}}'
sequence:
- alias: Wait until manual fan switch is turned off or the time delay
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
timeout:
minutes: !input manual_fan_switch_time_delay
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ (winter_include_fan_speed == ''fan_low_speed_enabled'')
or (winter_include_fan_speed == ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- choose:
- alias: Check if the run on timer is switch is on
conditions:
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='',
''on'') | list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0))
}}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'')
and (expand(automation_link) | selectattr(''state'', ''=='',
''on'') | list | count > 0)) }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check automation and preform the correct action
conditions:
- alias: Check if the winter humidity derivative sensor is below falling
humidity set point and fan / lights are on
condition: numeric_state
entity_id: !input trigger
below: !input winter_falling_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
| list | count > 0) or ((winter_include_fan_speed == ''fan_low_speed_enabled'')
and (expand(fan_speed_low) | selectattr(''state'', ''=='', ''on'') |
list | count > 0)) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) }}'
sequence:
- choose:
- alias: Check if the by-pass auto off is enabled and by-pass is ON
conditions:
- condition: template
value_template: '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'')
and (states[by_pass].state == ''on'') }}'
sequence:
- alias: Wait the number of minutes set in the by-pass auto off time
delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time
delay
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time
delay
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link
time delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check automation and preform the correct action
conditions:
- alias: Check if the winter humidity derivative sensor is above falling
humidity set point and fan / lights are on
condition: numeric_state
entity_id: !input trigger
above: !input winter_rising_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
| list | count > 0) or ((winter_include_fan_speed == ''fan_low_speed_enabled'')
and (expand(fan_speed_low) | selectattr(''state'', ''=='', ''on'') |
list | count > 0)) }}'
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or (include_lights
== ''lights_disabled'') }}'
- '{{ ((include_automation_link == ''enable_automation_link'') and (expand(automation_link)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or (include_automation_link
== ''disable_automation_link'') }}'
sequence:
- choose:
- alias: Check if the by-pass auto off is enabled and by-pass is ON
conditions:
- condition: template
value_template: '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'')
and (states[by_pass].state == ''on'') }}'
sequence:
- alias: Wait the number of minutes set in the by-pass auto off time
delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input winter_falling_humidity
timeout:
minutes: !input winter_time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time
delay
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time
delay
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link
time delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'') |
list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (winter_include_fan_speed == ''fan_low_speed_enabled'') or (winter_include_fan_speed
== ''fan_speed_off_enabled'')}}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: Set the transition for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
- alias: Set the transition and brightness for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
- alias: Set the transition and colour temperature for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the transition, brightness and colour temperature for the winter
mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
- alias: Set the colour temperature for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness and colour temperature for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the default for the winter mode lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn on the automation link
action: homeassistant.turn_on
target:
entity_id: !input automation_link
- choose:
- alias: By-pass is enabled & check by-pass option - turn fan on
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled_turn_on'' }}'
sequence:
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
else:
- stop: Stop the automation
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input winter_falling_humidity
timeout:
minutes: !input winter_time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input winter_time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input winter_time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ winter_include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
default:
- alias: Check if the triggers
condition: trigger
id:
- t2
- t3
- t4
- t5
- t6
- t7
- t8
- choose:
- alias: By-pass is turned on & check by-pass option - turn fan off
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled'' }}'
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option is
enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: By-pass is turned on & check by-pass option - keep the current fan state
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled_stop'' }}'
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
else:
- stop: Stop the automation
- choose:
- alias: By-pass is turned off & check if the sensor is below falling humidity
conditions:
- condition: trigger
id: t6
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check by-pass options - turn fan off is enabled
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check if the sensor is below falling humidity & by-pass options -
turn fan off is disabled
conditions:
- alias: Check sensor is below falling
condition: numeric_state
entity_id: !input trigger
below: !input falling_humidity
- condition: not
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time
delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check if the sensor is above rising humidity & by-pass options -
turn fan off is disabled
conditions:
- alias: Check sensor is above rising
condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''off'')
| list | count > 0 ) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''off'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''off'') | list | count > 0)) }}'
- condition: not
conditions:
- condition: template
value_template: '{{ ''bypass_turn_fan_off'' in bypass_options }}'
sequence:
- alias: We need something here to continue
delay:
milliseconds: 10
default:
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input falling_humidity
timeout:
minutes: !input time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time
delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Preform the manual fan switch option
conditions:
- condition: trigger
id: t7
sequence:
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (include_fan_speed == ''fan_low_speed_enabled'') or (include_fan_speed
== ''fan_speed_off_enabled'')}}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check if manual fan switch auto off is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
}}'
sequence:
- alias: Wait until manual fan switch is turned off or the time delay passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
timeout:
minutes: !input manual_fan_switch_time_delay
- alias: Check if manual fan switch is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
sequence:
- alias: Wait until manual fan switch is turned off
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ (include_fan_speed == ''fan_low_speed_enabled'') or (include_fan_speed
== ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- choose:
- alias: Check if the manual fan switch option is enabled and switch is
on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or
(include_manual_fan_switch == ''enable_manual_fan_switch_auto_off'')
}}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'') and (expand(automation_link)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Preform the manual trigger option
conditions:
- condition: trigger
id: t8
sequence:
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn on the automation link
action: homeassistant.turn_on
target:
entity_id: !input automation_link
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: Set the transition for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
- alias: Set the transition and brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
- alias: Set the transition and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the transition, brightness and colour temperature for the
normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
- alias: Set the colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the default for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (include_fan_speed == ''fan_low_speed_enabled'') or (include_fan_speed
== ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check manual trigger with safeguard is selected
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger'' }}'
sequence:
- alias: Wait until manual trigger is turned off or the safeguard has passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input time_out
- choose:
- alias: Check if the manual trigger switch is ON and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Check manual trigger with time delay is selected
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger_time_delay'' }}'
sequence:
- alias: Wait until manual trigger is turned off or the time delay has passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input manual_trigger_default_time_delay
- choose:
- alias: Check if the manual trigger switch is ON and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Wait until the time delay has passes
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option is
enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait until the low speed time delay passes
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled and the lights are ON
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- alias: Wait until the light time delay has passes
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'') and (expand(automation_link)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- alias: Wait until the automation link time delay has passes
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Safeguard when HA restarts
conditions:
- condition: trigger
id: t2
sequence:
- choose:
- alias: Check manual trigger with safeguard is selected and manual trigger
is ON
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger'' }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Wait until manual trigger is turned off or the safeguard has passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input time_out
- choose:
- alias: Check if the manual trigger switch is on and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- alias: Check manual trigger with time delay is selected and manual trigger
is ON
conditions:
- '{{ include_manual_trigger == ''enable_manual_trigger_time_delay'' }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Wait until manual trigger is turned off or the time delay has passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_trigger
from: 'on'
to: 'off'
timeout:
minutes: !input manual_trigger_default_time_delay
- choose:
- alias: Check if the manual trigger switch is on and turn it OFF
conditions:
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- alias: Turn OFF the manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check manual fan switch is enabled and manual switch is ON
conditions:
- alias: Check if the humidity derivative sensor is above falling humidity
set point and fan / lights are on
condition: template
value_template: '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
or include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'')
| list | count > 0 }}'
sequence:
- choose:
- alias: Check if manual fan switch is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch'' }}'
sequence:
- alias: Wait until manual fan switch is turned off
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
- alias: Check if manual fan switch auto off is enabled
conditions:
- '{{ include_manual_fan_switch == ''enable_manual_fan_switch_auto_off''
}}'
sequence:
- alias: Wait until manual fan switch is turned off or the time delay
passes
wait_for_trigger:
- trigger: state
entity_id: !input manual_fan_switch
from: 'on'
to: 'off'
timeout:
minutes: !input manual_fan_switch_time_delay
- alias: Parallel Actions for the fan, lights and automation link
parallel:
- sequence:
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ (include_fan_speed == ''fan_low_speed_enabled'') or (include_fan_speed
== ''fan_speed_off_enabled'') }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- choose:
- alias: Check if the manual fan switch option is enabled and switch
is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'')
or (include_manual_fan_switch == ''enable_manual_fan_switch_auto_off'')
}}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='',
''on'') | list | count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) }}'
sequence:
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ ((include_automation_link == ''enable_automation_link'') and
(expand(automation_link) | selectattr(''state'', ''=='', ''on'')
| list | count > 0)) }}'
sequence:
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check automation and preform the correct action
conditions:
- alias: Check if the humidity derivative sensor is below falling humidity
set point and fan / lights are on
condition: numeric_state
entity_id: !input trigger
below: !input falling_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
| list | count > 0) or ((include_fan_speed == ''fan_low_speed_enabled'')
and (expand(fan_speed_low) | selectattr(''state'', ''=='', ''on'') | list
| count > 0)) or ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or ((include_automation_link
== ''enable_automation_link'') and (expand(automation_link) | selectattr(''state'',
''=='', ''on'') | list | count > 0)) }}'
sequence:
- choose:
- alias: Check if the by-pass auto off is enabled and by-pass is ON
conditions:
- condition: template
value_template: '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'')
and (states[by_pass].state == ''on'') }}'
sequence:
- alias: Wait the number of minutes set in the by-pass auto off time
delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time
delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- alias: Check automation and preform the correct action
conditions:
- alias: Check if the humidity derivative sensor is above falling humidity
set point and fan / lights are on
condition: numeric_state
entity_id: !input trigger
above: !input rising_humidity
- '{{ (expand(fan_switch.entity_id) | selectattr(''state'', ''=='', ''on'')
| list | count > 0) or ((include_fan_speed == ''fan_low_speed_enabled'')
and (expand(fan_speed_low) | selectattr(''state'', ''=='', ''on'') | list
| count > 0)) }}'
- '{{ ((include_lights == ''lights_enabled'') and (expand(light_switch.entity_id)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or (include_lights
== ''lights_disabled'') }}'
- '{{ ((include_automation_link == ''enable_automation_link'') and (expand(automation_link)
| selectattr(''state'', ''=='', ''on'') | list | count > 0)) or (include_automation_link
== ''disable_automation_link'') }}'
sequence:
- choose:
- alias: Check if the by-pass auto off is enabled and by-pass is ON
conditions:
- condition: template
value_template: '{{ (include_bypass_auto_off == ''bypass_auto_off_enabled'')
and (states[by_pass].state == ''on'') }}'
sequence:
- alias: Wait the number of minutes set in the by-pass auto off time
delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input falling_humidity
timeout:
minutes: !input time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option
is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time
delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link
- stop: Stop the automation
- choose:
- alias: Check if the manual trigger option is enabled and switch is on
conditions:
- '{{ (include_manual_trigger == ''enable_manual_trigger'') or (include_manual_trigger
== ''enable_manual_trigger_time_delay'') }}'
- '{{ expand(manual_trigger) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual trigger
action: homeassistant.turn_off
entity_id: !input manual_trigger
- choose:
- alias: Check if the manual fan switch option is enabled and switch is on
conditions:
- '{{ (include_manual_fan_switch == ''enable_manual_fan_switch'') or (include_manual_fan_switch
== ''enable_manual_fan_switch_auto_off'') }}'
- '{{ expand(manual_fan_switch) | selectattr(''state'', ''=='', ''on'') | list
| count > 0 }}'
sequence:
- alias: Turn OFF manual fan switch
action: homeassistant.turn_off
entity_id: !input manual_fan_switch
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan Speed - Low Speed Switch - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- choose:
- alias: Check if fan speeds are enabled
conditions:
- '{{ (include_fan_speed == ''fan_low_speed_enabled'') or (include_fan_speed
== ''fan_speed_off_enabled'')}}'
sequence:
- alias: Fan Speed - Switch Off - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_off
- alias: Turn on the fan
action: homeassistant.turn_on
target: !input fan_switch
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- choose:
- alias: Set the transition for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
- alias: Set the transition and brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
- alias: Set the transition and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the transition, brightness and colour temperature for the normal
lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' in include_light_control) and
(''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_on_value }}'
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
- alias: Set the colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the brightness and colour temperature for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' in include_light_control) and (''use_colour_temperature''
in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
data:
brightness_pct: '{{ brightness_value }}'
color_temp_kelvin: '{{temperature_value}}'
- alias: Set the default for the normal lights
conditions:
- condition: template
value_template: '{{ (''use_transition'' not in include_light_control)
and (''use_brightness'' not in include_light_control) and (''use_colour_temperature''
not in include_light_control) }}'
sequence:
- action: light.turn_on
target:
entity_id: '{{ light_entities }}'
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Turn on the automation link
action: homeassistant.turn_on
target:
entity_id: !input automation_link
- choose:
- alias: By-pass is enabled & check by-pass option - turn fan on
conditions:
- condition: trigger
id: t5
- condition: template
value_template: '{{ include_bypass == ''bypass_enabled_turn_on'' }}'
sequence:
- alias: Check by-pass settings and preform the correct action
if:
- alias: Check if the by-pass auto off is enabled
condition: template
value_template: '{{ include_bypass_auto_off == ''bypass_auto_off_enabled''
}}'
then:
- alias: Wait the number of minutes set in the by-pass auto off time delay
delay:
minutes: !input bypass_auto_off_delay
- alias: Turn off the by-pass
action: homeassistant.turn_off
entity_id: !input by_pass
- stop: Stop the automation
else:
- stop: Stop the automation
- alias: Wait until Humidity Derivative Sensor drops or it times out
wait_for_trigger:
- trigger: numeric_state
entity_id: !input trigger
below: !input falling_humidity
timeout:
minutes: !input time_out
- alias: Parallel Actions for the fan and lights
parallel:
- sequence:
- alias: Wait the number of minutes that has been set for the time delay
delay:
minutes: !input time_delay
- alias: Turn off the fan
action: homeassistant.turn_off
target: !input fan_switch
- choose:
- alias: Check if the fan speed switch to low speed then off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_low_speed_enabled'' }}'
sequence:
- alias: Fan low speed ON
action: homeassistant.turn_on
entity_id: !input fan_speed_low
- alias: Wait the number of minutes set in the low speed time delay
delay:
minutes: !input time_delay_low_speed
- alias: Fan low speed OFF - Safeguard
action: homeassistant.turn_off
entity_id: !input fan_speed_low
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- alias: Check if the fan speed off option is enabled
conditions:
- '{{ include_fan_speed == ''fan_speed_off_enabled'' }}'
sequence:
- alias: Fan off speed
action: homeassistant.turn_on
entity_id: !input fan_speed_off
- sequence:
- choose:
- alias: Check if the lights are enabled
conditions:
- '{{ include_lights == ''lights_enabled'' }}'
sequence:
- alias: Wait the number of minutes set in the lights time delay
delay:
minutes: !input light_time_delay
- choose:
- alias: If transition is selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' in include_light_control }}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
data:
transition: '{{ transition_off_value }}'
- alias: If transition is not selected
conditions:
- condition: template
value_template: '{{ ''use_transition'' not in include_light_control
}}'
sequence:
- alias: Turn off the lights
action: light.turn_off
target:
entity_id: '{{ light_entities }}'
- sequence:
- choose:
- alias: Check if the automation link is enabled
conditions:
- '{{ include_automation_link == ''enable_automation_link'' }}'
sequence:
- alias: Wait the number of minutes set in the automation link time delay
delay:
minutes: !input automation_link_time_delay
- alias: Turn off the automation link
action: homeassistant.turn_off
target:
entity_id: !input automation_link