Controllare un ventilatore sulla base di un range termico tramite Home Assistant

SCOPI DEL PROGETTO:
  • Gestire accensione e spegnimento di un ventilatore in modo automatico in base a un range (intervallo) di temperature
  • Livello di difficoltà: medio/basso
  • Costo: n.a.
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Un ventilatore già modificato per esser controllato tramite un attuatore domotico (vedi esempio) già inserito in configurazione Home Assistant
  • Un sensore di temperatura già inserito in configurazione Home Assistant
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico)
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.
Revisione guida: 2.0

Ventilatore da terra

Abstract

Molte persone amano l’uso del ventilatore, nella stagione calda, in luogo del climatizzatore/condizionatore. Questo perché esso fornisce, per alcuni, un refrigerio più piacevole, specialmente di notte. Il problema, sopratutto in quest’ultimo caso d’uso, sta nel fatto che l’accensione costante alla lunga diventa fastidiosa e lo spegnimento prima di coricarsi lo è altrettanto perché porta a sentire caldo nelle prime ore di sonno.

La domotica ci viene in aiuto. Il presente progetto permetterà di configurare presso Home Assistant un meccanismo automatico tale da fornire all’utente la possibilità di scegliere una temperatura massima al raggiungimento della quale il ventilatore si accenda automaticamente e una minima al di sotto della quale esso si spenga, sempre automaticamente.

Si parte

Assunzioni

Si assume che presso la configurazione di Home Assistant siano presenti le seguenti entità:

  • uno switch chiamato “ventilatore” (“switch.ventilatore”) che corrisponda all’attuatore che eroga/interrompe corrente al ventilatore (vedi progetto esemplificativo e relative considerazioni);
  • un sensore di temperatura chiamato “temperatura” (“sensor.temperatura”) che fornisca la temperatura istantanea della stanza in cui è presente il ventilatore con una risoluzione al decimo di grado centigrado.

Creazione degli slider

Primo passo è quello di definire due slider per definire quali siano le temperature “di soglia” per l’auto accensione/spegnimento. Per far ciò includeremo nella sezione “Input Number” (“maxtemp_fan” e “mintemp_fan”) le seguenti entità:

input_number:
  maxtemp_fan:
    name: FAN Max°
    initial: 29
    min: 27
    max: 31
    step: 0.1
  mintemp_fan:
    name: FAN Min°
    initial: 26
    min: 24
    max: 28
    step: 0.1

“maxtemp_fan” rappresenta lo slider dal quale regolare la temperatura oltre la quale si scatena l’accensione automatica; viceversa, “mintemp_fan” rappresenta quello dal quale regolare la temperatura al di sotto della quale si scatena lo spegnimento automatico.

Il primo ha un range operativo che va dai 27 ai 31 gradi centigradi, il secondo dai 24 ai 28 gradi. La risoluzione di regolazione è impostata al decimo di grado (“step: 0.1”).

Questa configurazione si traduce, sul frontend, in una rappresentazione come segue:

Home Assistant Input Number slider

Creazione dei sensori

Per innescare l’automazione che andremo a creare è necessario introdurre in configurazione due “Template Sensor“, ovvero due sensori virtuali (li chiameremo “max_setpoint_status” e “max_setpoint_status”) che ci dicano se nella stanza si sono superate (in alto e in basso) le due temperatura impostate tramite slider di cui sopra.

Nella sezione “sensor” andremo ad aggiungere la seguente configurazione:

sensor:
  - platform: template
    sensors:
      max_setpoint_status:
        value_template: >-
          {% if states('sensor.temperatura')|float > states('input_number.maxtemp_fan')|float %}
            yes
          {% else %}
            no
          {% endif %}
  - platform: template
    sensors:
      min_setpoint_status:
        value_template: >-
          {% if states('sensor.temperatura')|float < states('input_number.mintemp_fan')|float %}
            yes
          {% else %}
            no
          {% endif %}

Il sensore “max_setpoint_status” risponde “yes” se la temperatura nella stanza è più alta della soglia impostata sullo slider “maxtemp_fan”, viceversa risponde “no”.

Il sensore “min_setpoint_status” risponde “yes” se la temperatura nella stanza è più bassa della soglia impostata sullo slider “mintemp_fan”, viceversa risponde “no”.

Creazione delle automazioni

Definiamo ora due automazioni che agiscano al cambio di stato (da “no” a “yes”) dei due sensori di cui sopra.

Nel blocco “automation” aggiungiamo le seguenti due automazioni:

automation:
  - alias: Camera fan AUTO ON
    initial_state: 'off'
    trigger:
      platform: state
      entity_id: sensor.max_setpoint_status
      to: 'yes'
    condition: []
    action:
      service: switch.turn_on
      entity_id: switch.ventilatore

  - alias: Camera fan AUTO OFF
    initial_state: 'off'
    trigger:
      platform: state
      entity_id: sensor.min_setpoint_status
      to: 'yes'
    condition: []
    action:
      service: switch.turn_off
      entity_id: switch.ventilatore

Entrambe le automazioni sono configurate in modo da non essere operative all’avvio di Home Assistant (“initial_state: ‘off'”)  e non presentano alcuna condizione da verificare. Una condizione che si potrebbe aggiungere è quella legata all’orario, o all’effettiva presenza in casa.

Un esempio di andamento della temperatura durante una notte estiva controllata con questa tecnica è rappresentata nel seguente esempio (si noti l’andamento a zig-zag della temperatura durante la notte). L’automazione è stata disattivata manualmente all’una, ma prima di quell’ora:

Grafico temperature Home Assistant

Raggruppamento

In aggiunta a questa configurazione, è comodo pensare di raggruppare lo switch “ventilatore”, le due automazioni e gli slider in due gruppi preso il frontend.

Aggiungendo nella sezione “group” della configurazione un codice come quello che segue:

group:
  ventilazione:
    name: Ventilazione
    entities:
      - switch.Ventilatore
      - input_number.maxtemp_fan
      - input_number.mintemp_fan
  autofan:
    name: AUTO FAN
    entities:
      - automation.camera_fan_auto_on
      - automation.camera_fan_auto_off

si origina un’interfaccia di questo tipo:

Home Assistant AUTO FAN
Esempio di regolazione con accensione automatica sopra i 27 gradi e lo spegnimento sotto i 27,5. L’automazione è però spenta, quindi anche al raggiungimento delle soglie non accadrebbe comunque nulla.


Home Assistant iconATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

Dubbi? Perplessità? Fai un salto sul FORUM o sulla CHAT @DISCORD!
Questa pagina è coperta dalla licenza Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Licenseil che significa che puoi liberamente condividerlo, senza modificarlo, citando il link della fonte.