Dopo un pò di tentativi sono riuscito a collegare la mia Domotica di Home Assistant con Alexa e adesso voglio mettervi a disposizione una guida tradotta con alcune considerazioni e delle aggiunte.

Dobbiamo avere il sistema di Domotica Home Assistant, l’app Alexa sul telefono, un DyDNS e attivi i certificati SSL (HTTPS) e avere Home Assistant sulla porta 8123.

Creazione della SKILL Alexa

  1.  Andate a questo link: Alexa Developer Console
  2. Vai alla pagina Alexa Skills e cliccate Create Skill
  3. Inserisci Skill Name e seleziona la lingua di Default del tuo Alexa
  4. Selezionate Smart Home e Provision your own, clicca infine Create Skill
  5. Nella schermata successiva, assicurati che v3 sia selezionato in Payload Version
  6. Lasciate aperta la pagina e aprite un’altra scheda

Creiamo la funzione LAMBDA

  1. Fai clic Service sulla barra di navigazione in alto, espandi il menu per visualizzare tutti i servizi      AWS, fai clic IAM nella Security, Identity & Compliance sezione per passare alla console IAM.
  2. Fai clic Roles sul pannello di sinistra, quindi fai clic su Create Role, seleziona AWS Service -> Lambda nella prima pagina della procedura guidata, quindi fai clic su NEXT: Permission
  3. Seleziona la AWSLambdaBasicExecution policy, quindi fai clic su Next: Tags. (Suggerimento: è possibile utilizzare la casella di ricerca per filtrare il criterio)
  4. È possibile saltare la pagina Add tags , fare clic su Next: Review.
  5. Assegna un nome al tuo nuovo ruolo, ad esempio AWSLambdaBasicExcutionRole-SmartHome, quindi fai clic sul pulsante Create role. Ora dovresti essere in grado di trovare il tuo nuovo ruolo nell’elenco dei ruoli.

Creare la funzione lambda aggiungendo lo script python

  1. Fai clic su Service sulla barra di navigazione in alto, espandi il menu per visualizzare tutti i servizi AWS, fai clic su Lambda nella sezione Compute per passare alla console Lambda.
  2. IMPORTANTE la tua regione corrente verrà visualizzata nell’angolo in alto a destra, assicurati di selezionare la base della regione giusta nel paese del tuo account Amazon
  3. Fare clic su Functions nella barra di navigazione a sinistra per visualizzare l’elenco delle funzioni Lambda.
  4. Fare clic su Create function, selezionare Author from scratch , quindi inserire il Function name.
  5. Seleziona Python 3.6 o Python 3.7 come Runtime.
  6. Assicurati di selezionare Usa un ruolo esistente come Execution role, quindi seleziona il ruolo appena creato Existing role dall’elenco.
  7. Fare clic su Create function, quindi è possibile configurare i dettagli della funzione Lambda.
  8. Nella Scheda Configuration, espandi Designer, quindi fai clic su Alexa Smart Home nella parte sinistra del pannello per aggiungere un trigger Alexa Smart Home alla tua funzione Lambda.
  9. Scorri verso il basso, devi inserire Skill ID dall’abilità che hai creato nel passaggio precedente. (suggerimenti: potrebbe essere necessario tornare alla Console per gli sviluppatori Alexa per copiare il Skill ID).
  10. Fai clic sull’icona della tua funzione Lambda al centro del diagramma, scorri verso il basso per visualizzare una Function code finestra.
  11. Cancella il codice di esempio, copia lo script Python da: https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b (codice modificato per supportare la modalità proattiva di Alexa, vedi i dettagli di seguito)
  12. Scorri un po ‘verso il basso, troverai Enviroment variables, devi aggiungere 4 variabili d’ambiente:
    • BASE_URL (obbligatorio) : l’URL accessibile dall’istanza di Home Assistant con porta se necessario. Non includere il finale /.
    • NOT_VERIFY_SSL (opzionale) : è possibile impostarlo su True per ignorare il problema SSL, se non si dispone di un certificato SSL valido o si utilizza un certificato autofirmato.
    • DEBUG (opzionale) : impostato su True per registrare il messaggio di debug
    • LONG_LIVED_ACCESS_TOKEN (opzionale, sconsigliato) : collegherai la tua abilità Alexa Smart Home con il tuo account utente Home Assistant nei passaggi successivi, in modo da non dover utilizzare qui token di accesso di lunga durata. Tuttavia, il token di accesso ottenuto dal flusso di accesso è valido solo per 30 minuti. Sarà difficile testare la funzione lambda con il token di accesso nei dati di test. Quindi, per le tue convinzioni, puoi rimuovere il token di accesso dai dati di test, generare un token di accesso di lunga durata mettere qui, quindi la funzione tornerà a leggere il token dalle variabili di ambiente. (suggerimenti: non hai abilitato l’archiviazione di sicurezza per le variabili di ambiente, quindi il token salvato qui non è così sicuro. Dovresti usarlo solo per scopi di debug e test. Dovresti rimuovere ed eliminare il token di accesso di lunga durata dopo aver terminato il debug.)
  13. Ora scorri verso l’alto, fai clic su Save pulsante.
  14. È necessario copiare l’ARN visualizzato nella parte superiore della pagina, che è l’identificazione di questa funzione Lambda. Sarà necessario questo ARN per continuare la configurazione delle abilità di Alexa Smart Home in un secondo momento.

