Integrazione Alexa su Home Assistant Gratis

Integrazione Alexa su Home Assistant Gratis

Ciao a tutti, dopo tante lamentele e richieste viste sul nostro gruppo Telegram , eccoci  qua a discutere ancora sull’assistente piu discusso dei ultimi tempi. In questo articolo vediamo come integrarlo con Home Assistant GRATIS, grazie al progetto haaska di mike-grant su github. Senza perderci in chiacchiere andiamo a vedere insieme i vari passaggi da fare.

Ringraziando in particolar modo per i suggerimenti il nostro utente Erminio Vianello Clark e il mio collega admin SDeSalve

Haaska

Richiede Home Assistant 0.78+ e Python 3.6 e ovviamente, configurato per il controllo remoto tramite HTTPS.

1.  Scarichiamo l’ultima risorsa di haaska, al momento disponibile Assets  haaska_1.1.0.zip

2. Su configuration.yaml provvisoriamente dichiariamo:

Riavviate Home Assistant. Modificate, successivamente al riavvio, la configurazione includendo o escludendo le entità in base alle vostre esigenze. (Vedi fine articolo).

Iscrizione Amazon

3. Iscriviamoci su Amazon Developer Console, un sito appartenente ad Amazon.com/.it al quale è necessario essere già iscritti precedentemente. Utilizzare il proprio account (di Amazon.com/.it) per entrare. Successivamente clicchiamo su “Login with Amazon”:

Una volta dentro, clicchiamo su “Crea nuovo profilo di sicurezza“.
e compiliamo come segue:

  • Nome del profilo di sicurezza:           Hassio
  • Descrizione del profilo di sicurezza: Hassio
  • URL del consenso della privacy:        HassioHelp.eu

Salviamo e nella finestra che si aprirà, clicchiamo sull’icona in basso a destra e selezioniamo Impostazioni Web. Lasciamo aperta la pagina che segue la quale contiene i dati del proprio profilo di sicurezza che ci serviranno dopo, e andiamo avanti.

Crea Skill

4. Apriamo una nuova scheda sul browser e navighiamo verso https://developer.amazon.com/alexa/console/ask utilizzando l’utenza Amazon.com/.it per il login. Andiamo a creare la nostra SKILL.

Clicchiamo su Create Skill

  • Skill name:             HomeAssistant
  • Default language: Italian (IT)
  • Poi scegliamo:       Smart Home
  • Ed infine:                  Provision your own

Dopodiché Create SKILL , nella pagina successiva assicuriamoci che come Payload version resti selezionato v3 (preferred). Lasciamo aperta anche questa pagina e andiamo avanti in una nuova scheda.

AWS Amazon

5. Nella nuova scheda apriamo l’indirizzo https://console.aws.amazon.com/console/homeE’ necessario creare un’account, nel caso ne siate sprovvisti. Inserite una carta di credito ricaricabile VALIDA (se non lo fate, avrete l’errore nel test finale). State tranquilli non vi sara’ nessun addebito.

Dopodiché andiamo su Servizi e selezioniamo IAM sotto la sezione Sicurezza, Identità, Conformità. Poi nel menù laterale a sinistra, dove c’è il Panello di controllo, selezioniamo Ruoli e dopo Crea Ruolo.

Nella pagina che si apre selezioniamo AWS Service e poi Lambda. In basso a destra clicchiamo su Successivo: Autorizzazioni. Dopo facciamo una ricerca con il filtro policy, digitiamo “DatabaseAdministrator“, selezioniamo la voce trovata e infine clicchiamo su Successivo: Tag. Clicchiamo ancora su Successivo: Verifica e nell’ultimo tab (4) diamo un nome al nostro ruolo come segue: lambda_basic_execution, infine clicchiamo su Crea Ruolo.

Ora tocca a Lambda. In alto a sinistra clicchiamo sulla voce Servizi e selezioniamo la voce Lambda sotto la sezione Calcolo. Poi in alto a destra selezioniamo EU – Ireland.

Clicchiamo sul pulsante Crea una funzione.
E compiliamo come segue:

  • Crea da zero
  • Nome:                   haaska
  • Runtime:              Python 3.6
  • Ruolo:                   Selezionare un ruolo esistente
  • Ruolo esistente: lambda_basic_execution

Poi Crea Funzione in basso a destra.

