Informazioni personalizzate via Alexa tramite flash briefing e Home Assistant

7 minuti di lettura
Scopi della guida
  • Definire presso Home Assistant dei set di informazioni predefinite da girare ad Amazon Echo/Alexa in modo da poter effettuare interrogazioni di stato della propria domotica tramite Smart Speaker
  • Livello di difficoltà: medio/alta
Concetti affrontati:
  • Configurazione cloud
  • Configurazione software
Componenti software utilizzate:
Prerequisiti
  • Home Assistant configurato e funzionante (minimo versione 0.62)
  • Home Assistant remotizzato su HTTPS (vedi “Abstract“)
  • Amazon Echo/Alexa configurato e funzionante e relativo account Amazon ad esso collegato
  • Amazon Echo/Alexa integrato su Home Assistant (vedi “Abstract“)
  • Un account personale Amazon (col quale sia configurata Alexa)
Dispositivi fisici utilizzati:
  • Il dispositivo sul quale risiede Home Assistant
  • Smartphone sul quale eseguire l’app Amazon Alexa (Android e/o iOS)
  • 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.1

Home Assistant Amazon-Echo-Plus

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.

Come spiegato in schede come quella legata alla piramide domotica o sul come usare al meglio dai propri Smart Speaker, l’idea di integrare Amazon Alexa al proprio HUB personale Home Assistant è sicuramente tra le migliori. Per farlo esistono due modalità, una facile (a pagamento) e una difficile (gratuita).


La presente guida è un affinamento dell’integrazione di Alexa con Home Assistant: mentre tale integrazione è utile a controllare le entità definite i configurazione tramite comandi vocali, questa guida consentirà l’utente di sfruttare il cosiddetto sommario notizie di Alexa (in inglese flash briefing) per ottenere delle informazioni personalizzate provenienti dalla propria domotica personale basata su Home Assistant.

Spieghiamoci meglio.

Mettiamo di possedere un bel giardino e di aver provveduto a domotizzare e integrare su Home Assistant l’impianto di irrigazione. Poniamo inoltre che Home Assistant disponga di un sensore che misuri il livello di umidità del terriccio del giardino nonché dei sensori relativi alle previsioni del tempo, diciamo Dark Sky.

Tramite la presente guida sarebbe possibile definire una flash briefing tale da fornire in base ad un’analisi automatica, predefinita, basata sull’umidità del terreno, sul fatto che abbia o non abbia piovuto (e se lo farà), sull’ultima irrigazione artificiale effettuata se sia il caso o meno di irrigare, del tipo:

Il prato è abbastanza umido, ha piovuto oggi. Fossi in te non irrigherei.
oppure
Il prato è secco e non è prevista pioggia nelle prossime 12 ore, provvedi ad irrigare.

o frasi del genere.

Un’altro esempio potrebbe essere semplicemente quello di farsi riferire da Alexa lo stato ambientale della casa:

La temperatura media in casa è di 22 gradi, l’umidità relativa media è del 45%, la qualità dell’aria è eccellente.

E via così.


In questa guida simuleremo la necessità di ottenere da Alexa l’analisi della presenza (o meno) degli inquilini e la temperatura del frigo. Sono solo due esempi: come sempre, il limite è la fantasia.

Si parte

Prerequisiti

Per eseguire la seguente guida è strettamente necessario che:

  • Alexa sia già integrata con Home Assistant:
  • Home Assistant sia raggiungibile da remoto con protocollo HTTPS (se si è integrata Alexa tramite la procedura difficile, questo passo è certamente già smarcato – in caso diverso è necessario applicare questa guida);
  • Home Assistant sia raggiungibile da remoto anche da porta 443 (qualunque sia la porta configurata sull’istanza dell’HUB è necessario che il port-forwarding presso il proprio router/modem “giri” la porta esterna 443 verso di essa).
    Su tale argomento consigliamo la lettura di questa guida.

Assunzioni

Nella presente guida descriveremo il processo di definizione di una skill Alexa (appunto, di tipo flash briefing) la quale riporti due diverse analisi:

  • una che fornisca informazioni rispetto a dove si trovino gli inquilini;
  • un’altra che ci comunichi la temperatura del frigo.

N.b. Ovviamente si tratta solo di esempi per far comprendere il processo; la definizione della flash briefing è legata alla propria fantasia.

