Jak zrobić automatyczne chłodzenie Raspberry Pi
Jak zrobić automatyczne chłodzenie Raspberry Pi w Home Assistant
Sterowanie wentylatorem w Raspberry Pi to temat, który często wydaje się prosty – do momentu, gdy chcemy uzyskać płynną regulację jego prędkości. Wiele osób ogranicza się do podłączenia wentylatora do zasilania 5V, przez co działa on cały czas na pełnych obrotach. To rozwiązanie jest skuteczne, ale nieefektywne: głośne, energochłonne i skracające żywotność wentylatora.
W tym artykule pokażę, jak stworzyć automatyczne chłodzenie Raspberry Pi, które będzie samoczynnie dostosowywać prędkość obrotów wentylatora do aktualnej temperatury procesora – wszystko z poziomu Home Assistanta.
Dlaczego warto sterować wentylatorem przez Home Assistant?
Home Assistant pozwala nie tylko monitorować temperaturę Raspberry Pi, ale również w pełni zautomatyzować proces chłodzenia. Dzięki temu:
-
wentylator uruchamia się tylko wtedy, gdy to potrzebne,
-
można regulować jego obroty płynnie (PWM),
-
system działa cicho i wydajnie,
-
można kontrolować i wizualizować wszystko w zakładce Climate w Home Assistant.
Wcześniej wbudowana integracja z GPIO była dostępna domyślnie, ale obecnie obsługa PWM wymaga instalacji z poziomu HACS. Na szczęście cały proces da się przeprowadzić w kilku krokach.
Krok po kroku – konfiguracja automatycznego chłodzenia
-
Zainstaluj integrację Raspberry Pi GPIO PWM
W HACS przejdź do trzech kropek w prawym górnym rogu, wybierz Niestandardowe repozytoria i wklej link do integracji. Następnie wybierz typ Integracja i zainstaluj modułWejdź w HACS → Integrations → … (trzy kropki) → Custom repositories i dodaj repo:
https://github.com/RedMeKool/HA-Raspberry-pi-GPIO-PWM
(kategoria: Integration), potem Install i Restart HA.
-
Dodaj integrację w Home Assistant
Po restarcie systemu przejdź do Ustawienia → Urządzenia i usługi → Dodaj integrację i wybierz Raspberry Pi GPIO PWM. Wprowadź nazwę, pin (np. GPIO13) i określ, czy sterujesz wentylatorem, czy światłem. -
Zainstaluj dodatek PIQ-PIO
To kluczowy element umożliwiający komunikację z pinami PWM. Dodaj repozytorium w Sklepie z dodatkami i zainstaluj PIQ-PIO. Po instalacji uruchom dodatek.Ustawienia → Dodatki → Sklep dodatków → menu (⋮) → Repozytoria → dodaj:
https://github.com/Poeschl-HomeAssistant-Addons/repository
-
Dodaj wpisy w YAML
W plikuconfiguration.yaml
należy utworzyć trzy sekcje:-
fan: – definiująca sterowanie GPIO PWM,
fan: - platform: rpi_gpio_pwm fans: - name: "Wentylator RPI PWM" # friendly name (pierwszy raz tworzy też entity_id) pin: 13 unique_id: wentylator_rpi_pwm # pozwala potem zmienić entity_id w UI
-
climate: – określająca temperaturę docelową i zakres pracy,
climate: - platform: generic_thermostat name: RPI Wentylator heater: switch.rpi_ventilator # jeśli nie chcesz klikania, rozważ input_boolean target_sensor: sensor.system_monitor_processor_temperature min_temp: 10 max_temp: 100 ac_mode: true target_temp: 60 min_cycle_duration: seconds: 500 keep_alive: minutes: 5 initial_hvac_mode: "cool"
-
automation: – odpowiadająca za logiczne sterowanie prędkością wentylatora w zależności od temperatury procesora.
- id: rpi_fan_pwm_controller alias: RPI – PWM wg temperatury (hvac_action aware) mode: restart trigger: - platform: state entity_id: sensor.system_monitor_processor_temperature for: 00:00:05 - platform: state entity_id: climate.rpi_wentylator attribute: temperature - platform: state entity_id: climate.rpi_wentylator attribute: hvac_action - platform: state entity_id: climate.rpi_wentylator - platform: homeassistant event: start - platform: time_pattern seconds: /15 variables: fan_entity: fan.wentylator_rpi_pwm temp: '{% set v = states(''sensor.system_monitor_processor_temperature'') %} {{ v|float(0) if v not in [''unknown'',''unavailable'',''none'',''''] else 0 }}' target: '{% set v = state_attr(''climate.rpi_wentylator'',''temperature'') %} {{ v|float(50) if v is not none else 50 }}' hvac_mode: '{{ (states(''climate.rpi_wentylator'') or ''off'') | lower }}' hvac_action: '{{ (state_attr(''climate.rpi_wentylator'',''hvac_action'') or '''') }}' delta: '{{ (temp - target) | round(2) }}' deadband: 1 min_pct: 25 max_pct: 100 k: 16 pct_raw: '{{ (min_pct + (k * delta)) | round(0) }}' pct_clamped: '{% set p = pct_raw|int %} {% if p < 0 %} 0 {% elif p > max_pct %} {{ max_pct|int }} {% else %} {{ p }} {% endif %}' pct_effective: "{% if hvac_action == 'cooling' %}\n {{ [pct_clamped|int, min_pct|int] | max }}\n{% else %}\n {{ pct_clamped|int }}\n{% endif %}" action: - choose: - conditions: - condition: template value_template: '{{ hvac_mode != ''off'' and (hvac_action == ''cooling'' or delta >= deadband) }} ' sequence: - service: fan.turn_on target: entity_id: '{{ fan_entity }}' - choose: - conditions: - condition: template value_template: '{{ pct_effective|int > 0 }}' sequence: - service: fan.set_percentage target: entity_id: '{{ fan_entity }}' data: percentage: '{{ pct_effective }}' - service: logbook.log data: name: RPI FAN message: ON set {{ pct_effective }}% (temp={{ temp }}°C, target={{ target }}°C, delta={{ delta }}, mode={{ hvac_mode }}, action={{ hvac_action }}) default: - service: fan.turn_off target: entity_id: '{{ fan_entity }}' - service: logbook.log data: name: RPI FAN message: OFF (pct_effective=0) default: - service: fan.turn_off target: entity_id: '{{ fan_entity }}' - service: logbook.log data: name: RPI FAN message: OFF (temp={{ temp }}°C, target={{ target }}°C, delta={{ delta }}, mode={{ hvac_mode }}, action={{ hvac_action }})
-
-
Przeładuj konfigurację Home Assistanta
Po zapisaniu zmian zrestartuj system. Automatyzacja pojawi się w zakładce Automatyzacje i sceny, gdzie możesz obserwować działanie całego systemu w formie wizualnej.
Jak to działa w praktyce?
Całość opiera się na zasadzie PWM (Pulse Width Modulation), czyli modulacji szerokości impulsu. Dzięki niej wentylator może pracować z różnymi prędkościami — od kilku do stu procent mocy — w zależności od różnicy między temperaturą aktualną a docelową.
Gdy temperatura procesora przekroczy wartość zadaną o kilka stopni, wentylator uruchamia się delikatnie, np. na 20%. Gdy różnica rośnie, obroty zwiększają się automatycznie, aż do 100%. To rozwiązanie nie tylko efektywne, ale też znacząco wydłuża żywotność sprzętu.
Zalety takiego rozwiązania
-
Cicha praca: wentylator działa tylko wtedy, gdy to konieczne.
-
Niższe zużycie energii: mniejsze obroty oznaczają mniejszy pobór prądu.
-
Lepsza kontrola: pełna wizualizacja temperatury i prędkości w Home Assistant.
-
Automatyzacja: brak potrzeby ręcznego uruchamiania chłodzenia.
Podsumowanie
Dzięki tej konfiguracji Raspberry Pi zyskuje w pełni inteligentny system chłodzenia sterowany przez Home Assistanta. To rozwiązanie, które łączy prostotę i funkcjonalność – idealne zarówno do serwerów Home Assistant, jak i innych zastosowań opartych o Raspberry Pi.
Po jednorazowej konfiguracji system działa całkowicie autonomicznie i zapewnia optymalne chłodzenie bez nadmiernego hałasu.