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

5 minuti di lettura

`

Scopi della guida
  • Rendere Amazon Alexa un sistema di notifica verbale domotica su Home Assistant
  • Livello di difficoltà: bassa
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti
Dispositivi fisici utilizzati:
  • Il dispositivo sul quale risiede Home Assistant
  • Amazon Echo (qualsiasi modello o qualsiasi modello di smart speaker che monti Amazon Alexa come software integrato)
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.3

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 integrare Amazon Alexa quale sistema di notifica, al fine di generare un servizio “Notification” il quale ci consenta 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.”
“Bentornati a casa!”

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

Prerequisiti

Integrare Alexa quale elemento di notifica presso Home Assisatant è 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, dotarsi di un elemento di notifica è semplice. È infatti sufficiente aggiungere alla configurazione Home Assistant il seguente blocco:

notify:
  - platform: alexa_media
    name: alexa_media

per poi riavviare Home Assistant.
Dopo l’avvenuto riavvio, nella lista dei servizi (“Developer Tools / Services”) apparirà una nuova entità 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 “Developer Tools / Services” il servizio “notify.alexa_media“.

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:

messageIl messaggio da far pronunciare ad Alexa.
titleTitolo da visualizzare in presenza di display (solo modelli che ne siano dotati) e/o come titolo dell’eventuale notifica push
dataContiene tipologia di notifica (“type“) e metodo (“method“).

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

methodValido solo per type:announce. Può essere spoken (fa parlare Alexa), show (visualizza su display, se presente) oppure all (entrambe).
targetIl 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.

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.

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

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


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