A mo’ d’esempio assumeremo l’esistenza in configurazione Home Assistant delle seguenti entità:

  • device_tracker.marco (entità di tipo “Device Tracker” rappresentate la posizione geografica dell’utente Marco);
  • device_tracker.daniela (entità di tipo “Device Tracker” rappresentate la posizione geografica dell’utente Daniela);
  • sensor.temperatura_frigo (entità di tipo “Sensor” rappresentante la temperatura istantanea all’interno del frigorifero rilevata con un qualunque sensore wireless, tipo lo Xiaomi).

Si assume inoltre che sia stato integrato in configurazione il componente “Zone” per definire delle zone specifiche dove solitamente Marco e Daniela si trovano (eg. Lavoro, Scuola ecc.).

Home Assistant

API

Se si è provveduto a integrare Alexa a Home Assistant tramite la modalità gratuita, si può passare oltre.

Diversamente, accertarsi di avere in configurazione (ed eventualmente provvedere ad inserirla) la seguente entry:

api:

Riavviare Home Assistant.

HTTP

Assicurarsi che, nel blocco “http:” pressola configurazione Home Assistant sia presente (valorizzato), la chiave “api_password“. Così non fosse, provvedere a inserirla valorizzando una password arbitraria e a riavviare successivamente l’HUB.
Per l’esempio di questa guida assumeremo che tale password abbia valore:

dsgqlhqhgeht43hfkjh3iu

FLASH BRIEFING

È in questa fase che si definisce cosa e come Alexa comunicherà determinate informazioni; è qui che interviene la fantasia dell’utente, combinata ovviamente alle esigenze proprie e agli elementi a propria disposizione.

Definiamo quindi le flash briefing, nel caso dell’esempio di questa guida, due specifiche: “Stato presenza” e “Temperatura Frigo“.

alexa:
  flash_briefings:
    statopresenza:
      - title: Stato presenza
        text: >
          {%- if is_state('device_tracker.marco', 'home') and
                 is_state('device_tracker.daniela', 'home') -%}
            Siete entrambi in casa!
          {%- else -%}
            Marco si trova a {{ states("device_tracker.marco") }}
            e Daniela si trova a {{ states("device_tracker.daniela") }}
          {% endif %}
        display_url: "https://developer.amazon.com/it/docs/flashbriefing/flash-briefing-skill-api-feed-reference.html"
    temperaturafrigo:
      - title: Temperatura Frigo
        text: La temperatura del frigorifero è di {{ states.sensor.temperatura_frigo.state|float }} gradi
        display_url: "https://developer.amazon.com/it/docs/flashbriefing/flash-briefing-skill-api-feed-reference.html"

Riavviare Home Assistant.

N.b. il campo display_url è un campo strettamente necessario. Può essere valorizzato con un URL qualunque, basta che ci sia.

A questo punto se tutto è stato configurato correttamente l’istanza Home Assistant esporrà due payload in notazione JSON richiamabili tramite URL.

Sempre nel solco dell’esempio di questa guida, i due URL saranno:

https://mio_dominio.duckdns.org/api/alexa/flash_briefings/statopresenza?api_password=dsgqlhqhgeht43hfkjh3iu

https://mio_dominio.duckdns.org/api/alexa/flash_briefings/temperaturafrigo?api_password=dsgqlhqhgeht43hfkjh3iu

Gli URL sono così composti:

  • https://
  • FQDN del proprio indirizzo esterno Home Assistant (non indicare alcuna porta oppure indicare :433, porte diverse non sono consentite dalla skill presso AWS – vedi prerequisiti)
  • /api/alexa/flash_briefings/
  • il nome della flash briefing definita in configurazione, in questo caso:
    • statopresenza
    • temperaturafrigo
  • ?api_password=
  • password API definita con la chiave “api_password” nel blocco “http:” presente in configurazione.

Aprendo il browser e puntando ad un URL così definito, la risposta DEVE sempre essere del seguente tipo:

[
  {
    mainText: "La temperatura del frigorifero è di 5.7 gradi",
    redirectionURL: "https://developer.amazon.com/it/docs/flashbriefing/flash-briefing-skill-api-feed-reference.html",
    titleText: "Temperatura Frigo",
    uid: "bb9a5e6a-4ed3-4797-803f-4bc095ae0dab",
    updateDate: "2019-04-21T20:46:45.0Z"
  }
]

Qualunque altro tipo di riposta non consentirà il funzionamento della skill che andremo a definire presso AWS, e quindi di tutto il meccanismo che stiamo realizzando, quindi prima di avanzare oltre assicurarsi di aver ottenuto tale risultato.

