Intergrare Amazon Alexa in Home Assistant gratuitamente (Guida Aggiornata)

Intergrare Amazon Alexa in Home Assistant gratuitamente (Guida Aggiornata)

di Antonio Mario Longo

02 Gennaio 2021

Home Assistant

Antonio Mario Longo

In questo articolo vedremo come esporre tutti i dispositivi e servizi presenti in Home Assistant su Alexa in maniera totalmente gratuita, senza necessariamente essere abbonati a Nabucasa, grazie al servizio Duckdns.

Componenti Necessari

Fasi da eseguire:

  1. Operazioni Preliminari in Home Assistant
  2. Creazione  Profilo di Sicurezza su Amazon Developer Console
  3. Creazione Account Amazon Web Services
  4. Creazione Ruolo IAM per l'esecuzione Lambda
  5. Aggiunta del codice alla funzione Lambda
  6. Creazione Skill su Alexa developer Console
  7. Aggiunta Trigger alla Funzione Lambda Creata
  8. Test della funzione Lambda
  9. Configurare l'endpoint del servizio Smart Home
  10. Collegare App Alexa con Home Assistant
  11. Mettere in sicurezza il sistema

Fase 1: Operazioni Preliminari in Home Assistant

  • Aprite il file configuration.yaml di Home Assistant e in fondo al file inserite queste righe: 
    alexa:
      smart_home:
        filter:
          include_domains:
            - light
    
    (Per ora abbiamo aggiunto solo il dominio light ma se volete potete fare riferimento a questo link nella sezione Alexa Smart Home Component Configuration per aggiungere i vari domini o entità a vostro piacere)
  • Aprite Home Assistant e dal menù laterale sinistro selezionate il vostro Username
  • Scorrete nella pagina destra sino alla voce Token di Accesso a lunga vita
  • Inoltre cliccate sul pulsante Crea Token e alla richiesta del nome digitate Alexa
  • Copiate il token che Home Assistant vi avrà fornito su un file di testo e mettetelo momentaneamente da parte
    crea token Alexa
  • Al termine di queste operazioni riavviate Home Assistant
  • Inoltre è fondamentale reindirizzare Home Assistant sul proprio modem/router sulla porta 443, quindi recatevi nel menù del vostro modem e regolate l'apertura della porta come dall'immagine sottostante: 
    Port Forwarding Router

Fase 2: Creazione  Profilo di Sicurezza su Amazon Developer Console

  • Dirigetevi su questo link ed effettuate il login con il vostro account che utilizzate per fare gli acquisti su Amazon
  • Successivamente dirigetevi sulla seguente pagina https://developer.amazon.com/settings/console/securityprofile/overview.html e cliccate sul tasto Crea un nuovo profilo di sicurezza
  • Nella pagina successiva digitate accanto a Nome del profilo di sicurezza: Domotica e alla voce Descrizione del profilo di sicurezza: scrivete Dialogo tra Home Assistant e Alexa
  • Terminato il tutto cliccate su Salva 
    Creazione Profilo di Sicurezza

Fase 3: Creazione Account Amazon Web Services

  • Recatevi al seguente indirizzo: https://aws.amazon.com/it/
  • Volgete lo sguardo sul tasto posizionato in alto a destra e cliccate sul pulsante arancione Accedi alla Console
  • Nella nuova pagina che si aprirà cliccate su Create  a new AWS Account
  • Una volta immessi tutti i dati per la creazione dell'account (mail password indirizzo ecc...) nella pagina spostare il pallino da professionale a personale e continuare a immettere i propri dati personali obbligatori.
  • Accettare i termini di licenza mettendo il baffetto sull'unico quadratino in basso e infine terminate il tutto cliccando su Creare un account e continuare 
    accettazione termini di Contratto AWS
  • Alla pagina successiva vi verrà chiesto di inserite i vostri dati della carta di credito o di debito dalla quale verrà prenotato 1$ che successivamente vi verrà restituito 
    Aggiungi Carta di credito o di debito Amazon Web Services
  • Il passo successivo vi indicherà (se tutti i dati sono stati creati correttamente) che la verifica dell'identità è avvenuta correttamente.

Fase 4: Creazione Ruolo IAM per l'esecuzione Lambda

  • Dirigetevi su questa pagina Web: https://console.aws.amazon.com/iam/home e nel menù laterale sinistro cliccate su Ruoli che aprirà una nuova tab nel lato destro dalla quale dovremo cliccare su Crea Ruolo
  • Nella pagina successiva selezionate i seguenti parametri Servizio AWS e Lambda 
    Seleziona iltipo di entità attendibile
  • Terminate il tutto premendo il pulsante Successivo Autorizzazioni posto in basso a destra della pagina
  • Successivamente cercate e selezionate il seguente policy AWSLambdaBasicExecutionRole ricordandovi di mettere una spunta al quadrato corrispondente 
    lambdabasic execution role
  • Cliccate sul pulsante Successivo: Tag posizionato in basso a destra della pagina
  • Lasciate inalterata la pagina successiva sull'aggiunta di Tag e premete su Successivo: Verifica
  • Alla pagina seguente date i seguenti parametri:
  1. Nome ruolo: AWSLambdaBasicExecutionRole-SmartHome
  2. Descrizione Ruolo: lasciate vuoto
  • Cliccare infine su Crea Ruolo