Prova la funzione Lambda

questa è la configurazione per attivare Alexa su Home Assistant:

api:

alexa:
smart_home:

Dopo aver riavviato Home Assistant, torna sulla AWS Lambda Console per fare alcuni test.

Nella parte superiore della pagina di configurazione della funzione Lambda, c’è un pulsante Test, fai clic sul menù a tendina a sinistra del pulsante Test, fai clic su Configure test events, poi Create New test event e utilizzare i seguenti dati:

{
  "directive": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover",
      "payloadVersion": "3",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
    },
    "payload": {
      "scope": {
        "type": "BearerToken"
      }
    }
  }
}

Questo evento di test è una direttiva Discovery, Home Assistant risponderà con un elenco dei tuoi dispositivi con cui Alexa può interagire. Questi dati di test mancano di token in payload.scope, la funzione Lambda leggerà la variabile di ambiente LONG_LIVED_ACCESS_TOKEN.

Fare clic sul pulsante Test. Se non lo hai LONG_LIVED_ACCESS_TOKEN, otterrai in risposta INVALID_AUTHORIZATION_CREDENTIAL come risultato dell’esecuzione.

Ora puoi accedere al tuo Home Assistant e generare un token di accesso di lunga durata . Dopo aver inserito il token di accesso di lunga durata sul Enviroment Variabile, non dimenticare di fare nuovamente clic sul pulsante Save Test.

Questa volta, otterrai un elenco dei tuoi dispositivi come risposta.

CONFIGURARE L’ENDPOINT DEL SERVIZIO SMART HOME

Ora, se lo desideri, rimuovi il token di accesso longevo, copia l’ARN della tua funzione Lambda, quindi torna alla Console per gli sviluppatori Alexa . Terminerai la configurazione dell’abilità Smart Home.

  1. Accedi a Alexa Developer Console , vai alla pagina Alexa Skill se non lo sei.
  2. Trova l’abilità appena creata, fai clic sul link Edit nella colonna Actions.
  3. Fai clic su SMART HOME sulla barra di navigazione a sinistra della pagina di creazione.
  4. Compilare Default Endpoint sotto 2. Smart Home service endpoint usando il codice ARN copiato dalla configurazione della funzione Lambda.

COLLEGAMENTO DELL’ ACCOUNT

