I previously used this script to control fans in a media cabinet:
# Sideboard fan set speed auto
sequence:
- service: fan.set_percentage
entity_id: fan.sideboard
data_template:
percentage: >
{% set temp = states('sensor.sideboard_temperature') | float %}
{% if states.switch.unraid_vm_windows_10.state == 'on' %}
{% if temp < 26 %}
33
{% elif temp < 27 %}
66
{% else %}
100
{% endif %}
{% else %}
{% if temp < 27 %}
33
{% elif temp < 28 %}
66
{% else %}
100
{% endif %}
{% endif %}
They’re not super loud it’s more the sudden jumps in speed which are noticeable. So, I changed the script to:
# Sideboard fan set speed auto
sequence:
- service: fan.set_percentage
entity_id: fan.sideboard
data_template:
percentage: >
{% set temp = states('sensor.sideboard_temperature') | float %}
{% if temp <= 21 %}
10
{% elif 21 < temp < 30 %}
{{ ((temp + -20.00) / 0.1000) | round(0) | int }}
{% elif temp >= 30 %}
100
{% endif %}
Where, 21°C is 10% speed and 30°C speed is 100% - this is works well and I don’t have any any audible jumps in fan speed now.
I’m just wondering if there’s a way to give the graph more of a curve (like the green lined marked) so that I can keep the fans quieter at lower temperatures?