Breve disamina dell’argomento Home Assistant le condizioni nelle automazioni, per approfondirne il funzionamento.

Oggi approfondiamo un argomento specifico: Home Assistant le condizioni nelle automazioni, per approfondire il funzionamento di queste variabili in fase di programmazione.

Come tutti quelli che mi seguono sanno ormai da un po’ di tempo sto pubblicando articoli che trattano di domotica in particolare con l’utilizzo di Home Assistant.

Una delle particolarità che rende Home Assistant molto accattivante è la sua poliedricità, si riesce praticamente a fare quasi tutto combinando dispositivi fisici e virtuali.

In questo articolo vorrei mostrarti due particolari funzioni disponibili:

  • combinare tra loro dispositivi fisici per acquisirne lo stato
  • gestire le automazioni in base a determinate condizioni

Per quanto riguarda la prima funzione sfrutterò l’esempio di un termostato virtuale che sarà in grado di regolare il funzionamento di una stufetta in base alla temperatura rilevata nella stanza.

Immaginiamo dunque di avere una stufetta collegata ad una presa Smart (integrata in Home Assistant come “switch” con il nome “stufetta” )

Supponiamo inoltre di aver integrato in Home Assistant anche un sensore di temperatura ( quindi un “sensor” che chiameremo “temperatura”) posizionato nella stessa stanza della stufetta.

A questo punto dobbiamo creare un “termostato” che funzioni agendo le entità di cui ti ho appena parlato.

Per creare il termostato è sufficiente aggiungere nel nostro file config.yaml le seguenti righe di codice:

climate

  – platform: generic_thermostat

     name: Stufetta

     heater: switch.stufetta

     target_sensor: sensor.temperatura

     min_temp: 24

     max_temp: 31

     ac_mode: false

     target_temp: 27

     cold_tolerance: 0.2

     hot_tolerance: 0.2

     initial_hvac_mode: “off”

     precision: 0.1

In questo modo abbiamo creato un’entità “climate” chiamata “climate.stufetta” che può essere aggiunta alla plancia di Home Assistant tramite apposita Card grafica di tipo termostato.

Nello specifico climate.stufetta, come si evince dal codice, è regolabile tra i 24 ed i 31 gradi e agisce direttamente sulla presa Smart (switch.stufetta).

La temperatura dell’ambiente viene rilevata dal sensore di temperatura (sensor.temperatuta) con precisione al decimo di grado.

La tolleranza in accensione e spegnimento è di 2 decimi di grado e lo stato iniziale (all’avvio di Home Assistant) è settato su “off”.

Da notare che ho indicato il valore di “ac_mode” come “false” questo per far funzionare il termostato come riscaldamento, su “true”, invece, funzionerebbe per un elemento raffrescante (condizionatore).

Se aggiungiamo la Card grafica potremo gestire manualmente l’accensione e spegnimento della stufetta e settare i gradi desiderati nella stanza.

Ma poiché l’articolo si prefigge altri scopi vediamo come integrare questa entità “climate.stufetta” in un’automazione.

In qualsiasi automazione vogliamo possiamo chiamare il servizio “climate.turn_off” per ottenere la disattivazione del termostato appena creato.

Il motivo è più che altro dettato dalla sicurezza, lasciare una stufetta accesa anche quando non è necessario può essere un pericolo.

Per effettuare questo, nella parte dedicata all’azione che deve compiere la nostra automazione andremo a scegliere:

  • chiama servizio => climate.turn_off (per disabilitare il termostato)
  • chiama servizio => climate.turn_on (per abilitare il termostato)

Vediamo ora come definire delle condizioni per l’attivazione di una determinata automazione.

Sempre facendo riferimento all’entità climate.stufetta, supponiamo di farla attivare solo in determinati orari e in presenza di persone.

In fase di programmazione dell’automazione inseriremo 2 trigger (attivazioni) basati sull’orario:

  • alle 19.30 (indicando nell’id: “attivazione”)
  • alle 23.30 (indicando nell’id: “disattivazione”)

tra le condizioni andremo invece a compilare il codice (oppure a selezionare da interfaccia grafica):

condition: []

action:

  – choose:

     – conditions:

       – condition: trigger

         id: “attivazione”

      sequence:

       – condition: state

          entity_id: group.famiglia

          state: ‘home’

       – service: climate.set_hvac_mode

          data:

            entity_id: climate.stufetta

           hvac_mode: heat

        – conditions:

           – condition: trigger

             id: “disattivazione”

           sequence:

              – service: climate.turn_off

                entity_id: climate.stufetta

In questo modo abbiamo definito che alle 19:30 la stufetta si attiva a condizione che sia presente qualcuno in casa (ovviamente va creato un gruppo famiglia che verifica la presenza)

Mentre alle 23.30 l’entità climate.stufetta viene disabilita di conseguenza il funzionamento basato sulla temperatura non avrà alcun effetto sulla stufetta che rimarrà spenta.

È interessante notare come le condizioni appena descritte siano applicate in base al tipo di attivazione (considerando il nome definito nell’ID del trigger).

Concludo questo articolo dicendo che, come sempre, tutto quello appena descritto è applicabile a molteplici contesti, l’unico limite è la fantasia.

Continua a seguirmi anche su Facebook e Telegram