Nella Pagina successiva andiamo ad aggiungere un trigger cliccando sul pulsante Aggiungi Trigger sotto Designer. Successivamente scegliamo Alexa Smart Home e in fine inseriamo nel campo lo Skill ID ottenuto nel passaggio nr.4 Your Skill ID ( amzn1.ask.skill.1e98*****************) , assicurandoci che resti selezionata la voce Abilita Trigger, poi clicchiamo su Aggiungi.  

Ora clicchiamo sulla sezione haaska che troviamo a metà pagina, scorrendo la pagina verso il basso troveremo la voce Codice della funzione. Clicchiamo il menu a tendina Tipo di voce del codice e selezioniamo Carica un file .zip, selezioniamo cosi dal nostro pc il file haaska_1.1.0.zip scaricato inizialmente.

Sulla voce Runtime impostiamo Python 3.6 e su Gestore scriviamo haaska.event_handler.

Scorriamo sotto in basso e cerchiamo Ruolo di esecuzione, e Impostazioni di base e lo impostiamo come segue:

Nota Bene: non dimentichiamoci di aumentare il Timeout a 10/15 sec, in quanto di default è di 3 sec. Molti di voi , seguendo varie guide che ci sono online, non passavano il test appunto per questo particolare.

Successivamente scorriamo in alto con la pagina e clicchiamo sul pulsante a destra Salva. Quando il progetto finisce il salvataggio ci troveremo d’avanti ad un editor del file caricato in precedenza, adesso andremo a modificarlo inserendo i nostri dati di accesso in Home Assistant.

Token

Quindi andiamo a creare un Token di accesso a lunga vita su Home Assistant

torniamo all’editor del file e facciamo un doppio click sul file config.json. Lo modifichiamo inserendo l nostro token e url di Home Assistant, esempio:

Dopodiché salviamo cliccando sempre il pulsante Salva in alto a destra e copiamo il codice arn:aws:lambda**** posto subito li sopra al pulsante Salva.

6. Completiamo lo skill precedentemente aperto, creato nella sezione nr.4, inserendo nel campo Default endpoint  l’arn copiato. Selezioniamo sotto la casella Europe, India e anche qui incolliamo lo stesso arn di prima e clicchiamo su Save.

Clicchiamo sulla sinistra la voce ACCOUNT LINKING.
Inseriamo i seguenti valori:

  • Authorization URI:                          https://www.amazon.com/ap/oa
  • Access Token URI:                         https://api.amazon.com/auth/o2/token
  • Client ID:                                         CLIENT ID ottenuto nel profilo di sicurezza creata nella sezione nr.3
  • CLIENT Secret:                               CLIENT SECRET che troviamo sempre sul profilo di sicurezza nr.3
  • Client Authentication Scheme:     HTTP BASIC (Recommended)
  • Poi clicchiamo su + Add Scope e scriviamo profile.

Salviamo di nuovo premendo su Save e lasciamo aperta anche questa finestra, ci serviranno i Redirect URLs che troviamo in fondo alla pagina.

Ritorniamo sulla pagina lasciata aperta dove c’è la sezione nr.3 , Gestione Profilo Sicurezza , e clicchiamo sul pulsante modifica, e compiliamo i campi Allowed Return Urls (tutti e 3) andando a copiare i 3 valori della Redirect Urls che abbiamo generato al punto precedente.

Torniamo sulla pagina dove abbiamo Lambda e la funzione haaska ancora aperto sezione nr.5. In alto selezioniamo Configura eventi di test. Inseriamo un nome p. es “test”  e incolliamo questo codice, sostituendo quello esistente, sotto sull’editore:

Salviamo e eseguiamo il test. Se ottenete risultato negativo, ricontrollate bene tutti i passaggi. Altrimenti chiudete tutto e aprite l’app Amazon Alexa sul vostro cellulare, e abilitate la nuova skill che troverete su Skill e Giochi / Le tue Skill / Sviluppatori. 

Home Assistant

Su configuration.yaml regolate il codice in base alla vostra configurazione, ecco un esempio completo:

 

Per qualsiasi dubbio o problema che riscontrate, non esitate a contattarci sui nostri social: Facebook   Forum    Telegram.

 

Donazione

 

