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

4 minuti di lettura
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:
  • Il dispositivo sul quale risiede Home Assistant
  • gli smartphone degli inquilini
GUIDA maggiormente indicatA 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: 1.1

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. 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.

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
  • away (talvolta 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_template:
      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. Life360, oppure Home Assistant Companion per iOS), 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_template:
      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.


Home Assistant Official LogoATTENZIONE: 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.


Please comment below