Alexa può collegare il tuo account Amazon al tuo account Home Assistant. Pertanto Home Assistant può assicurarsi che solo la richiesta Alexa autenticata sia in grado di accedere ai dispositivi di casa. Per collegare l’account, è necessario assicurarsi che sia possibile accedere a Home Assistant da Internet.

  1. Accedi a Alexa Developer Console , vai alla pagina Alexa Skills se non lo sei.
  2. Trova l’abilità appena creata, fai clic sul Edit link nella Actions colonna.
  3. Fai clic ACCOUNT LINKING sulla barra di navigazione a sinistra della pagina di creazione
  4. Inserisci tutte le informazioni richieste. Supponendo che il tuo assistente domestico sia accessibile da https://[ILTUOURLHA: PORTA]
    1. Authorization URI: https://[ILTUOURLHA:PORTA]/auth/autorize

    2. Access Token URI: https://[ILTUOURLHA:PORTA]/auth/token

    3. Client I:

      La barra finale è importante qui.

    4. Client secrert: inserisci tutto ciò che ti piace, Home Assistant non seleziona questo campo

    5. Client Authentication Scheme: assicurarsi di aver selezionato Credenziali nel corpo della richiesta . Home Assistant non supporta HTTP Basic .

    6. Scope: input smart_home, Home Assistant non lo utilizza ancora, potremmo utilizzarlo in futuro quando consentiremo un controllo degli accessi più accurato.

  5. Puoi andartene Domain List e Default Access Token Expiration Time vuoto.
  6. Fare clic sul pulsante Save nell’angolo in alto a destra.
  7. Successivamente, utilizzerai l’app Alexa Mobile o l’app Web Alexa per collegare il tuo account.
    • Apri l’app Alexa, vai a Skills-> Your Skills-> Dev Skills
    • Fai clic sull’abilità Smart Home che hai appena creato.
    • Fare clic Enable.
    • Si aprirà una nuova finestra per indirizzarti alla schermata di accesso dell’assistente domestico.
    • Dopo aver effettuato correttamente l’accesso, verrai reindirizzato all’app Alexa.
    • Puoi scoprire i tuoi dispositivi ora.
  8. Ora puoi chiedere a Echo o nell’app Alexa, attivare la camera da letto

CONFIGURAZIONE DEL COMPONENTE ALEXA

alexa:
  smart_home:
    endpoint: https://api.amazonalexa.com/v3/events
    client_id: alexa_client_id
    client_secret: alexa_client_secret

Il endpoint, client_id e client_secret sono opzionali, e sono necessari solo se si desidera attivare la modalità proattiva di Alexa (vale a dire “Invia Alexa Eventi” abilitato). Si noti quanto segue se si desidera abilitare la modalità proattiva:

  1. Esistono URL endpoint diversi, a seconda della regione della tua abilità. Controllare gli endpoint disponibili su https://developer.amazon.com/docs/smarthome/send-events-to-the-alexa-event-gateway.html#endpoints
  2. Gli client_id e client_secret non sono quelli usati dall’abilità che è stata creata usando “Accedi con Amazon” (nella [Console per gli sviluppatori Alexa] [console-sviluppatore amazon]: Build> Collegamento account), ma piuttosto dalla “Abilità Alexa Messaggi “(nella Console per gli sviluppatori Alexa: Build> Autorizzazioni> Alexa Skill Messaging). Per ottenerli, devi abilitare l’autorizzazione “Invia eventi Alexa”.
  3. Se l’autorizzazione “Invia eventi Alexa” non è stata abilitata in precedenza, è necessario scollegare e ricollegare l’abilità utilizzando l’app Alexa, altrimenti Home Assistant mostrerà il seguente errore: “Token non valido e nessun token di aggiornamento disponibile. Inoltre, è necessario riavviare Home Assistant dopo ogni disabilitazione / abilitazione dell’abilità in Alexa. “

Attenzione per attivare Alexa serve per forza avere Home Assistant sulla porta 443 e non sulla 8123, ci sono tre modi per farlo, uno è quello di cambiare la porta di default di HA tramite la configurazione del configuration.yaml, il secondo è quello di installare nginx su una distro linux e configurarlo a dovere e il terzo è quello di installare su Hassio l’addon nginx proxy manager.
Se a qualcuno interessa usare ngnix posso fare una guida, scrivetemelo qui nei commenti o sul gruppo telegram!

 

Gruppo Telegram: https://t.me/HomeAssistant_Rpi

Se volete avere notifiche sui post seguite: https://t.me/itchsblog

 

Acquistate con il mio link Amazon: https://amzn.to/2UTiFzL


Se volete Donare per avere più progetti: paypal.me/itchsblog