“Far parlare” Amazon Alexa come sistema di notifica domotica su Home Assistant

5 minuti di lettura

`

Scopi della guida:
  • Utilizzare Amazon Alexa come sistema di notifica verbale domotica su Home Assistant
  • Livello di difficoltà: bassa
  • Categoria d’integrazione: Cloud Polling
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.5

Amazon Alexa parla

Abstract

Amazon Echo è uno dei device di più ampio e riconosciuto successo. Come abbiamo spiegato tale smart speaker per funzionare utilizza il software Alexa, il quale è disponibile, anche per smart speaker prodotti da terze parti, oltre che come applicazione stand-alone per smartphone/tablet Android e iOS.

In primis, Alexa è in grado di eseguire ordini presso la domotica personale centralizzata e basata su Home Assistant grazie alla sua possibilità di essere integrato come assistente:

In secondo luogo, Alexa può anche essere integrata a Home Assistant come riproduttore musicale (Media Player), grazie all’integrazione fornita da un componente concepito ad hoc, in modo da poter innescare delle automazioni legate all’ascolto di contenuti.

Infine, la terza possibilità – la quale deriva dell’integrazione come Media Player di cui sopra – è quella di utilizzare Amazon Alexa quale target di notifica per il servizio “Notification,” il quale ci consentirà di fargli “dire la sua” a fronte di specifiche situazioni.
Farla parlare, insomma:

Ehi, ho rilevato un allagamento in bagno!
La lavatrice ha completato il ciclo di lavaggio.
Sistema d’allarme attivato in modalità notturna/presenza.”
“Hey! State superando i 3kw di assorbimento!
Bentornati a casa!
Silvia è uscita da scuola!

E via così. Il limite, come sempre, è la fantasia.

Prerequisiti

Integrare Alexa quale elemento di notifica presso Home Assistant è piuttosto semplice, ma prima è necessario provvedere all’integrazione della stessa quale riproduttore multimediale (Media Player). Non è obbligatorio, invece, aver già provveduto alla sua integrazione su Home Assistant quale assistente personale.

Per provvedere all’integrazione necessaria come Media Player, la guida è questa.

Configurazione

A valle dell’avvenuta integrazione come Media Player, di fatto ci si è dotati anche di un elemento di notifica.
Dopo l’avvenuto riavvio, nella lista dei servizi (“Strumenti per gli sviluppatori / Servizi“) apparirà infatti una nuova entità servizio di tipo “Notification” chiamata “notify.alexa_media“. In realtà il componente ne genera anche altre, ma per gli scopi della presente guida ci concentreremo su questa.

Funzionamento e test

Le modalità di notifica supportate sono tre:

  1. TTS – Si tratta della vecchia funzionalità text-to-speech. UPDATE: Tale modalità è deprecata e non più funzionante.
  2. Announce – Si tratte della nuova funzionalità text-to-speech per consentirci di “far parlare” Alexa. Inoltre consente di visualizzare (solo su modelli Echo Shows/Spots) un messaggio sul display. È possibile riprodurre messaggi su un singolo smart speaker oppure su tutti quelli presenti in casa, all’unisono, indicando in configurazione più target.
  3. Mobile Push – Permette di inviare notifiche push sull’app Alexa collegata allo smart speaker.

Per testare il funzionamento della modalità “Announce” (quindi per far parlare Alexa) selezionare presso “Strumenti per gli sviluppatori” > “Servizi” il servizio “notify.alexa_media“.

ATTENZIONE: Il servizio da usare è “notify.alexa_media” e nessun altro.

Nel campo “Service Data” inserire un payload di test come quello che segue (ulteriori precisazioni a seguire):

message: Questo è un messaggio di test
title: Titolo
data:
  type: announce
  method: spoken
target: media_player.alexa

spiegazione dei campi:

message Il messaggio da far pronunciare ad Alexa.
title Titolo da visualizzare in presenza di display (solo modelli che ne siano dotati) e/o come titolo dell’eventuale notifica push
data Contiene tipologia di notifica (“type“) e metodo (“method“).

type Tipo di notifica. Può essere tts, announce (emette un suono prima dei messaggi e accetta formattazioni di linguaggio SSML markup) o push (verso app mobile).

IMPORTANTE: affinché la modalità “announce” funzioni, nelle impostazioni del dispositivo target presso l’app Alexa la voce “Comunicazioni” dev’essere attiva.

method Valido solo per type:announce. Può essere spoken (fa parlare Alexa), show (visualizza su display, se presente) oppure all (entrambe).
target Il dispositivo Alexa verso il quale indirizzare la notifica. Può essere una lista. Per indicare il dispositivo/i può essere utilizzato il friendly name, il serial number, l’entity_id, o un gruppo Home Assistant. Si consigli di utilizzare il nome dell’entità Media Player generata tramite l’opportuna integrazione (eg. “media_player.alexa“). In caso si utilizzi un type:push (o anche type:all), la notifica arriverà anche all’app mobile Alexa collegata al target indicato.

Ora, premendo su “Call Service”, Alexa dovrebbe pronunciare il messaggio impostato nel campo “message“.

N.b. per la presente guida utilizzeremo sempre la solita entità target, ovvero “media_player.alexa“. Ovviamente l’utente avrà la libertà di personalizzare il target come spiegato poco sopra Inoltre, affinché il meccanismo funzioni, l’entità “media_player.alexa” (o quale sia il nome) dev’essere almeno in stato “standby“.

Notifica push

Un esempio di payload per far sì che la notifica venga inviata all’app mobile anziché riprodotto verbalmente dallo smart speaker, è il seguente:

message: Questo è una notifica di test
title: Notifica push
data:
  type: push
target : media_player.alexa

Uso

In automazione

Vediamo ora implementare una notifica vocale a fronte del ritorno in casa di qualcuno tramite un’automazione apposita.
Assumiamo di avere in configurazione le seguenti entità:

  • group.famiglia (un insieme di “Device Tracker” che rappresentano la posizione degli inquilini);
  • scene.ritorno_a_casa (una scena che, se innescata, accenda le luci dell’ingresso);
  • binary_sensor.contatto_ingresso (un sensore varchi posto sulla porta d’ingresso);
  • notify.alexa_media (il servizio generato con il componente usato in questa guida);
  • media_player.alexa (lo smart speaker target).

Implementiamo dunque un’automazione così strutturata:

automation:
- alias: "Ritorno a casa"
  trigger:
    platform: state
    entity_id: group.famiglia
    to: 'home'
  condition: []
  action:
    - service: scene.turn_on
      entity_id: scene.ritorno_a_casa
    - wait_template: "{{ is_state('binary_sensor.contatto_ingresso', 'on') }}"
      timeout: '00:30:00'
      continue_on_timeout: 'false'
    - delay:
        seconds: 5
    - service: notify.alexa_media
      data:
        target:
          - media_player.alexa
        data:
          type: announce
          method: spoken
        message: "Bentornati a casa."

Spieghiamo dunque l’automazione.

Il trigger è il cambio di stato dell’entità group.famiglia da uno stato qualunque a “home” – il quale si innesca quando anche solo uno degli inquilini sia rientrato nel perimetro di casa (vedi componente “Device Tracker“).

Nessuna condition verificata; le action, invece, sono svariate e come sempre sequenziali:

  • attiva la scena scene.ritorno_a_casa (qualsiasi cosa essa faccia: accendere le luci, disattivare un allarme ecc.);
  • si mette in attesa per 30 minuti aspettando che il sensore binary_sensor.contatto_ingresso rilevi l’apertura della porta (dopo 30 minuti l’automazione si interrompe);
  • al rilevamento dell’apertura della porta, attende cinque secondi;
  • infine, fa sì che Alexa pronunci un messaggio di bentornato.
MESSAGGI CASUALI

Per rendere minimamente meno robotica Alexa è possibile utilizzare una casualità nei messaggi da essa pronunciati.
Modificando l’esempio di cui sopra come segue:

    - service: notify.alexa_media
      data:
        target:
          - media_player.alexa
        data:
          type: announce
          method: spoken
        message: '{{ ["Bentornato a casa!", "Guarda chi si vede!", "Ciao", "Casa dolce casa."] | random }}'

l’utilizzo della lista unitamente alla particella “random” fa sì che ad ogni volta venga evocato il servizio in modalità announce venga scelto uno dei quattro messaggi dell’esempio.

ALTRE IMPLEMENTAZIONI

Ovviamente, come sempre, il limite è la fantasia. Trattandosi di un servizio, tale entità di notifica può essere usato non solo in automazione ma anche negli script e in altri ambiti di Home Assistant.

Far parlare Alexa può essere comodo in molti frangenti: non solo per notificare specifiche condizioni presenti in domotica, ma anche per notificare informazioni non strettamente legate alla domotica ma da essa censite (per esempio far presente quando diminuisce il prezzo della benzina del distributore sotto casa, piuttosto quando è previsto che cambino le condizioni meteo, e molto altro ancora).


 

Frigorifero tradizionale sotto controllo tramite la domotica Home Assistant


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


Telegram News Channel