Abbiamo visto come installare e configurare Home Assistant, poi siamo passati all’attivazione di HomeKit, infine Alberto ha spiegato in un chiarissimo articolo i concetti base delle automazioni. Arrivati a questo punto vorrei condividere con voi la mia automazione preferita, che consente di ricevere una notifica sul telefono quando uno dei nostri elettrodomestici cambia “stato”, nel caso specifico la lavatrice che termina il ciclo di lavaggio. Non potete immaginare quanto mi è utile questa automazione avendo la lavanderia fuori casa.
Procuriamoci una presa smart compatibile con Home Assistant
Per cominciare avremo bisogno di una presa smart con energy monitoring compatibile con HA. Io utilizzo la Smart Plug NeoCoolCam con standard z-wave (che richiede un dongle compatibile come quello di Aeotec), ma se ne trovano tantissime anche solo Wi-FI, come la nota TP-Link H110. In giro potete trovare offerte di prodotti apparentemente analoghi anche a 10€, ma serve un modello che sia integrabile in Home Assistant e che effettui una misurazione dei consumi, come quelli citati. Per attivare la presa basterà cercare la marca o il modello nella lista dei componenti sul sito ufficiale di Home Assistant e seguire le istruzioni di modifica del file configuration.yaml, che ormai dovreste conoscere bene. Una volta aggiunta la presa smart al sistema dovremo trovare l’entity id del sensore di consumo nella sezione “stati” (<>) del menu “strumenti per gli sviluppatori” su Home Assistant: nel mio caso con la NeoCoolCam l’identificativo univoco è sensor.neo_coolcam_power_plug_12a_power_8
Abilitiamo le notifiche
Per quanto riguarda le notifiche, Home Assistant permette di inviarle utilizzando moltissime piattaforme, tra cui Slack, Telegram, Messenger, Pushbullet, ecc; e per ognuna di queste vi è il componente specifico elencato nella pagina dei componenti.
Io preferisco usare come sistema di notifica principale l’app per iOS di Home Assistant. Per poterla abilitare dovremo inserire nel configuration.yaml poche righe, ma prima è necessario leggere il “Device ID” nella pagina di Settings dell’app Home Assistant su ogni telefono su cui si vogliono ricevere le notifiche. Nel mio caso sono due, quindi ho creato un gruppo dal nome “telefoni” aggiungendo una riga “service” per ognuno di essi:
ios: device_tracker: #questa riga vi servirà per abilitare la localizzazione notify: - name: telefoni platform: group services: - service: davides_iphone8 # Davide ID su app HA - service: iphone_di_muriel # Muriel ID su app HA
Come sempre dobbiamo controllare la configurazione e riavviare. A questo punto, se tutto è stato eseguito correttamente, inserendo i dati di accesso sull’ app di Home Assistant dovranno apparire le tre spunte accanto ad iOS component, device tracker e notify platform.
Proviamo una notifica
Vediamo se le notifiche funzionano con una semplicissima automazione, del tipo: quando accendo la luce invia la notifica. Prendiamo il file automation.yaml e scriviamo qualcosa del genere:
- alias: Prova Notifica trigger: platform: state entity_id: light.camera from: 'off' to: 'on' action: - service: notify.ios_davides_iphone8 data: message: "La Luce è accesa"
In questa automazione innescata dal trigger “quando la luce della camera si accende“ l’azione richiesta è appunto la notifica sul mio telefono “notify.ios_davides_iphone8” (notate che si dovrà aggiungere ios_ prima del Device ID )dove riceverò il messaggio “La Luce è accesa”. Se invece vogliamo inviare la notifica su tutti i telefoni si dovrà richiamare il servizio dell’intero gruppo in questo modo:
- service: notify.telefoni
Notifica di fine Lavaggio
A questo punto abbiamo tutto quello che ci serve: l’entity id della nostra presa smart e le notifiche abilitate. Cominciamo quindi a scrivere l’automazione per far si che la lavatrice ci notifichi la fine del lavaggio, iniziando a definire un nome (alias) e impostando lo stato iniziale su spento. È importante che Home Assistant mantenga l’automazione disattiva come stato predefinito, altrimenti verrebbe inviata una notifica anche ad ogni riavvio della piattaforma.
- alias: Notifica fine lavaggio initial_state: False # spenta quando Home Assistant si avvia
Subito dopo aggiungiamo l’entity id del componente della presa smart che misura il consumo di corrente (lo abbiamo già trovato nei precedenti passaggi) e stabiliamo un tetto massimo (inferiore a 3W) per una durata minima (8 minuti). Questo ci darà l’assoluta certezza che la lavatrice abbia terminato completamente il lavaggio e non sia solo in una fase intermedia tra una modalità e l’altra.
trigger: - platform: numeric_state entity_id: sensor.neo_coolcam_power_plug_12a_power_8 below: '3' for: minutes: 8
Passiamo ora all’azione di notifica, che ho definito con tre servizi. I primi due sono notifiche distinte sul telefono mio e di mia moglie, perché ho voluto differenziare i messaggi, m si potrebbe benissimo richiamare il gruppo notify.telefoni come visto in precedenza. Infine è opportuno spegnere l’automazione di notifica.
action: - service: notify.ios_davides_iphone8 data: message: "La lavatrice ha completato il lavaggio" - service: notify.ios_iphone_di_muriel data: message: "Vedi che il marito NERD può essere utile?!! La LAVATRICE è Pronta" - service: automation.turn_off entity_id: automation.notifica_fine_lavaggio
L’ultimo e fondamentale passaggio è quello di far accendere l’automazione che esegue il monitoraggio della lavatrice al momento giusto, e per questo servirà una seconda automazione. Iniziamo come sempre dal suo nome (nel campo alias) e proseguiamo stabilendo il trigger basandoci sui consumi rilevati dalla presa. In sostanza si tratterà di determinare una soglia sopra la quale abbiamo la certezza che la lavatrice sia in funzione, nel mio caso 50W (above: 50). L’azione da compiere è prevedibile: attivare l’automazione che notificherà la fine lavaggio.
- alias: Attiva Notifica lavatrice trigger: - platform: numeric_state entity_id: sensor.neo_coolcam_power_plug_12a_power_8 above: '50' action: - service: automation.turn_on entity_id: automation.notifica_fine_lavaggio
Grazie a questa semplice automazione non mi trovo più a dover attraversare inutilmente il giardino per arrivare in lavanderia e scoprire che la lavatrice è ancora in funzione. Partendo da questo spunto potrete scrivere automazioni anche molto diverse e ricordate che potete trovare tante nuove idee ed applicazioni pratiche nelle nostre repository su GitHub: Davide, Alberto, Andrea ed Andrea.
In un prossimo articolo studieremo i template, grazie ai quali si possono realizzare automazioni più complesse e al tempo stesso stesso lineari. Ad esempio si potrebbe provare a semplificare ulteriormente la logica di queste due automazioni usandone una soltanto che, dopo aver rilevato l’inizio del lavaggio, usa un wait_template per attendere che il consumo scenda per un tot di minuti e quindi inviare le notifiche.
Autore:
Davide (@daxda)
Revisori:
Alberto Zamboni (@albyzambo)
Maurizio Natali (@simplemal)