community italiana di domotica personale
 
Gestire dinamicamente una ventola tradizionale su Raspberry Pi via Home Assistant

Gestire dinamicamente una ventola tradizionale su Raspberry Pi via Home Assistant

SCOPI DEL PROGETTO:
  • Controllare una ventola tradizionale su Raspberry tramite Home Assistant
  • Livello di difficoltà: medio/basso
  • Costo: basso
CONCETTI AFFRONTATI:
  • Configurazione software
  • Assemblaggio hardware
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
PROGETTO INDICATO PER:

home assistant -su raspberry pi

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione progetto: 2.1
Progetto ideato da: Paolo Bertolli e integrato dalla redazione inDomus
ATTENZIONE: Questa è una guida è adatta sia ad utenti Home Assistant Core che Home Assistant OS (basta che sia in esecuzione su Raspberry Pi, ovviamente)

Abstract

Non è certo una novità che la dissipazione del calore dalle apparecchiature elettroniche sia, spesso, un grosso problema. Raspberry Pi, il mini computer più diffuso al mondo (comodo per tante diverse funzioni) non fa certo differenza, sebbene sia costruito talmente bene da riuscire, di per sé, a una discreta dissipazione passiva.

Ventola Raspberry Pi
una ventola per Raspberry Pi.

Il problema si pone quando si presentano dei picchi computazionali importanti (specialmente con il modello 4B), oppure quando, a prescindere, l’aria della stanza in cui è installato è calda, come per esempio capita d’estate. Per risolvere il problema è solitamente sufficiente collocare una piccola ventola di raffreddamento, la quale però solitamente presenta il problema di rimanere perennemente accesa, talvolta rumorosamente.

Una prima soluzione è stata quella di testare una ventola specifica, la nota Fan SHIM la quale, dotata di una micro board di controllo, consente – in abbinamento a una configurazione Home Assistant – di accendersi solo al raggiungimento di determinate temperature critiche, e spegnersi al di sotto di altre. A questa soluzione abbiamo dedicato una guida specifica per utenti Home Assistant.

Chi invece dispone di una ventola tradizionale non nativamente gestibile in modo dinamico (per esempio, molti case di protezione di Raspberry Pi ne montano una di questo tipo) può, tramite le tecniche spiegate in questo progetto, ottenere l’obiettivo di una regolazione automatica basata sulla temperatura interna di Raspberry Pi.

Ma la ventola serve davvero?

Si tratta di un tema molto dibattuto. Quello che si è capito è che a prescindere il Raspberry Pi, quando si surriscalda, riduce la sua frequenza di clock: diventa quindi più lento. Per esempio, il Raspberry Pi 3 B+ gira normalmente a 1.4 GHz. Quando raggiungere i 60 gradi centigradi riduce la sua velocità a 1,2 GHz, mentre quando raggiunge gli 80 scende a 1,1 GHz. Questo effetto è ancora più percepibile su Raspberry Pi 4 B che, come noto, scalda di più.

Inoltre è noto come il calore, a prescindere, tenda a rovinare l’elettronica, arrivando fino a guastarla. Un Raspberry Pi che rallenta e si rovina nel tempo? Ognun per sé: noi però preferiamo adottare la ventola.

Si parte

Approccio

Solitamente le ventole per Raspberry Pi si collegano ai PIN 12 e 13 (rispettivamente +5v e GRD) e rimangono, come detto, perennemente accese. Ciò che ci serve è quindi una sorta di “interruttore”: a tal scopo utilizzeremo un transistor a giunzione bipolare che, sostanzialmente, funge da vero e proprio interruttore logico. Nello specifico utilizzeremo, come indicato nei requisiti, un transistor NPN.

Un transistor NPN sul piano logico funziona così:

Transistor NPN - Schema logico

dove:

  • il polo E rappresenta l’emettitore (va collegato al polo positivo della ventola);
  • il polo B rappresenta la base (va collegato a un PIN GPIO del Raspberry, il 18);
  • il polo C rappresenta il collettore (va collegato alla massa, o GND, ovvero il PIN GPIO del Raspberry n. 13);

Lo schema di connessione del transistor è il seguente:

Transistor NPN - Schema connessioni

Lo schema di connessione Raspberry GPIO, invece, è sempre il solito:

Raspberry Pi GPIO PIN schema

Come detto, useremo i PIN 12, 13 e 18.

Vetrina - Offerte del giorno

Connessioni

Le connessioni che andranno quindi realizzate (qui rappresentate per semplicità con una basetta millefori, quando in realtà andremo a realizzare il tutto senza che ce ne sia bisogno) saranno le seguenti:

Schema connessione ventola Raspberry Pi con transistor NPN