Fase 5: Aggiunta del codice alla funzione Lambda

  • Dirigetevi su questo indirizzo: https://console.aws.amazon.com/lambda/home
  • Sulla barra di navigazione sinistra cliccate sulla voce Funzioni e successivamente sul tab destro selezionate il pulsante arancione Crea Funzione
  • Alla pagina successiva selezionare il riquadro Crea da Zero e successivamente impostate i seguenti parametri:
  1. Nome Funzione: Domotica
  2. Runtime: Python 3.8
  3. Cliccate sul triangolo Modifica del ruolo di esecuzione Predefinito e selezionate Utilizza un Ruolo esistente
  4. Sotto a ruolo esistente selezionate dal menù AWSLambdaBasicExecutionRole-SmartHome 
    Crea Funzione da Zero
  • Terminate il tutto con il tasto Crea Funzione

Fase 6: Creazione Skill su Alexa developer Console

  • Recatevi su questo link e loggatevi con il vostro Account Amazon
  • Dirigetevi sulla pagina Alexa Skill (se non lo siete già) e cliccate il tasto Create Skill
  • Alla pagina successiva date i seguenti parametri:
  1. Skill name: Domotica
  2. Default Language: Italian
  3. Choose a model to add to your skill: Smart Home
  4. Choose a method to host your skill's backend resources: Provision your own 
    Creazione Skill parametri
  • Cliccate infine su Create Skill in alto a destra della pagina corrente
  • Nella pagina successiva accertatevi che la versione del payload sia la v3 
  • Nella stessa pagina vi ritroverete nella seconda sezione Smart Home Service Point la Skill ID. Ricopiatela in un file di testo perché servirà in futuro.
    Skill Id da copiare
  • Terminato il tutto mettete in standby questa fase, che avrà bisogno di un ulteriore codice arn che ricaverete nelle fasi successive.

Fase 7: Aggiunta Trigger alla Funzione Lambda Creata

  • Aprite questa pagina https://console.aws.amazon.com/lambda/home e cliccate sulla funzione Domotica precedentemente creata
  • Nel tab Configurazione sotto la scheda Designer aggiungiamo il trigger con l'apposito tasto + Aggiungi Trigger
  • Nella nuova pagina che si aprirà selezionare dal menù a discesa selezionate il tirgger Alexa  Smart Home
  • Nella casella ID Applicazione copiate la Skill ID che abbiamo copiato nella fase precedente di creazione della Skill
  • Accertatevi che vi sia la spunta su Abilita trigger e infine premete il pulsante arancione Aggiungi
  • Sarete ritornati sulla pagina precedente di configurazione della funzione Domotica, a questo punto dovrete cliccare sul nome della funzione posizionata al centro della pagina. 
    Cliccare sulla funzione domotica
  • In basso si aprirà il tab chiamato codice della funzione, dove all'interno sarà rappresentato un codice di esempio in python da sostituire con il codice presente all'interno di questa pagina con un semplice copia e incolla (per incollare il codice premete sulla tastiera CTRL+V poichè la funzione incolla è disabilitata) Il risultato finale è questo: 
    Codice Python Lambda Function
  • Una volta copiato il tutto cliccate sul tasto File e infine Salva all'interno dello pseudo programma di editor python.
  • Cliccate sul tasto arancione Distribuisci
  • Scorrete la pagina verso il basso, fermatevi nella sezione Variabili d'ambiente e pigiate sul tasto Modifica e alla pagina successiva cliccate su Aggiungi Variabili d'ambiente
  • Successivamente inserite nella casella chiave la keyword BASE_URL e nel campo valore il vostro indirizzo legato al servizio duckdns sul quale raggiungete Home Assistant dall'esterno seguito dai due punti e dalla porta che utilizzate quindi https://vostrodominio.duckdns.org:8123 e cliccate su Aggiungi Variabile d'ambiente
  • Appariranno nella pagina altre due caselle che a loro volta dovranno essere riempite inserendo nel casella chiave la keyword DEBUG e nella casella valore la scritta True, cliccare nuovamente su Aggiungi Variabile d'ambiente
  • Nelle altre due caselle inserire sotto la casella chiave la keyword NOT_VERIFY_SSL e accanto nella casella valore inserire la parola True e pigiare su Aggiungi Variabile d'ambiente
  • Nell'ultima fase, invece inserire nella casella dedicata alla chiave LONG_LIVED_ACCESS_TOKEN e nella casella valore incollate il token Alexa che abbiamo creato nella fase 1 e avevamo messo da parte. Il risultato dovrebbe essere una schermata simile: 
    Riepilogo Variabili d'ambiente
  • Terminare il tutto premendo il tasto Salva e verrete reindirizzati sulla pagina principale di configurazione della funzione Domotica.
  • Volgete lo sguardo in alto a destra della pagina e troverete un codice ARN indispensabile per la fase successiva, quindi copiatelo e incollatelo momentaneamente in un file di Testo. 
    codice ARN