Creazione Alexa Flash Briefing Skill

Terminata la configurazione lato Home Assistant è necessario creare una Alexa Flash Briefing Skill, “ponte” che utilizzeremo dalla nostra domotica verso Alexa.

Collegarsi all’indirizzo https://developer.amazon.com/alexa/console/ask utilizzando poi la propria utenza Amazon.com/.it per autenticarsi. Lo scopo è quello di andare a definire una skill di tipo flash briefing ad hoc per il nostro ambiente.

A questo punto, apertasi la pagina principale della “Console degli sviluppatori“, cliccare su “Create Skill“:

Amazon Console degli sviluppatori - Create Skill

N.b. in caso si sia integrata precedentemente Alexa tramite AWS (metodo gratuito), nella lista sarà già presente un’altra skill (la quale non va modificata). Negli screenshot proposti in questa guida questa seconda skill è presente ed è chiamata “haaska”.

Nella pagina che seguirà indicare il nome della skill (quel che si preferisce, in questo esempio “inDomus“) e “Flash Briefing” come tipologia:

Alexa Flash Briefing - step 1Una volta cliccato su “Create Skill” ci si troverà nella pagina di dettaglio della skill flash briefing. Nel campo “Custom Error Message” indicare “Problemi con la skill“, poi cliccare su “Add new feed“:

Alexa Flash Briefing - step 2Questo darà accesso a un editor in grado di indicare gli estremi delle nostre flash briefing precedentemente definite presso su Home Assistant. Questa procedura è ripetersi ogni qual volta si abbia necessità di aggiungere una nuova flash briefing alla nostra configurazione.

Alexa Flash Briefing - step 3

In questa schermata andremo ad indicare le seguenti informazioni:

Preamble“Da Home Assistant” (è la frase che Alexa pronuncerà andando a leggere le informazioni della flash briefing – può ovviamente esser personalizzata)
NameIl nome della flash briefing defiita in configurazione Home Assistant (eg. “Temperatura frigo”)
Content update frequencyHourly
Content typeText
Content genreOther (o altro, a scelta)
FeedL’URL presso il quale la skill recupererà le informazioni testuali, ovvero quello definito precedentemente
Feed IconUn’icona, a scelta, se disponibile

Cliccare su “Add” e, se non è necessario inserire nuove flash briefing, cliccare su “Save” in alto a destra.
La schermata dovrebbe apparire più o meno così:

Alexa Flash Briefing - step 4

In questo esempio, le flash briefing sono, come previsto, due.

App Alexa

A questo punto è necessario aprire la propria app Alexa su smartphone/tablet, la quale solitamente utilizziamo per amministrare la configurazione dello/degli Smart Speaker presenti in casa.

Cliccare in alto a sinistra (le tre righette) e cliccare su “skill“.

A questo punto provvedere ad attivare la propria skill flash briefing (nell’esempio chiamata “inDomus”) come da sequenza che segue:

Questo slideshow richiede JavaScript.

Uso

A questo punto la/le flash briefing sono pronte all’uso.
Basterà, infatti, pronunciare “Alexa, fammi sentire il sommario” per ottenere le informazioni provenienti dalla propria domotica Home Assistant.

Altro esempio

Un altro esempio più venire dalla volontà di voler ottenere da Alexa un ricapitolo rapido dello stato ambientale della propria casa. Poniamo di avere più sensori termici e di umidità distribuiti in giro per casa, più un sensore di qualità dell’aria (eg. Broadlink A1 e-Air): sarebbe carino ottenere da alexa una risposta del tipo:

La temperatura media in casa è di X gradi, l’umidità relativa media del Y%, la qualità dell’aria è..

La flash briefing da realizzare presso Home Assistant sarebbe all’incirca così:

alexa:
  flash_briefings:
    ambientale:
      - title: "Stato ambientale casa"
        text: >
          La temperatura media in casa è di {{ ((states("sensor.temperatura_1")|float + states("sensor.temperatura_2")|float )/2)|float|round(1) }} gradi,
          l'umidità relativa media è del {{ ((states("sensor.umidita_1")|float + states("sensor.umidita_2")|float )/2)|int }}%. La qualità dell'aria è {{ states.sensor.air_quality.state }}

Ovviamente sarebbe poi sufficiente aggiungere la flash briefing alla skill AWS nelle metodologie espresse nel presente progetto.


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.

🔻 Clicca QUI per commentare l'articolo. 🔻