Andremo quindi ad assemblare il tutto utilizzando un piccolo saldatore e della guaina termorestringente. Copriremo anche il transistor con la guaina allo scopo di proteggerlo da eventuali contatti non voluti sulla board del Raspberry; infine, collegheremo il tutto all’unità.

Protezione del transistor con guaina

Immagine 2 di 3

Ventola Raspberry Pi con Transistor - 2

Home Assistant

Prima di provvedere alla configurazione di Home Assistant è necessario installare il custom component “Raspberry PI GPIO“.

Installare il componente

Installare il componente è un gioco da ragazzi, quando si utilizza il comodissimo HACS.
Prima cosa da fare, nelle schermata principale relativa alle “Integrazioni” cercare “Raspberry PI GPIO“.

Una volta trovato, cliccarvi sopra per accedere alla maschera tramite la quale provvedere all’installazione del componente cliccando “Scarica“.

Terminata l’installazione riavviare Home Assistant per procedere oltre con la configurazione.

Configurazione

Terminato l’assemblaggio e il montaggio della ventola, siamo pronti a installare il package fornito da noi proposto per la definizione di tre entità:

  • un sensore che fornisca a Home Assistant la lettura della temperatura della CPU del Raspberry;
  • uno switch che consenta di accendere/spegnere la ventola;
  • un termostato virtuale che, in base alla temperatura del sensore di cui sopra e della temperatura desiderata dall’utente provveda ad accedere/spegnere la ventola.

Per installare questo progetto utilizzeremo per l’appunto i package, una funzione di Home Assistant che permette di definire uno o più file di configurazione specifici, raggruppando così tutte le sue configurazioni in un solo posto. Per capire come utilizzare questo componente e installato è utile leggere questa scheda.

Nella cartella scelta per i packages (solitamente “packages” all’interno della cartella che contiene i file di configurazione di Home Assistant), copiare il file chiamato “fan_shim_home_assistant.yaml” contenuto nel repository che potete trovare QUI.

Infine salvare e uscire. Recarsi alla voce di menu “Strumenti per gli sviluppatori” > “YAML” e cliccare su “CONTROLLA LA CONFIGURAZIONE“: se – e solo se – la configurazione risulta corretta, provvedere a un riavvio di Home Assistant (voce “RIAVVIARE“).

Dopo un necessario riavvio, (svariate) nuove entità di diversa natura saranno apparse presso Home Assistant.

Vediamo da cos’è composto il nostro semplice package:

command_line:
  - sensor:
      name: Temperatura CPU
      command: "cat /sys/class/thermal/thermal_zone0/temp"
      unit_of_measurement: "°C"
      value_template: '{{ value | multiply(0.001) | round(1) }}'
      scan_interval: 10
switch:
  - platform: rpi_gpio
    switches:
      - port: 18
        name: "Fan SHIM"
climate:
  - platform: generic_thermostat
    name: Fan SHIM
    heater: switch.fan_shim
    target_sensor: sensor.temperatura_cpu
    min_temp: 40
    max_temp: 80
    ac_mode: true
    target_temp: 50
    cold_tolerance: 0.5
    hot_tolerance: 0.5
    min_cycle_duration:
      seconds: 120
    keep_alive:
      minutes: 5
    initial_hvac_mode: "cool"

Il primo blocco definisce il sensore (“sensor.temperatura_cpu“) che censisce appunto la temperatura della CPU; il secondo lo switch (“switch.fan_shim“) che controlla il piedino 18 del Raspberry Pi (ovvero l’alimentazione della ventola; in ultimo, il blocco finale definisce il termostato (“climate.fan_shim“) che controllerà, come detto, la temperatura (proponiamo una configurazione di quest’ultimo “di massima”, liberamente modificabile dall’utente).

Recarsi dunque alla voce di menu “Configurazione” > “Gestione del server” e cliccare su “CONTROLLA LA CONFIGURAZIONE“: se – e solo se – la configurazione risulta corretta, provvedere a un riavvio di Home Assistant (voce “RIAVVIARE” a fondo pagina).

Dopo il necessario riavvio, le tre nuove entità di diversa natura saranno apparse presso Home Assistant:

Home Assistant - Climate Fan SHIM
il termostato virtuale.
Home Assistant - Climate Fan SHIM - Dettagli
il dettaglio del termostato virtuale.

Uso

A questo punto il termostato provvederà ad accendere la ventola quando la temperatura della CPU del Raspberry Pi supererà la temperatura target impostata sul termostato stesso, temperatura di default impostata a 40 gradi.

Ringraziamenti

Si ringrazia Paolo Bertolli per l’ottima realizzazione fattiva del progetto.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.