Fase8: Test della funzione Lambda

  • Sempre nella medesima pagina sulla destra della voce operazioni Cliccate con il mouse per scegliete dal menù a tendina la voce Seleziona Eventi di Test 
    seleziona eventi di test
  • Selezionate la scritta Configura Eventi di Test
  • Si aprirà un nuovo popup sul quale dovrete inserire nella casella sotto la voce Nome Evento la keyword Discovery
  • Cancellare le 5 righe di codice inserite di seguito e copiare il seguente codice: 
    {
      "directive": {
        "header": {
          "namespace": "Alexa.Discovery",
          "name": "Discover",
          "payloadVersion": "3",
          "messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
        },
        "payload": {
          "scope": {
            "type": "BearerToken"
          }
        }
      }
    }
    
  • Dirigetevi in basso a destra del popup e cliccate sul pulsante Crea 
    Configura Evento Test
  • Si chiuderà il popup e potrete ritornare sulla pagina principale dove dovrete eseguire il test cliccando l'apposito tasto Esegui il Test
  • Se avrete eseguito tutti i passaggi alla lettera il risultato finale sarà il medesimo:
    Risultato esecuzione Riuscita

Fase 9: Configurare l'endpoint del servizio Smart Home

  • Dirigietevi nuovamente sulla console di sviluppo di Alexa tramite questo link: https://developer.amazon.com/alexa/console/ask (ovviamente se il sistema  ha eseguito il log out automatico ri-accedete con le vostre credenziali)
  • Cliccate sulla skill che abbiamo creato in precedenza denominata Domotica
  • Nella barra di navigazione sinistra accertatevi di essere situati nella sezione Smart Home e nella casella Default endpoint copiare il codice Arn che avete messo in un file di testo alla fase 7 della guida ( Se malauguratamente lo aveste perso non disperate lo potrete recuperare da questo link volgendo sempre lo sguardo in alto a destra)
  • Cliccate sul tasto Salva posizionato in alto a destra della pagina
  • Cliccate infine su Setup Account Linking il quale ci aprirà una finestra sulla quale dovrete impostare delle informazioni di sicurezza sul provider, quindi inserite nelle caselle accanto alle voci indicate le stringhe contenenti il vostro sito https di Home Assistant collegato al servizio duckdns.
  1. Your Web Authorization URI: https://vostrodominio.duckdns.org:8123/auth/authorize
  2. Access Token URI: https://vostrodominio.duckdns.org:8123/auth/token
  3. Your Client ID: https://layla.amazon.com/
  4. Client Secret: Home Assistant HDJ
  5. Your Authentication Scheme: selezionate Credentials in request body
  6. Alla voce Scope: cliccate sul tasto + Add Scope e copiate e incollate la seguente keyword: smart_home
  7. Lasciate invariato Domain List e Default Access Token Expiration Time. Il risultato finale dovrebbe essere come l'immagine di seguito: 
    security provider information
  • Ritornate in alto alla pagina e selezionate il tasto Save

Fase 10: Collegare App Alexa con Home Assistant

  • Collegatevi a questa pagina Web: https://alexa.amazon.com/ ed eventualmente loggatevi con le vostre credenziali con il quale avrete impostato il vostro dispositivo Amazon Echo
  • Cliccate e selezionate dal Menù laterale sinistro la voce Skill
  • Nella tab destra della medesima pagina in alto selezionate il tasto "Le tue Skill"
  • Selezionate successivamente "Skill per Sviluppatori"
  • Ora vedrete il nome della vostra skill e se tutto è andato nel verso giusto vedrete la Skill Domotica pronta all'uso
  • Cliccateci su e infine selezionare il pulsante Attiva ed inserite i dati di accesso ad Home Assistant
  • Terminato il tutto avrete una schermata dove vi verrà indicato che la skill è collegata con successo 
    skill collegata con successo
  • Chiudete la pagina e cliccare su Scopri i dispositivi e attendete 20 secondi circa affinché possiate visionare le vostre luci di Home Assistant su Alexa.

Fase 11: Mettere in sicurezza il sistema

  • Recatevi al seguente indirizzo e ri-loggatevi (qualora non lo foste già)
  • Scorrete nella pagina sino alla voce Variabili di ambiente e cliccate su Modifica
  • Cliccare sul tasto Rimuovi posizionato accanto alle variabili DEBUG e LONG_LIVED_ACCESS_TOKEN
  • Cliccate infine sul pulsante arancione Salva
  • Riaprite Home Assistant e dal menù laterale sinistro selezionate il vostro User Name e sul tab Destro scorrete in basso sino alla sezione Token di Accesso a lunga vita e cliccate sull'icona del cestino accanto alla voce Alexa 

Vi ricordo inoltre di seguirci sui nostri canali

Telegram: https://t.me/vincenzocaputoblog

Youtube: https://www.youtube.com/c/VincenzoCaputo77

E se per caso vi foste persi il video dell'ultima video guida eccola qui: 

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Disqus loading...