community italiana di domotica personale
 
Uscite e rientri in casa (o in altri luoghi): notifiche dalla domotica Home Assistant

Uscite e rientri in casa (o in altri luoghi): notifiche dalla domotica Home Assistant

SCOPI DELLA GUIDA
  • Ottenere delle notifiche a fronte dell’uscita e/o del rientro a casa (o altre location) degli inquilini tramite la domotica Home Assistant
  • Livello di difficoltàbasso
CONCETTI AFFRONTATI:
  • Utilizzo e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI
DISPOSITIVI FISICI UTILIZZATI:
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
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;
  • 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;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.5

Abstract

Oltre ad abilitare gli utenti all’esecuzione di automatismi a fronte dell’abbandono/rientro degli inquilini a casa (intesi come gruppo “famiglia”), l’abbinamento del componente “Device Tracker” con il componente “Notifications” di Home Assistant è particolarmente comodo per ricevere notifiche a fronte dell’uscita e/o il rientro dei singoli inquilini.

Il campo di applicazione è ampissimo: monitoraggio di soggetti quali bambini e anziani, di soggetti terzi (eg. operatore/ice delle pulizie), semplice consapevolezza rispetto alla presenza e all’assenza degli elementi della famiglia e altri scenari. Ovviamente esiste un aspetto legato alla privacy e all’etica che ogni soggetto amministratore della propria domotica personale dovrà affrontare caso per caso, informando (ma non vogliamo suggerire soluzioni) i vari soggetti coinvolti di tale implementazione/funzionalità.

Assunti

Come sappiamo l’integrazione della presenza dei vari inquilini autorizzati presso Home Assistant avviene tramite l’uso del componente “Device Tracker” declinato tramite le varie piattaforme ad esso collegate (sebbene, ormai, sia universalmente utilizzata la sola app ufficiale “Home Assistant Companion“). Tipicamente ogni inquilino ha il proprio smartphone e, quando viene rilevata la presenza/assenza in casa, Home Assistant ne è consapevole. Tale presenza può essere rilevata implementando una o più delle piattaforme sopracitate; la cosa non è oggetto della presente guida, la quale assume la presenza in configurazione delle seguenti due entità di tipo “Device Tracker”:

  • device_tracker.marco
  • device_tracker.daniela

le quali rappresentano, appunto, lo stato di presenza di due ipotetici inquilini, Marco e Daniela.

Anche in termini di “notifiche“, su Home Assistant c’è da sbizzarrirsi. Entità di tipo “Notifications“, infatti, permettono di inviare notifiche in tanti modi diversi in base alle piattaforme collegate al componente utilizzate; per questa guida assumeremo l’avvenuta integrazione con Telegram, noto sistema di messaggistica privato (ma è solo una scelta arbitraria, assolutamente esemplificativa).
Assumeremo pertanto la presenza delle seguenti entità:

  • notify.marco
  • notify.daniela

nonché la presenza di una entità di gruppo, notify.famiglia, che invii contemporaneamente eventuali notifiche ad entrambe le entità di notifica di cui sopra.

N.b. Ovviamente le tecniche descritte nella presente guida prescindono da quelle che siano le tecnologie scelte per dotarsi delle proprie “Device Tracker” e “Notifications“.

Cambio di stato

Ciò che innesca l’automazione che andremo a scrivere sarà – banalmente – il cambio di stato di una o più delle entità di tipo “Device Tracker”. Gli stati possibili sono:

  • home
  • not_home

i quali non hanno bisogno di spiegazione. Nel trigger, quindi,
Per quanto riguarda la notifica, includeremo nel blocco action una personalizzazione tale che, in base al cambio di stato, fornisca un messaggio piuttosto che un altro.

Ecco la configurazione:

automation:
- alias: "Notifica ingressi e uscite"
  trigger:
    platform: state
    entity_id: device_tracker.marco, device_tracker.daniela
  condition:
    condition: template
    value_template: '{{ trigger.to_state.state != trigger.from_state.state }}'
  action:
    service: notify.famiglia
    data:
      title: "Domotica"
      message: >
        {% if trigger.to_state.state == 'home' %}
        Rilevato ingresso in casa da parte di {{ trigger.from_state.attributes.friendly_name }}
        {% elif (trigger.to_state.state == 'away' or trigger.to_state.state == 'not_home') and trigger.from_state.state == 'home' %}
        Rilevata uscita da parte di {{ trigger.from_state.attributes.friendly_name }}
        {% endif %}