6 risposte

  1. Megane73 ha detto:

    Salve, avrei una domanda “un po’ particolare”…
    Ho installato Hass.io come “pacchetto” sul mio NAS della Synology.
    Data la particolarità della situzione, la guida è comunque valida o necessita di qualche “modifica”?
    Grazie per la risposta.

  2. Stefano ha detto:

    Grazie Mille per la Guida,
    ho seguito la procedura per integrare Alexa nel mio HA ma ricevo questo errore dalla funzione Lambda:
    {
    “errorMessage”: “500 Server Error: Internal Server Error for url: https://miohostname.duckdns.org:443/api/alexa/smart_home“,
    “errorType”: “HTTPError”,
    “stackTrace”: [
    [
    “/var/task/haaska.py”,
    111,
    “event_handler”,
    “return ha.post(‘alexa/smart_home’, event, wait=True)”
    ],
    [
    “/var/task/haaska.py”,
    66,
    “post”,
    “r.raise_for_status()”
    ],
    [
    “/var/task/requests/models.py”,
    940,
    “raise_for_status”,
    “raise HTTPError(http_error_msg, response=self)”
    ]
    ]
    }

    mentre in HA questo:

    Logger: aiohttp.server
    First occured: 10:36:40 (2 occurences)
    Last logged: 10:44:19

    Error handling request
    Traceback (most recent call last):
    File “/usr/local/lib/python3.7/site-packages/aiohttp/web_protocol.py”, line 418, in start
    resp = await task
    File “/usr/local/lib/python3.7/site-packages/aiohttp/web_app.py”, line 458, in _handle
    resp = await handler(request)
    File “/usr/local/lib/python3.7/site-packages/aiohttp/web_middlewares.py”, line 119, in impl
    return await handler(request)
    File “/usr/src/homeassistant/homeassistant/components/http/real_ip.py”, line 39, in real_ip_middleware
    return await handler(request)
    File “/usr/src/homeassistant/homeassistant/components/http/ban.py”, line 72, in ban_middleware
    return await handler(request)
    File “/usr/src/homeassistant/homeassistant/components/http/auth.py”, line 135, in auth_middleware
    return await handler(request)
    File “/usr/src/homeassistant/homeassistant/components/http/view.py”, line 123, in handle
    result = await result
    File “/usr/src/homeassistant/homeassistant/components/alexa/smart_home_http.py”, line 120, in post
    hass, self.smart_home_config, message, context=core.Context(user_id=user.id)
    File “/usr/src/homeassistant/homeassistant/components/alexa/smart_home.py”, line 41, in async_handle_message
    response = await funct_ref(hass, config, directive, context)
    File “/usr/src/homeassistant/homeassistant/components/alexa/handlers.py”, line 82, in async_api_discovery
    for alexa_entity in async_get_entities(hass, config)
    File “/usr/src/homeassistant/homeassistant/components/alexa/handlers.py”, line 83, in
    if config.should_expose(alexa_entity.entity_id)
    File “/usr/src/homeassistant/homeassistant/components/alexa/entities.py”, line 282, in serialize_discovery
    capabilities.append(i.serialize_discovery())
    File “/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py”, line 199, in serialize_discovery
    capability_resources = self.capability_resources()
    File “/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py”, line 1471, in capability_resources
    min_value = float(self.entity.attributes[input_number.ATTR_MIN])
    KeyError: ‘min’

    Grazie mille per l’aiuto
    Stefano

  3. enzo ha detto:

    sono al terzo tentativo ma ancora non riesco ad integrare alexa e HA
    ma è normale che dopo il caricamento del file HAASKa io non abbia il file lambda_function?
    🙁

    START RequestId: 56c3d75d-35fd-4718-a1a6-19ab2612ca74 Version: $LATEST
    Unable to import module ‘lambda_function’: No module named ‘lambda_function’

    END RequestId: 56c3d75d-35fd-4718-a1a6-19ab2612ca74
    REPORT RequestId: 56c3d75d-35fd-4718-a1a6-19ab2612ca74 Duration: 0.44 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 43 MB Init Duration: 1.12 ms

  4. Vincenzo ha detto:

    5:Nella nuova scheda apriamo l’indirizzo https://console.aws.amazon.com/console/home. E’ necessario creare un’account, nel caso ne siate sprovvisti. Inserite una carta di credito ricaricabile VALIDA (se non lo fate, avrete l’errore nel test finale). State tranquilli non vi sara’ nessun addebito.

    Ciao, è possibile che abbiano emesso delle fatture?

  5. Vincenzo ha detto:

    5:Nella nuova scheda apriamo l’indirizzo https://console.aws.amazon.com/console/home. E’ necessario creare un’account, nel caso ne siate sprovvisti. Inserite una carta di credito ricaricabile VALIDA (se non lo fate, avrete l’errore nel test finale). State tranquilli non vi sara’ nessun addebito.

    Ciao, è possibile che abbiano emesso delle fatture?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger