Alexa_home_assistant/README.md
2025-06-28 17:08:41 +08:00

501 lines
No EOL
37 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Integrare Home Assistant ad Amazon Alexa (via haaska e AWS) - inDomus.it
* Scopi della guida:Integrare gratuitamente Home Assistant allecosistema Amazon Alexa al fine di controllare, tramite comandi vocali, la propria domotica personale. Metodo alternativo ad altri possibiliLivello di difficoltà: AltoCategoria dintegrazione: Cloud PushConcetti affrontati:Configurazione softwareComponenti software utilizzate:Home AssistanthaaskaAmazon AWSApp “Amazon” (per Android e/o iOS): GUIDA INDICATA a UTENTI CON ISTALLAZIONE:
* Prerequisiti:Home Assistant configurato e funzionanteHome Assistant remotizzato via HTTPS (spiegato dopo)Amazon Echo/Alexa configurato e funzionante e relativo account Amazon ad esso collegatoUn account personale AmazonDispositivi fisici utilizzati:Il computer sul quale è in esecuzione Home AssistantSmartphone sul quale eseguire lapp “Amazon Alexa” (Android e/o iOS)Amazon Echo (qualsiasi modello o qualsiasi modello di smart speaker che monti Amazon Alexa come software integrato):
* Scopi della guida:Integrare gratuitamente Home Assistant allecosistema Amazon Alexa al fine di controllare, tramite comandi vocali, la propria domotica personale. Metodo alternativo ad altri possibiliLivello di difficoltà: AltoCategoria dintegrazione: Cloud PushConcetti affrontati:Configurazione softwareComponenti software utilizzate:Home AssistanthaaskaAmazon AWSApp “Amazon” (per Android e/o iOS): 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; gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione; 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; se hai bisogno di orientarti, c'è la mappa.
* Prerequisiti:Home Assistant configurato e funzionanteHome Assistant remotizzato via HTTPS (spiegato dopo)Amazon Echo/Alexa configurato e funzionante e relativo account Amazon ad esso collegatoUn account personale AmazonDispositivi fisici utilizzati:Il computer sul quale è in esecuzione Home AssistantSmartphone sul quale eseguire lapp “Amazon Alexa” (Android e/o iOS)Amazon Echo (qualsiasi modello o qualsiasi modello di smart speaker che monti Amazon Alexa come software integrato):
* Scopi della guida:Integrare gratuitamente Home Assistant allecosistema Amazon Alexa al fine di controllare, tramite comandi vocali, la propria domotica personale. Metodo alternativo ad altri possibiliLivello di difficoltà: AltoCategoria dintegrazione: Cloud PushConcetti affrontati:Configurazione softwareComponenti software utilizzate:Home AssistanthaaskaAmazon AWSApp “Amazon” (per Android e/o iOS): Revisione guida: 5.9
* Prerequisiti:Home Assistant configurato e funzionanteHome Assistant remotizzato via HTTPS (spiegato dopo)Amazon Echo/Alexa configurato e funzionante e relativo account Amazon ad esso collegatoUn account personale AmazonDispositivi fisici utilizzati:Il computer sul quale è in esecuzione Home AssistantSmartphone sul quale eseguire lapp “Amazon Alexa” (Android e/o iOS)Amazon Echo (qualsiasi modello o qualsiasi modello di smart speaker che monti Amazon Alexa come software integrato):
![Home Assistant - Alexa](https://i0.wp.com/indomus.it/wp-content/uploads/Home-Assistant-Alexa-1.png?resize=800%2C286&ssl=1 "Home Assistant - Alexa")
Abstract
--------
Lavvento sul mercato degli [Smart Speaker](https://indomus.it/nozioni-di-base/strumenti-di-gestione-finale/#assistentipersonali) sta lentamente cambiando le abitudini di molti che, quotidianamente, prendono dimestichezza e familiarità **con la possibilità di interagire con un vero e proprio assistente personale** usando semplicemente voce e linguaggio naturale.
[**Amazon Echo**](https://indomus.it/componenti/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.
Home Assistant, HUB personale re delle integrazioni, può a sua volta essere integrato con qualunque smart speaker che utilizzi Amazon Alexa. **Quindi perché**, dato che molte componenti domotiche dichiarano [una diretta compatibilità](https://indomus.it/focus/compatibile-con-che-significa-davvero-nella-domotica/) con lecosistema Amazon Alexa (e che quindi possono essere controllate “di fabbrica” da tale Smart Speaker) è utile integrarle via Home Assistant e poi, tramite esso, con Amazon Alexa? 
**Semplice**: perché tramite un HUB personale come Home Assistant siamo in grado di definire scenari, accessori virtuali, automazioni **non definibili altrimenti con luso separato delle singoli componenti**, oltre a essere in grado a integrare un insieme di componenti e servizi enormemente superiore rispetto allecosistema Alexa ([leggi lo **speciale**](https://indomus.it/formazione/home-assistant-come-capire-come-integrare-un-componente-domotico-o-meno/) sulle integrazioni Home Assistant).
Nel momento in cui si integra tale HUB personale (quindi Home Assistant nel caso specifico di questa guida) **su** Amazon Alexa, **si potranno controllare tutti i componenti e le [entità](https://indomus.it/formazione/le-entita-di-home-assistant-cosa-sono-e-come-si-usano/)** quali scenari (ed altro) in esso definiti tramite lassistente vocale. È uno dei tanti motivi per adottare un HUB personale per la propria domotica: questo concetto, semplice ma importante, lo abbiamo spiegato in dettaglio [**qui**](https://indomus.it/focus/usare-al-meglio-gli-smart-speaker-in-domotica/).
Gli elementi (definiti _domini_) definiti in configurazione Home Assistant e controllabili tramite integrazione su Amazon Alexa sono:
* **alarm control panel** (allarmi)
* [**automation**](https://indomus.it/formazione/le-automazioni-di-home-assistant-cosa-sono-e-come-si-usano/) (automazione)   accensione/spegnimento
* **camera** (telecamere)
* [**climate**](https://indomus.it/componenti/componente-home-assistant-climate/) (climatizzatori e termostati)
* [**light**](https://indomus.it/componenti/componente-home-assistant-lights/) (luci)
* **lock** (serrature)
* **media\_player** (riproduttori multimediali)
* [**script**](https://indomus.it/formazione/gli-script-di-home-assistant-cosa-sono-e-come-si-usano/) solo accensione/attivazione
* [**sensor**](https://indomus.it/componenti/componente-home-assistant-sensor/) (sensori)
e svariati altri, che vedremo sul finire di questa guida.
**N.b.** Per integrare Home Assistant ad Amazon Alexa (e viceversa) **esistono diverse strade**. Quella descritta in questa guida è una delle possibilità: prima di proseguire, si consiglia di leggere rapidamente [il **focus panoramico** dedicato al tema](https://indomus.it/formazione/integrare-home-assistant-ad-alexa-ed-alexa-a-home-assistant-panoramica-delle-possibilita/).
* * *
**ATTENZIONE**
la presente guida va attuata CON CALMA E **GRANDE** ATTENZIONE.
Non farlo significa perdere **il doppio del tempo** per doverla rifare da capo: lerrore è davvero dietro ogni angolo. Meglio con calma, _ma una volta sola._
 Si parte
---------
* [Prerequisiti](#prerequisiti)
* [Attivare API e Alexa](#apialexa)
* [Creazione TOKEN lunga durata](#token)
* [Amazon Developer Console](#amazondeveloperconsole)
* [Alexa Developer Console](#alexadeveloperconsole)
* [Amazon Web Services (AWS)](#aws)
* [Completamento Skill](#completamentoskill)
* [TEST](#test)
* [Definizione di domini ed entità](#domini) 
* [Aggiungere la Skill ad Alexa](#skillalexa)
### Prerequisiti
Come illustrato in testa, i pre-requisiti principali **sono**:
* versione di Home Assistant maggiore o uguale alla **0.78**;
* Home Assistant configurato per il controllo remoto **tramite protocollo HTTPS.**
Il secondo punto prevede che la propria istanza Home Assistant **sia raggiungibile da remoto** e tramite **protocollo HTTPS**.
Le guide disponibili per lottenimento di tale prerequisito sono:
* [guida **per qualsiasi installazione di  Home Assistant**, usando Reverse Proxy (gratuita e adatta alla stragrande maggioranza dei casi);](https://indomus.it/guide/collegarsi-da-remoto-a-home-assistant-via-reverse-proxy/)
* [guida per qualsiasi installazione di Home Assistant e **qualsiasi tipo** di connessione Internet, via **Cloudflare** (con un costo per lacquisto del dominio, ma adatta a tutti e **più affidabile**)](https://indomus.it/guide/collegarsi-da-remoto-a-home-assistant-via-reti-provider-tradizionali-o-che-usino-nat-via-cloudflare/).
**N.b.** A differenza di altre presenti in rete, la presente guida non prevede obbligatoriamente luso della porta 443 TCP “girata” verso la tradizionale TCP 8123 interna di Home Assistant, a meno che lutente non abbia scelto proprio quella porta (esterna) per raggiungere lHUB. Lapertura della porta 443 per altri scopi personali non ha, eventualmente, nulla a che vedere con la realizzazione della presente integrazione.
**Infine**, è (ovviamente) necessario che su Home Assistant **non** sia operativa [lintegrazione a pagamento tramite **Nabu Casa**](https://indomus.it/guide/integrare-amazon-echo-alexa-con-home-assistant-via-cloud/)., la quale eventualmente già permette di integrare Home Assistant su Alexa senza troppi mal di pancia. Eventualmente, disattivarla prima di cominciare con lesecuzione della presente guida.
### Attivare API e Alexa
In primis è necessario indicare a Home Assistant di attivare **i componenti “[API](https://www.home-assistant.io/integrations/api/)” e “[Alexa](https://www.home-assistant.io/integrations/Alexa/)“**.
Per farlo, la configurazione [del file configuration.yaml](https://indomus.it/guide/configuration-yaml-capire-il-file-di-configurazione-di-home-assistant/) è banale. Aggiungere:
```
api:
alexa:
smart_home:
```
Effettuata la modifica, **riavviare** Home Assistant.
* * *
A questo punto Home Assistant esporrà le proprie API allindirizzo:
**https://il\_tuo\_dominio:porta/api/alexa/smart\_home**
**N.b.** si noti come la **:porta** non debba essere indicata qualora si utilizzi, per laccesso remoto, un tunneling come per esempio da guida CloudFlare.
Tale indirizzo verrà usato dallintegrazione per interfacciare il cloud AWS alla nostra istanza di Home Assistant. Collegandosi ad esso tramite browser (e se tutto è configurato correttamente) si otterrà la risposta:
**405: Method not allowed**
Si tratta di un errore perfettamente **normale**, che denota sia labilitazione delle API per Alexa che un corretto funzionamento. Si tratta infatti una _request_ ad una risorsa che prevede il metodo POST, mentre collegandosi allindirizzo tramite browser viene di default eseguita tramite il metodo GET da qui lerrore. In sostanza, per proseguire oltre è paradossalemente necessario riscontrare tale errore. 
###### **INDIRIZZO RADICE**
Lindirizzo “radice” presso il quale vengono esposte le API del proprio Home Assistant è invece il seguente:
**https://il\_tuo\_dominio:porta/api**
Segnarselo: servirà più avanti.
**N.b.** si noti come la **:porta** non debba essere indicata qualora si utilizzi, per laccesso remoto, un tunneling come per esempio da guida CloudFlare.
### Creazione TOKEN lunga durata
A questo punto è necessario creare un “**TOKEN a lunga durata**“, ovvero una chiave applicativa daccesso valida per 10 anni. Per far ciò, da interfaccia Home Assistant cliccare sul **circolo** contenente la prima lettera del vostro username posta **in basso a sinistra nella colonna dellinterfaccia Home Assistant:**
![Nome utente su Lovelace UI Home Assistant](https://i0.wp.com/indomus.it/wp-content/uploads/Nome-utente-su-Lovelace-UI-Home-Assistant.png?resize=324%2C196&ssl=1 "Nome utente su Lovelace UI Home Assistant")
Una volta acceduto alla pagina, cliccare in alto su **“Sicurezza”,** scollare sul fondo fino a trovare **la seguente box**:
![Home Assistant - Token di accesso lunga vita](https://i0.wp.com/indomus.it/wp-content/uploads/Home-Assistant-Token-di-accesso-lunga-vita.png?resize=623%2C246&ssl=1 "Home Assistant - Token di accesso lunga vita")
Cliccare ora su “**CREA TOKEN**” e, alla richiesta del nome del token da creare, inserire “**haaska**“.
A questo punto **salvare** da qualche parte la stringa che verrà prodotta da Home Assistant (**attenzione**: non sarà possibile recuperarla successivamente, quindi salvarsela subito da parte).
### Amazon Developer Console
A questo punto è necessario iscriversi (se non lo si è già fatto) alla “**Amazon Developer Console**“, un sito satellite al classico Amazon.com/.it al quale è necessario essere già precedentemente iscritti.
Recarsi dunque presso il sito di **[Amazon Developer](https://developer.amazon.com/home.html)** e utilizzare il proprio username/password (le proprie credenziali di accesso di Amazon.com/.it) per entrare. Successivamente cliccare su “**Login with Amazon**” (in alto).
Il sito chiederà (qualora non sia stato già fatto in precedenza) di configurare il servizio “**Login with Amazon**“, il quale permette di utilizzare la propria username/password di Amazon.com/.it (tra laltro già usata per configurare il proprio ambiente Alexa) in tutti i siti “satellite” come, per lappunto, “**Amazon Developer Console**“:
Una volta ottenuto laccesso, impostare la lingua italiana (solitamente il selettore è in basso a sinistra), poi cliccare su “**Crea nuovo profilo di sicurezza**“.
Nei campi che verranno richiesti, inserire:
* **Nome del profilo di sicurezza**: “**HASSIO**” (o quel che si preferisce, è solo un nome descrittivo);
* **Descrizione del profilo di sicurezza**: “**HASSIO**” (o quel che si preferisce, è solo una descrizione);
* **URL del consenso della privacy**: quello che si crede, è indifferente, dato che la Skill che prepareremo non sarà pubblica ma privata:
[![Amazon Developer Console - Nuovo profilo di sicurezza](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Nuovo-profilo-di-sicurezza.png?resize=1096%2C658&ssl=1)](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Nuovo-profilo-di-sicurezza.png?ssl=1)
Cliccare su “**Salva**“.
Nella finestra che si aprirà. cliccare sulla rotellina in basso a destra e selezionare “**Impostazioni Web**“:
[![Amazon Developer Console - Impostazioni Web Profilo di sicurezza](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Impostazioni-Web-Profilo-di-sicurezza.png?resize=1103%2C627&ssl=1 "Amazon Developer Console - Impostazioni Web Profilo di sicurezza")](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Impostazioni-Web-Profilo-di-sicurezza.png?ssl=1)
La pagina che segue contiene le coordinate del proprio **profilo di sicurezza**:
[![Amazon Developer Console - Impostazioni Web Profilo di sicurezza - Dettagli](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Impostazioni-Web-Profilo-di-sicurezza-Dettagli.png?resize=1117%2C610&ssl=1 "Amazon Developer Console - Impostazioni Web Profilo di sicurezza - Dettagli")](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Developer-Console-Impostazioni-Web-Profilo-di-sicurezza-Dettagli.png?ssl=1)
**Lasciare aperta la finestra** e passare oltre.
[![Vetrina - Offerte del giorno](https://i0.wp.com/indomus.it/wp-content/uploads/Vetrina-Offerte-del-giorno.png?resize=518%2C269&ssl=1 "Vetrina - Offerte del giorno")](https://indomus.it/news/promozioni/la-vetrina-indomus-della-domotica-in-sconto-in-continuo-aggiornamento/)
### Alexa Developer Console
Messa da parte la pagina precedente, aprire una nuova tab/pagina e collegarsi al sito **[Alexa Developer Console](https://developer.amazon.com/alexa/console/ask)** utilizzando la propria utenza Amazon.com/.it per autenticarsi. Lo scopo è quello di andare a definire una “Skill” specifica per il nostro ambiente.
A questo punto, apertasi la pagina principale della “**Console degli sviluppatori**“, impostare la lingua italiana (anche qui solitamente in basso a destra) e cliccare su “**Crea Skill**“:
![Amazon Console degli sviluppatori - Crea Skill](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Console-degli-sviluppatori-Crea-Skill.png?resize=1305%2C720&ssl=1 "Amazon Console degli sviluppatori - Crea Skill")
Nella pagina che seguirà indicare **il nome della skill** (“haaska” o ciò che si preferisce), “**Smart Home**” come **tipologia** e “**Italian**” come “**Default language**“:
[![Amazon Console degli sviluppatori - Nuova skill](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Console-degli-sviluppatori-Nuova-skill.png?resize=1097%2C665&ssl=1 "Amazon Console degli sviluppatori - Nuova skill")](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Console-degli-sviluppatori-Nuova-skill.png?ssl=1)
Nella pagina che seguirà lasciare selezionato “**v3**“.
**Segnarsi da una parte** la stringa sotto la voce “**Your Skill ID**” (servirà più avanti).
[![Amazon Console degli sviluppatori - Nuova skill - Payload Version e Skill ID](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Console-degli-sviluppatori-Nuova-skill-Payload-Version-e-Skill-ID.png?resize=1113%2C658&ssl=1 "Amazon Console degli sviluppatori - Nuova skill - Payload Version e Skill ID")](https://i0.wp.com/indomus.it/wp-content/uploads/Amazon-Console-degli-sviluppatori-Nuova-skill-Payload-Version-e-Skill-ID.png?ssl=1)
**Lasciare aperta anche questa finestra** e passare oltre.
### Amazon Web Services (AWS)
Ora è necessario definire una risorsa _Lambda_ presso **AWS**.
Aprire una nuova tab/finestra e accedere come “**Root user**” (creando un account, in caso non lo si possieda, alla voce “**Create a new AWS account**“, perché su questo sito, a differenza dei precedenti, non si usano le stesse credenziali Amazon.com/.it) presso il sito [**Amazon Web Services**](https://console.aws.amazon.com/console/home).
**IMPORTANTE.** Leventuale creazione di un nuovo account prevede lobbligatorio inserimento di una carta di credito valida,  alla quale non verrà però addebitato alcun costo (laddebito di 1 dollaro post-inserimento è fittizio è necessario ad AWS solo per verificare la validità della carta stessa). La configurazione dettata dalla presente guida non prevede alcuna spesa, salvo successive variazioni nel tempo dei termini duso di AWS la cui lettura e accettazione è a carico dellutente che sottoscrive il servizio.
**Inoltre**, è chiaro che se lutente dovesse successivamente implementare altre funzionalità che assorbano risorse a pagamento AWS, tale carta verrà utilizzata per gli addebiti. Se volete stare sereni, utilizzate una carta ricaricabile, e comunque provvedete sempre a una verifica presso la sezione “fatturazione” di AWS per evitare sorprese causate da un cattivo uso del servizio che superino i confini gratuiti dello stesso: la funzione Lambda di AWS, usata allo scopo, è gratuita fino a un milione di richieste (più che sufficiente, tipicamente, per luso con Home Assistant), dopodiché risulta [a pagamento](https://aws.amazon.com/it/lambda/pricing/). 
Come già detto, **tenere sempre sottocchio i propri consumi è buona regola (oltre ad essere una responsabilità diretta e personale dellutente, come da contratto AWS che si accetta sottoscrivendo il servizio) per evitare spiacevoli sorprese.**
![AWS Amazon Web Services - Accesso](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Accesso-1.png?resize=377%2C573&ssl=1 "AWS Amazon Web Services - Accesso")
###### **IAM**
Una volta autenticati cliccare sulla voce “**Tutti i servizi**” (in alto) e selezionare la voce “**IAM**” sotto “**Sicurezza, identità, conformità**“. Poi, sulla sinistra, cliccare su “**Ruoli**” e infine “**Crea Ruolo**“.
![AWS Amazon Web Services - IAM](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-IAM-1.png?resize=1305%2C679&ssl=1 "AWS Amazon Web Services - IAM")
Nella pagina che si aprirà selezionare prima “**AWS Service**” e poi “**Lambda**“. Nellelenco seguente, cercare “**AWSLambdaBasicExecutionRole**“; una volta trovato, selezionare la voce e infine cliccare in basso su “**Successivo**“:
![AWS Amazon Web Services - IAM - New role - 2](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-IAM-New-role-2-1.png?resize=500%2C174&ssl=1 "AWS Amazon Web Services - IAM - New role - 2")
Nella pagina che segue, inserire “**lambda\_basic\_execution**” nel capo “**Nome ruolo**“; infine cliccare in basso “**Crea ruolo**“:
[![AWS Amazon Web Services - IAM - New role - 3](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-IAM-New-role-3b.png?resize=1094%2C632&ssl=1 "AWS Amazon Web Services - IAM - New role - 3")](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-IAM-New-role-3b.png?ssl=1)
###### **LAMBDA**
Cliccare sulla voce “**Servizi**” (in alto) e selezionare la voce “**Lambda**” sotto “**Calcolo**“.
**ATTENZIONE:** Ricevendo in risposta un messaggio tipo “_Your service sign-up is almost complete! Thanks for signing up with Amazon Web Services. Your services may take up to 24 hours to fully activate…_“, la causa (9 su 10) è data dal non aver inserito una carta di credito valida [allatto della creazione dellaccount](#ccimportant).
In alto a destra selezionate “**Europa (Irlanda)**” (**attenzione** a non dimenticare questo **fondamentale** passaggio):
[![AWS Amazon Web Services - Lambda](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Lambda.png?resize=1119%2C655&ssl=1 "AWS Amazon Web Services - Lambda")](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Lambda.png?ssl=1)
**N.b.** Da aprile 2020 nella lista delle zone è disponibile anche “**Europa (Milano)**“, ma il funzionamento con Alexa non è ancora disponibile per quella zona. Va quindi ancora scelta la zona “**Europa (Irlanda)**“.
Cliccare ora sul bottone arancione “**Crea una funzione**“, poi “**Crea funzione da zero**“, compilando i campi che seguono come da seguenti indicazioni:
* **Nome**: “haaska“;
* **Runtime**: “Python 3.9“;
* **Architettura**: “x86\_64“;
* **Modifica del ruolo di esecuzione predefinito**: “Selezionare un ruolo esistente“;
* **Ruolo esistente**: “lambda\_basic\_execution“:
Ciò fatto, cliccare su “**Crea funzione**“, in basso a destra, poi cliccare in alto su “**Copy ARN**“: tale codice verrà copiato negli appunti. Salvarlo da parte, come fatto in precedenza per lo Skill ID.
Nella schermata successiva relativa alla “**Panoramica della funzione**” cliccare su “**Aggiungi trigger**“: 
![AWS Amazon Web Services - Lambda - Aggiungi trigger](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Lambda-Aggiungi-trigger-2.png?resize=834%2C564&ssl=1 "AWS Amazon Web Services - Lambda - Aggiungi trigger")
selezionando poi “**Alexa Smart Home**“:
**N.b.** In caso la voce “Alexa Smart Home” **sia assente**, questo sarà perché [precedentemente](#country-lambda) è stato impostato un profilo diverso da “**Europa (Irlanda)**“.
Nel campo “**ID Applicazione**” della configurazione del Trigger inserire la “**Skill ID**” [precedentemente ottenuta](#skillid) (eg. “**amzn1.ask.skill.2e4e….**“) e verificare che sia selezionato “Abilita trigger”.
Cliccare poi sul bottone “**Aggiungi**“. Spostarsi ora sul tab “**Codice**“, cliccare a destra su “**Carica da…**” per provvedere ad inviare ad AWS il file **haaska.zip** scaricabile [presso questo **link**](https://github.com/mike-grant/haaska/releases/download/1.1.0/haaska_1.1.0.zip).
* * *
Assicurarsi che le voci “**Runtime**” e “**Gestore**“, sotto “**Impostazioni Runtime**” (in basso), devono essere rispettivamente impostate “**Python 3.9**” e “**haaska.event\_handler**“. In caso questi campi non fossero così impostati, correggerli come indicato.
**ATTENZIONE**: Non sbagliare questo passaggio (così come gli altri)! Indicando un **handler** diverso, lintegrazione **non funzionerà.**
Spostarsi su “**Function code**” (codice della funzione), cliccare sul file “**config.json**“.
Avere a questo punto cura di modificare il file inserendo:
* nel campo “**url**“, [lindirizzo “radice”](#apiroot) presso il quale Home Assistant espone le proprie API ([come sopra spiegato](#apiroot)  attenzione che sia **https** e non **http**);
* nel campo “**bearen\_token**“, la stringa generata nello [step relativo al TOKEN lunga durata](#token).
Un JSON sarà, per esempio:
```
{
"url": "https://il_tuo_dominio:8123/api",
"bearer_token": "eyJ0eXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"debug": false,
"ssl_verify": true,
"ssl_client": []
}
```
**N.b.** Si noti ed è un dettaglio importante come lindirizzo vari da “**http**” a “**https**“.
Al termine, cliccare su **Deploy.**
### Completamento Skill
Tornare al [recap della skill](#skillid) e inserire nel campo “**Default endpoint**” il valore del campo “**arn**” copiato nel punto precedente.
Selezionare, sotto, la checkbox “**Europe, India**” (attenzione a non dimenticare questo passaggio). Anche qui copiare lo stesso “**arn**“.
In alto a destra nella pagina, cliccare su “**Save**“.
Ora cliccare sulla colonna di sinistra la voce “**ACCOUNT LINKING**“.
Nella pagina che si aprirà, inserire i seguenti valori:
* **Your Authorization URI**: “**https://www.amazon.com/ap/oa**“
* **Access Token URI**: “**https://api.amazon.com/auth/o2/token**“
* **Your Client ID**: il valore del CLIENT ID ottenuto dalla [pagina di recap](#clientid) del proprio profilo di sicurezza;
* **Your CLIENT Secret**: il valore CLIENT SECRET ottenuto dalla pagina di recap del proprio profilo di sicurezza;
* **Your Client Authentication Scheme**: “**HTTP BASIC (Recommended)**“;
* Cliccare su “**\+ Add Scope**” e inserire “**profile:user\_id**“.
In alto a destra nella pagina, cliccare su “**Save**“.
**Lasciare aperta anche questa finestra**: a breve ci serviranno i “**Redirect URLs**” apparsi in fondo a questa pagina: tornare alla [pagina di recap](#clientid) del proprio profilo di sicurezza, cliccare su “**Modifica**” e inserire, alla voce “**URL di ritorno consentiti**“, tutti e tre i “Redirect URLs”
Una volta completato, cliccare su “**Salva**“.
### TEST
Tornare alla pagina di definizione della “_Lambda_” e cliccare su “**Selezione eventi di test**” e poi “**Configura eventi di test**“.
Si aprirà una finestra simile a questa:
[![AWS Amazon Web Services - Lambda - TEST](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Lambda-TEST.png?resize=828%2C455&ssl=1)](https://i0.wp.com/indomus.it/wp-content/uploads/AWS-Amazon-Web-Services-Lambda-TEST.png?ssl=1)
Nel campo “**Nome evento**” inserire “**Test**“.
Cancellare poi tutte le righe di test e sostituirle col testo che segue:
```
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-skill"
}
}
}
}
```
**N.b.** Se il JSON non risulta essere formattato in modo opportuno, cliccare su “**FORMAT**“.
Cliccare infine su “**Save changes**“.
A questo punto eseguire il test cliccando il bottone “**TEST**“: il responso dovrebbe essere positivo. Differentemente, ricontrollare tutti i passi sin qui attuati.
### Definizione di domini ed entità
**Prima** di concludere lintegrazione è buona regola specificare **anticipatamente** [nella configurazione Home Assistant](https://indomus.it/guide/configuration-yaml-capire-il-file-di-configurazione-di-home-assistant/) quali siano i domini e/o le entità da esporre verso Amazon Alexa.
**ATTENZIONE**: prima di effettuare qualsiasi modifica alla propria configurazione leggere **tutto** il paragrafo e capire di preciso cosa si sta per fare e perché. Inoltre: capendo quanto spiegato a seguire, si consiglia comunque di inserire almeno unentità nellelenco cosa che, diversamente, causerebbe erorre lato AWS .
Se le luci, diciamo, appartengono al dominio **light**, una singola entità luce appartenente a tale dominio potrebbe per esempio chiamarsi **light.cucina**.
I domini che Alexa è in grado di censire e controllare sono i seguenti:
* **alarm\_control\_panel** (allarmi)
* **alert** (avvisi di allarme)
* [**automation**](https://indomus.it/formazione/le-automazioni-di-home-assistant-cosa-sono-e-come-si-usano/) (automazione)   accensione/spegnimento
* **binary sensors** (sensori binari)
* **button**
* **camera** (telecamere)
* [**climate**](https://indomus.it/componenti/componente-home-assistant-climate/) (climatizzatori e termostati)
* **cover (**scuri)
* **device\_tracker**
* **event**
* **fan** (ventilatori) accensione/spegnimento
* [**group**](https://indomus.it/formazione/i-gruppi-di-home-assistant-cosa-sono-e-come-si-usano/) (gruppi)
* **humidifier**
* [**input boolean**](https://indomus.it/componenti/componente-home-assistant-input-boolean/) (input booleani)
* **input\_button**
* **input\_datetime**
* **input\_number** (input numerici)
* **input\_select**
* [**light**](https://indomus.it/componenti/componente-home-assistant-lights/) (luci)
* **lock** (serrature)
* **media\_player** (riproduttori multimediali)
* **number**
* **person**
* **remote**
* [**scene**](https://indomus.it/formazione/le-scene-di-home-assistant-cosa-sono-e-come-funzionano/)
* [**script**](https://indomus.it/formazione/gli-script-di-home-assistant-cosa-sono-e-come-si-usano/) solo accensione/attivazione
* **select**
* [**sensor**](https://indomus.it/componenti/componente-home-assistant-sensor/) (sensori)
* **siren**
* **switch**
* **timer** (cronometri)
* **vacuum** (aspirapolvere)
* **weather**
* **zone**
Per indicare cosa Alexa debba “vedere”, è possibile:
* indicare interi domini da includere o escludere;
* indicare specifiche entità da includere o escludere.
Per esempio, lutente potrebbe voler **escludere** tutte le luci e **includere**, invece, una sola, specifica. Oppure potrebbe voler includere un intero dominio, per escludere specificamente alcune entità e così via.
* * *
Tali inclusioni/esclusioni si effettuano **aggiungendo** un blocco di configurazione YAML [al file di configurazione di Home Assistant](https://indomus.it/guide/configuration-yaml-capire-il-file-di-configurazione-di-home-assistant/), sotto il blocco **alexa**, il quale può includere anche una sezione per configurare le speficiche entità in modo che Alexa le integri con delle specificità (per esempio, il nome).
Vediamo **un esempio concreto:**
```
alexa:
smart_home:
filter:
include_domains:
- switch
include_entities:
- light.cucina
- light.camera
exclude_domains:
- light
exclude_entities:
- switch.terrazzo
entity_config:
light.cucina:
name: "Nome personalizzato per Alexa"
description: "La luce della cucina"
switch.scale:
display_categories: LIGHT
```
Con questa configurazione desempio:
* **sono inclusi** nel dominio Amazon Alexa le entità relative alle luci **di cucina e camera**, sono inclusi **tutti gli interruttori**, tranne quello **del terrazzo**. Escluso in toto il dominio “**light**” (luci), tranne ovviamente quelle entità sopra incluse specificamente
* è stato personalizzato il comportamento/nome **della luce di cucina** e linterruttore **delle scale**.
Il campo **display\_categories** può essere personalizzato sulla base delle categorie [disponibili in ambito Alexa](https://developer.amazon.com/docs/device-apis/alexa-discovery.html#display-categories).
Infine, dopo lavvenuta modifica del file di configurazione di Home Assistant, **ricordarsi di riavviare lHUB.**
**N.b.** Si consiglia **caldamente** di escludere da subito **tutti i domini** previsti dallHUB ([qui](https://indomus.it/formazione/utilita-esportare-rapidamente-lelenco-domini-entita-di-home-assistant/) scopri come esportare tale lista) tramite il campo “**exclude\_domains**” e provvedere allaggiunta delle singole entità da esporre ad Alexa. tramite il campo “**include\_entities**“.
Questo per evitare che, di botto, Alexa integri praticamente qualsiasi cosa presente sullHUB anche e sopratutto roba inutile.
Per farlo, attuare da subito un file del genere:
```
alexa:
smart_home:
filter:
exclude_domains:
- alarm_control_panel
- alert
- automation
- binary_sensor
- button
- camera
- climate
- cover
- device_tracker
- fan
- group
- humidifier
- input_boolean
- input_button
- input_datetime
- input_number
- input_select
- light
- lock
- media_player
- number
- person
- remote
- scene
- script
- select
- sensor
- siren
- switch
- timer
- vacuum
- weather
- zone 
include_entities:
#includere progressivamente, in questa sezione, le entità da esporre ad Alexa
include_domains:
#includere progressivamente, in questa sezione, i domini da esporre ad Alexa
```
### Aggiungere la skill ad Alexa
**Ci siamo**: ora è possibile aggiungere la Skill appena creata **al proprio profilo Alexa**.
Dato che _de facto_ abbiamo creato una Skill (privata) ad hoc, basterà aprire lapp (Mobile o Web) Alexa, sfogliare la sezione “**Le tue skill**” sotto la voce “**Skill**“. Una volta trovata la propria skill autoprodotta (chiamata “**_haaska_**“, o differentemente come si sia scelto di chiamarla), selezionarla e cliccare su “**Abilita**“. Lapp chiederà di associare **un account**: utilizzare quello di Amazon.com/.it.
Al termine della procedura, eseguire la ricerca completa dei dispositivi (anche semplicemente chiedendo “Alexa, cerca nuovi dispositivi”). Questa nuova procedura provvederà **ad effettuare la discovery** **automatica** delle [entità](https://indomus.it/formazione/le-entita-di-home-assistant-cosa-sono-e-come-si-usano/) presenti su Home Assistant ed esposte ad Alexa in base alla configurazione [del paragrafo precedente](#domini).
Terminata questa procedura, complimenti: **Home Assistant sarà totalmente integrato ad Alexa.**
Questo slideshow richiede JavaScript.
Da qui in poi sarà possibile controllare le entità di Home Assistant esposte verso Alexa tramite comandi vocali. Ovviamente i comandi da dare **varieranno** molto in base alla tipologia di entità (i “domini” [di cui sopra](#domini)): per esempio, una lampadina si potrà accendere con un comando tipo “Alexa, accendi la luce della camera”, mentre un climatizzatore prevederà molti più comandi, come per esempio “_Alexa, imposta il climatizzatore su 25_“).
Un buon stratagemma, per comandi complessi, è quello di utilizzare script Home Assistant & routine Alexa, come spiegato [in questa **guida**](https://indomus.it/progetti/eseguire-sequenze-logiche-sulla-domotica-home-assistant-tramite-comandi-vocali-alexa/).
* * *
Per utilizzare invece Alexa **come riproduttore multimediale**, per sempio per “farla parlare” alla bisogna cosa molto diversa rispetto a quanto fatto con la presente guida quella giusta **è quella che segue**:
> [Integrare Amazon Alexa come “Media Player” su Home Assistant](https://indomus.it/guide/integrare-amazon-alexa-come-media-player-su-home-assistant/)
⚠️ Se di Home Assistant **ne sai poco** ma sei interessato a capirne di più, ti suggeriamo [di partire da **qui**](https://indomus.it/home-assistant/).
Questa pagina è redatta, manutenuta e aggiornata [dallo staff di inDomus](https://indomus.it/contatti/), un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, [sul **forum**](https://indomus.it/link/forum/ "FORUM") e [sulla **chat**](https://indomus.it/link/telegram-chat/ "TELEGRAM CHAT") del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. **Se ti sei perso**, a tua disposizione [c'è la **mappa**](https://indomus.it/mappa-contenuti/).