La spiegazione è piuttosto semplice.

Il blocco trigger utilizza il cambio di stato delle entità “Device Tracker”, qualunque sia il cambio di stato, come innesco. La condition, invece, verifica che il cambio di stato sia tra due stati diversi (e non il ripetersi di uno stato già consolidato); il blocco action, infine, valuta quale sia il cambio di stato utilizzando la funzione trigger.to_state.state: in caso sia diventato “home”, invia un certo messaggio di notifica, altrimenti ne manda un altro.

Entrambi i messaggi sono arricchiti con il nome associato nel campo attributo “Friendly name” dell’entità (funzione trigger.from_state.attributes.friendly_name).

Altre location

GPS PinSe le piattaforme utilizzate per la creazione dei “Device Tracker” dispongono del supporto GPS è possibile (eg. Home Assistant Companion, l’app ufficiale di Home Assistant), tramite l’implementazione in configurazione delle “zone“, definire dei punti geografici d’interesse. Quando un “Device Tracker” (dotato di posizione GPS) si trova in quella zona, il suo stato ne assume il nome.

Ipotizziamo di definire in configurazione una zona chiamata “Work” che rappresenti in nostro luogo di lavoro: quando ci troveremo a casa, il nostro Device Tracker (dotato di posizione GPS) avrà come stato “home”; uscendo, assumerà “away”, ma quando arriveremo a lavoro assumerà “wor”.

Va da sé che l’implementazione dell’automazione di cui sopra possa venire così variata:

automation:
- alias: "Notifica ingressi e uscite"
  trigger:
    platform: state
    entity_id: device_tracker.marco, device_tracker.daniela
  condition:
    condition: template
    value_template: '{{ trigger.to_state.state != trigger.from_state.state }}'
  action:
    service: notify.famiglia
    data:
      title: "Domotica"
      message: >
        {% if trigger.to_state.state == 'home' %}
        Rilevato ingresso in casa da parte di {{ trigger.from_state.attributes.friendly_name }}
        {% elif (trigger.to_state.state == 'away' or trigger.to_state.state == 'not_home') and trigger.from_state.state == 'home' %}
        Rilevata uscita da parte di {{ trigger.from_state.attributes.friendly_name }}
        {% else %}
        {{ trigger.from_state.attributes.friendly_name }} ha raggiunto la località {{ trigger.to_state.state }}
        {% endif %}

aggiungendo il blocco else facciamo in modo che qualunque stato dei “Device Tracker” diverso da “home” e “away” (quindi riconducibili alle “zone” definite in configurazione” venga notificato come “raggiungimento di tale zona”. Il blocco superiore (grazie alla presenza di “and trigger.from_state.state == ‘home’“) evita false comunicazioni di rientro a casa quando semplicemente si lascia una location diversa da casa (eg. da “work” ad “away“)

Questo tipo di implementazione può essere usato per esempio per accertarsi – senza patemi d’animo – che i figli raggiungano la scuola, che un anziano abbia raggiunto una location specifica, che la propria compagna abbia raggiunto il luogo di lavoro e così via. Sempre, ovviamente, nel rispetto delle persone coinvolte.

Da e per luoghi specifici

Se si vuole scrivere un’automazione non generica ma specifica (per esempio “quando torno a casa“), il codice differisce solo nell’aggiunta di una chiave nel trigger:

automation:
- alias: "Entrando a casa"
  trigger:
    platform: state
    entity_id: device_tracker.marco
    to: "home"
  condition: []
  action: []

In questa semplice automazione il “Device Tracker” di Marco, quando cambia stato a “home“, innesca l’automazione (la quale in questo caso non esegue nulla perchè il blocco action è vuoto – ovviamente, la personalizzazione va fatta in base a ciò che si vuol fare.

In caso, invece, si voglia eseguire qualcosa quando si “lascia” un luogo (ipotizziamo la presenza di una location chiamata “Lavoro“), l’automazione sarebbe la seguente:

automation:
- alias: "Uscendo da lavoro"
  trigger:
    platform: state
    entity_id: device_tracker.marco
    from: "Lavoro"
  condition: []
  action: []

Stesso discorso fatto prima: la personalizzazione sull’action potrà esser quella che si preferisce.


⚠️ 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. Se ti sei perso, a tua disposizione c'è la mappa.