El asistente Alexa cada vez está más extendido, y no es raro que encontremos maneras de usarlo allí donde no se espera. Si quieres dar un salto de gigante úsalo junto con Home Assistant.

Con este artículo aprenderas las diferentes maneras que existen sobre cómo integrar Alexa en Home Assistant para que puedas combinar estos dos sistemas, con multitud de pantallas y paso a paso para no perdernos.

Aunque Amazon no para de potenciar Alexa y todo lo que gira a su alrededor, todavía no existe una integración única, oficial, gratuita y robusta para exponer en el ecosistema de Amazon los dispositivos ya dados de alta en Home Assistant.

Además otros sistemas vienen empujando por llevarse la parte del pastel correspondiente como puede ser SmartThings liderado por Samsung.

Pero alternativas para integrar Alexa no faltan. Existen básicamente 3 métodos principales a día de hoy y que vamos a analizar uno a uno para poder usar todo lo que tenemos en Home Assistant a través de Alexa:

Si lo que estás es interesado en la compra de un dispositivo de Amazon con Alexa integrado, te puede interesar el Echo Dot de 4a Generación: Enchufar y a funcionar, compatible con la siguiente selección de dispositivos:

Si por el contrario lo que te gusta es cacharrear sigue leyendo.

INTEGRACIÓN DE ALEXA A TRAVÉS DE EMULACIÓN

Quizás no sea la forma más elegante, pero si una de las más sencillas.

En resumen haremos uso de la integración Emulated Hue para crear un Philips Hue Bridge virtual (Puente para control de luces inteligentes de Philips). Alexa pensará que está controlando una serie de bombillas inteligentes, pero realmente serán entidades de nuestro sistema Home Assistant.

  • NUESTRO ECHO DOT CON MEJOR CALIDAD DE SONIDO HASTA LA FECHA: disfruta de un audio mejorado respecto al anterior Echo Dot con Alexa, con un sonido potente en cualquier habitación, con voces más nítidas y graves más intensos.
  • CONSULTA LA HORA Y MUCHO MÁS DE UN SOLO VISTAZO: con el indicador LED mejorado, podrás ver la hora, tus alarmas, la información del tiempo, los títulos de las canciones y más.
  • CONTROLA TU MÚSICA Y CONTENIDO FAVORITOS: escucha en toda tu casa música, audiolibros y pódcast de Amazon Music, Apple Music, Spotify, Deezer y otros servicios de música en streaming o usa el Bluetooth integrado.
  • ALEXA SIEMPRE ESTÁ AHÍ PARA AYUDARTE: pídele a Alexa que te diga qué tiempo hace o qué canción suena, pon temporizadores, hazle preguntas o deja que te cuente un chiste. ¿Quieres dormir un poquito más? Pospón las alarmas del Echo Dot con reloj con un solo toque.
  • MANTÉN TU CASA CONFORTABLE: controla dispositivos de Hogar digital con la voz y define rutinas activadas con los sensores de temperatura integrados en tu Echo Dot. Crea rutinas para encender automáticamente un ventilador inteligente cuando la temperatura de tu casa aumente por encima del umbral que establezcas.
  • SÁCALE MÁS PROVECHO VINCULANDO DISPOSITIVOS: inunda tu casa de música con dispositivos Echo compatibles en distintas habitaciones o crea un sistema de cine en casa con el Fire TV.
  • DISEÑADO PARA PROTEGER TU PRIVACIDAD: con múltiples capas de protección y control de la privacidad, incluido un botón para desactivar los micrófonos que los desconecta electrónicamente.
  • CON CERTIFICADO CLIMATE PLEDGE FRIENDLY: hemos integrado la sostenibilidad en el diseño de este dispositivo. El 99 % del embalaje de este dispositivo procede de bosques gestionados responsablemente o materiales reciclados, el 95 % de la tela proviene de tela reciclada posconsumo y el 55 % de los plásticos provienen de plásticos reciclados posconsumo.

Para activar Emulated Hue simplemente añadiremos las siguientes líneas a nuestro fichero configuration.yaml:

emulated_hue:
  listen_port: 80
  entities:
    media_player.tv_salon:
      name: "television del salon"

Aquí hay que tener en cuenta algunas consideraciones:

  • El puerto debe ser 80 para que la aplicación Alexa lo detecte.
  • La IP del equipo donde corre Home Assistant debe ser fijo, para que Alexa lo detecte siempre igual y no tengamos que iniciar el proceso cada vez que cambie.
  • En la sección entities debñeis poner vuestros propios sensores y un nombre amigable con el que aparecerá en Alexa

Y en la parte de Home Assistant eso es todo. Ahora vamos a ver cómo detectará Alexa este falso bridge de Philips.

Instalaremos la aplicación Amazon Alexa en nuestro móvil, bien sea en la versión Android o IOS:

Amazon Alexa

El proceso de instalación es sencillo. Deberemos tener previamente una cuenta de Amazon (sí, la misma que usas para hacer las compras).

Elegiremos la opción de configurar la app Alexa y seleccionaremos el perfil de usuario de Amazon (sí, el mismo que eliges al iniciar Prime TV), confirmando tu nombre y apellidos para aceptar las condiciones:

Alexa elección perfil

Entrenar al asistente para que no tenga problemas en reconocer nuestra voz será también muy sencillo pues solo tendremos que repetir la palabra Alexa varias veces cuando nos lo pida en un ambiente silencioso:

Alexa entrenamiento voz

Permitiremos el acceso a los contactos por si queremos ordenarle hacer una llamada, persmisos para usar el micrófono, ubicación y grabar audio mientras se use la aplicación si nos lo pide. Todo normal.

Llegaremos al menú principal con todas las opciones de la aplicación:

App Alexa. Menú principal

Ahora es cuando vamos a «engañar» a Alexa para que crea que Home Assistant es un dispositivo HUE Bridge.

En la aplicación, en la sección «Dispositivos», le damos a añadir dispositivo:

Alexa. Añadir dispositivo

Elegimos Controlador>Philips Hue> Puente Philips Hue V1 (con forma circular):

Alexa. Selección de controlador

Y seleccionamos detectar dispositivos directamente. (indicará que le demos al botón físico del puente para emparejarlo, pero ni caso porque estamos engañando a la aplicación):

Alexa. Detección de controlador

Y ya lo tendremos emparejado. Para comprobar que funciona correctamente solo tendremos que acceder a esta url desde cualquier equipo de la misma red: http://ip_de_home_assistant:80/api/pi/lights

Nos debería aparecer el listado de dispositivos que hemos definido en nuestro fichero configuration.yaml como si fueran luces:

{"1": {"state": {"on": true, "reachable": true, "mode": "homeautomation", "bri": 38}, "name": "television del salon", "uniqueid": "00:bc:97:a8:36:b4:0f:3d-59", "manufacturername": "Home Assistant", "swversion": "123", "type": "Dimmable light", "modelid": "HASS123"}}

Si en el proceso el log de Home Assistant os muestra este tipo de error, es que otro proceso está usando ya ese puerto en esa misma IP, y a día de hoy no podemos elegir el puerto en el que transmite la aplicación de Alexa. Solo nos quedaría identificar ese otro proceso y quitarlo si no es crítico:

[homeassistant.components.emulated_hue] Failed to create HTTP server at port 80: [Errno 98] error while attempting to bind on address ('192.168.0.200', 80): address in use

En resumen y como conclusion de la integración a través de emulación:

  • VENTAJAS
    • Fácil de implementar
    • Gratuito
  • INCONVENIENTES
    • Puerto TCP 80 usado en exclusividad
    • Dispositivos aparecen como bombillas para Alexa
    • Excasa flexibillidad

INTEGRACIÓN DE ALEXA A TRAVÉS DE NABU CASA

Definitivamente la opción más directa. Dependeremos de un servicio externo, pero nos quitaremos muchos dolores de cabeza. No tendremos que configurar nada avanzado. Los asistentes de voz Google Home y Alexa estarán accesibles. Y todo tiene un coste, en este caso 5$ cada mes de suscripción tras los 30 días de prueba.

  • Presentamos Echo Dot: nuestro altavoz inteligente con Alexa más vendido. El diseño elegante y compacto ofrece un sonido de calidad con voces claras y graves equilibrados.
  • Controla con la voz tu entretenimiento: escucha en streaming música de Amazon Music, Apple Music, Spotify, Deezer y más. Escucha música y pódcasts en cualquier parte de tu casa con la música multiestancia.
  • Compatible con audio de alta definición sin pérdidas, disponible en servicios de música en streaming compatibles, como Amazon Music HD.
  • Lista para ayudar: pídele a Alexa que te cuente un chiste, ponga música, responda a preguntas, lea las noticias, te dé la previsión del tiempo, cree alarmas y más.
  • Controla tus dispositivos de Hogar digital: usa la voz para encender luces, ajustar termostatos y cerrar cerraduras usando dispositivos compatibles.
  • Conecta con los que te importan: llama prácticamente a cualquier persona sin usar las manos. Llama a otras habitaciones al instante con Drop In o realiza comunicados a toda la casa para anunciar que la cena está lista.
  • Diseñado para proteger tu privacidad: fabricado con varias capas de protección y controles de privacidad, incluido un botón que desconecta los micrófonos electrónicamente.

El proceso es muy sencillo y lo podemos encontrar aquí, pero como resumen estos serán los pasos:

  • Activar el componente Cloud si no lo está ya (lo normal es que esté por defecto). Si fuera necesario añadir la siguiente línea al fichero configuration.yaml:
cloud:
  • Logearnos en Home Assitant Cloud desde el menú Configuration:
Home Assistant Cloud login
  • Añadimos la skill de Home Assistant desde la aplicación Alexa en el móvil:
Skills Alexa
Home Assistant Skill
  • Una vez instalado el skill, le ordenamos a Alexa que descubra nuevos dispositivos.
  • Y eso es básicamente todo. Luego podremos definirle qué dispositivos compartir y cuales no.

Sencillo, ¿verdad?

De nuevo dejamos un resumen de los pros y contras de esta opción con Nabu Casa:

  • VENTAJAS
    • Muy fácil de implementar
    • Conexión remota segura
  • INCONVENIENTES
    • Coste 5$ / mes

INTEGRACIÓN DE ALEXA EN HOME ASSISTANT CREANDO UNA SKILL

Esta es quizás la opción más compleja, pues nos ponemos en la piel de desarrollador en la plataforma de Amazon.

Aprenderemos cómo integrar Alexa en Home Assistant de la manera menos fácil, pero con la que más aprenderemos en el proceso.

Nos hemos basado en la propia documentación, pero variando algunos pasos y aclarando otros. Aun así es un viaje largo.

  • PON A ALEXA EN TU MESITA DE NOCHE: Disfruta del control por voz para configurar alarmas y temporizadores, poner una playlist que te ayude a relajarte, prepararte para empezar el día con una rutina que encienda tus luces compatibles o consultar de un vistazo tu calendario o la información del tiempo.
  • TAMAÑO COMPACTO, SONIDO POTENTE: Reproduce música, series, pódcast y más desde Amazon Music, Spotify, Prime Video y otros servicios de streaming y disfruta de un sonido con graves más potentes y voces más nítidas. Además, con la pantalla de 5,5", podrás ver series, visualizar los títulos de las canciones y más de un solo vistazo.
  • MANTÉN TU CASA CONFORTABLE: Controla dispositivos de Hogar digital compatibles como luces y termostatos incluso cuando no estás en casa.
  • VE AÚN MÁS CON LA CÁMARA INTEGRADA: Echa un vistazo a lo que pasa en casa con la cámara integrada y asegúrate de que tu familia o tus mascotas están bien. Usa las llamadas de Drop In cuando estés fuera o conecta un videotimbre compatible para ver quién hay en la entrada desde tu Echo Show 5.
  • DISFRUTA DE TUS FOTOS EN PANTALLA: Cuando no estés interactuando con el dispositivo, podrás usarlo como marco de fotos digital para exponer tus fotos favoritas con Amazon Photos. Además, los miembros Prime cuentan con acceso a espacio de almacenamiento ilimitado en la nube para sus fotos.
  • USA LAS VIDEOLLAMADAS PARA CONECTAR CON LOS TUYOS: Llama a tus familiares y amigos que tengan la app Alexa o un dispositivo Echo con pantalla gracias a la cámara de 2 MP y envía comunicados a otros dispositivos compatibles en tu casa.
  • DISEÑADO PARA PROTEGER TU PRIVACIDAD: Fabricado con múltiples capas de control de la privacidad, incluido un botón que desconecta los micrófonos y la cámara electrónicamente.

Son muchos pasos en varias plataformas (App alexa, Home Assistant, Developer Console y AWS Console), así que para no liarnos iremos poniendo muchas pantallas y paso a paso hasta llegar a la meta. Preparad un café y vamos a empezar.

Lo primero que tendremos que cumplir son los siguientes requisitos:

Requisitos

Son varios los pasos previos que debemos realizar antes de empezar con el procedimiento:

Home Assistant accesible desde Internet

Tener nuestro sistema Home Assistant accesible desde Internet tiene ciertos beneficios pero también conlleva riesgos si no se hace correctamente. Para ello os dejo este enlace donde explicamos con detalle cómo se hace.

Cuenta de desarrollo de Amazon

Debemos tener asimismo una cuenta de desarrollo de Amazon aquí. Si tenemos ya cuenta en Amazon para compras podremos entrar con esas mismas credenciales:

Amazon Alexa Desarrollo Alexa
Amazon cuenta desarrollador

Y nos daremos de alta como desarrolladores:

Registro Amazon desarrollador

Si no queremos completar ahora el perfil con más datos, seleccionamos «Start exploring the console»:

Amazon cuenta desarrollo. Perfil

Cuenta en servicios web de Amazon (AWS)

Por último nos hará falta crear también una cuenta en los servicios web de Amazon (AWS) , ya que hay partes de la skill que se guardarán allí.

Si en algún momento he de aconsejaros sobre seguridad es ahora, pues en el proceso deberemos facilitar información de nuestra tarjeta y nos harán un pequeño cargo de 1$.

En este caso pensad que es muy probable que Amazon ya tenga esta información de cobro si solemos comprar en su plataforma, pero son «departamentos» independientes dentro de Amazon, por lo que no nos queda otra que dar estos datos de nuevo para continuar en el proceso. El coste del servicio que usaremos es gratis hasta 1 millón de llamadas/mes, así que tranquilos. El proceso de creación de cuenta en AWS se hace en varios pasos sencillos:

  • En el primero paso nos pedirán email y una clave, así como un nombre identificativo de la cuenta AWS.
  • En el segundo paso Amazon se asegura de que somos humanos con un captcha.
  • En el tercer paso nos pedirán información de contacto:
Cuenta AWS. Datos de contacto
  • Cuarto paso: Datos de nuestra tarjeta de crédito. Nos cargarán 1$ (al cambio hoy unos 0,88 €) para confirmar que la cuenta es nuestra. Deberéis aceptar el pago desde vuestra app del banco.
  • Ahora toca el paso de confirmar el número de teléfono con el envío de un mensaje sms en el que vendrá un código que deberemos introducir para confirmar.
  • Y por último elegimos el plan gratuito de soporte, le daremos a completar y listo!
AWS Elección plan soporte
Cuenta Amazon AWS creada

Una vez hemos completado ls requisitos, vamos con el proceso de creación de la skill…

Creación básica de Skill de Alexa

Lo primero que haremos será entrar en la consola de desarrollo de Amazon con las credenciales que pusimos en la sección de requisitos y seleccionamos Alexa Skills Kit y creamos un nuevo skill:

Alexa skills kit
Alexa. Nuevo skill

Le pondremos un nombre identificativo a la nueva skill y seleccionamos el idioma apropiado. Además elegiremos el modelo «Smart Home»:

Creación Skill Alexa

En la misma pantalla dejaremos seleccionado «Provision your own» y finalmente seleccionamos la opción de crear la skill con estos datos con el botón en la parte superior:

Creación de skill

En la siguiente pantalla que nos muestra la consola en el proceso de creación, deberemos seleccionar la versión 3 de Payload, pero no nos dejará grabar la skill todavía porque no tenemos lo necesario para rellenar el campo Default endpoint. Este dato lo tendremos más adelante y se llama identificador ARN de la función Lambda, así que por ahora dejad abierta esta pantalla hasta que completemos ese paso.

Importante, copiad el ID del nuevo Skill que más tarde nos hará falta al crear la función Lambda:

Creación skill Alexa

Por tanto, dejaremos por ahora la consola de desarrollo abierta en una pestaña aparte para continuar en este punto una vez tengamos el resto de datos a instroducir.

Creación de función Lambda

La función Lambda que va a residir en AWS de Amazon hará de intermediario entre Alexa y nuestro Home Assistant, por tanto dicho sofware tendrá ese único comentido:

Como integrar alexa en home assistant

Para la creación de dicha función Lambda en AWS y ver como integrar alexa en Home Assistant, vamos a seguir los siguientes pasos:

Creación de perfil IAM para la función Lambda

Primero entraremos en la consola de AWS (ojo no confundir con la consola de la cuenta de desarrollo), en este enlace con las credenciales que pusimos enla sección de requisitos como root:

AWS acceso root

A continuación, en el menú superior de «Services» os saldrá un desplegable y tendréis que buscar la opción IAM:

Servicio IAM

En el menú lateral buscaremos Roles y seleccionaremos crear un nuevo rol:

IAM. Nuevo Rol

A partir de aquí Amazon nos lleva por un asistente de 4 pasos donde debemos configurar las propiedades del nuevo rol.

En el primer paso elegiremos obviamente la opción Lambda:

Asistente creación rol AWS. Paso 1

En el paso 2 establecemos los permisos del nuevo rol, buscando la política «AWSLambdaBasicExecutionRole»

AWS iam permisos

El siguiente paso lo podemos saltar pulsando Next: Review

AWS IAM tags

Para terminar de crear el rol IAM, le daremos un nombre representativo y seleccionamos «Create role»:

AWS IAM. Nombre

Y ya debería aparecer nuestro nuevo rol IAM:

IAM rol

Programación de la función Lambda

De nuevo desde la consola de AWS desplegaremos los difrentes servicios desde la parte superior y buscaremos la opción Lambda:

Servicio Lambda

En la página donde trabajaremos lo primero que tenemos que hacer y muy importante es elegir la región apropiada para los servidores AWS que usaremos. En nuestro caso (España), pero aquí tenéis el listado que marca la documentación por si tenéis que poner otra opción:

  • US East (N.Virginia)  para English (US) o English (CA)
  • EU (Ireland)  para English (UK), English (IN), German (DE), Spanish (ES) or French (FR)
  • US West (Oregon)  para Japanese y English (AU)
Region servidores AWS

Ahora sí, seleccionamos Functions y Create function para iniciar el asistente:

Creación función lambda AWS

En el primer paso del asistente hay varias cosas que seleccionar:

  • Daremos un nombre representativo a la función. Os recomiendo un prefijo «lambda_» para no liaros luego.
  • En el campo de Runtime, podéis elegir entre varias versiones de Python. Os recomiendo elegir la más actual
  • Debemos desplegar las opciones bajo el epígrafe «Change default execution role» y seleccionar «use an existing role»
  • Ahora ya nos dejará elegir el rol IAM que hemos creado anteriormente
Creación función lambda. Información básica

En lesta sección iremos a la pestaña «Configuration» y en el menú lateral escogeremos «Triggers» para crear uno nuevo usaremos el botón:

Función lambda. Nuevo trigger

Y desplegamos las distintas opciones hasta seleccionar «Alexa Smart Home«

Trigger. Alexa Smart Home

Y nos preguntará por el identificador de la Skill que creamos en el paso de creación del Skill en la consola de desarrollo y añadimos el Trigger con el botón Add:

Skill ID

Ahora trabajaremos en la pestaña «Code» de la misma pantalla, borraremos el código de ejemplo que aparece en la página de Jason Hu y que no reproduzco aquí para que vayáis a su página y copiéis el código más reciente. Luego seleccionar «Deploy«

Código función lambda

Misma pantalla, pero esta vez en la pestaña «Configuration», seleccionamos «Environment variables» y editamos para añadir algunas que nos harán falta:

Variables de entorno función lambda
Función lambda. Añadir variable

Nosotros pondremos como mínimo estas dos variables. Podéis consultar las otras opciones en la documentación:

KeyValue
BASE_URLURL de acceso remoto a Home Assistant (sin barra final /)
DEBUGTrue
NOT_VERIFY_SSLTrue
Cuidao de no poner la barra final en BASE_URL
Variables de entorno función lambda

Una vez hemos terminado de introducir las variables, pulsaremos «Save».

Importante: En esta página tendremos por fin el código ARN de la función lambda (su identificador) que nos faltó en un paso anterior al crear la Skill desde la consola de desarrollo (developer console):

Identificación ARN función lambda

Como hemos comentado este identifiacador ARN tendremos que ponerlo en el campo «Default endpoint» de la consola de desarrollo, y ya podremos dar a Save:

ARN de la función lambda

Pruebas de la función Lambda

En la sección anterior hemos terminado de crear la función Lambda, y como dijimos al principio, esa función se encargará de hacer de conexión entre Alexa y nuestro Home Assistant, así que ahora toca enlazar lo que queda en nuestro conocido fichero configuration.yaml y ver si todo funciona correctamente desde la consola AWS.

En nuestro sistema Home Assistant, en el fichero de configuración configuration.yaml añadiremos el siguiente código por ahora y resetaremos desde Configuration > Server Controls

alexa:
  smart_home:
    filter:
      include_entities:
        - media_player.tv_salon

En versiones mas recientes ya no sera necesario resetear para coger la nueva configuracion. Bastara con entrar en el menu Ajustes>Sistema y seleccionar el icono de apagar/encender:

Antes de realizar la prueba, deberemos crear en Home Assistant un Token de vida larga (10 años) de la siguiente manera:

Desde Home Assistant, en la prte inferior del menú lateral tendremos nuestro perfil, y dentro del mismo buscaremos al final la opción «Long-Lived Access Tokens» para crear uno nuevo:

Creación de token long-lived

Le daremos un nombre (en el ejemplo hemos puesto «Alexa_token»), y nos mostrará una serie larga de caracteres que deberemos copiar en ese momento, pues por seguridad no hay forma de visualizar de nuevo:

Ahora ya tendremos el Token creado en Home Assistant:

Token long-lived creado en Home Assistant

Ahora tendremos que introducir clave «LONG_LIVED_ACCESS_TOKEN» y su valor (la cadena larga de caracteres que hemos copiado) como variable de entorno en la consola AWS. Recordad: En nuestra función Lambda, en Configuration, Environment variabes y Edit:

Añadir variable consola AWS

Y como hemos comentado añadimos como nombre de la variable (key) el string «LONG_LIVED_ACCESS_TOKEN» y en el valor la cadena de caracteres (token) generado en Home Assistant:

Desde la consola de AWS, en la pestaña Test podemos dejar el template de pruebas hello-world, le damos un nombre al evento (en nuestro caso le hemos llamado «prueba»), copiaremos el request que viene en la documentación y que reproducimos aquí, y probamos con el botón Test:

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

Si todo ha ido bien, veremos en la parte superior «Execution result: succeeded» y desplegando esa sección nos aparecerán todas las entidades de nuestro Home Assistant.

Enlazar la cuenta de Amazon con Home Assistant

Nuestra Skill recien creada ya nos aparece en la aplicación Alexa en nuestro móvil ( en mis skills de hogar inteligente), pero la manera que tenemos de exponer dispositivos y aceptar solo peticiones legítimas es que Alexa ascocie nuestra cuenta de Amazon con nuestra cuenta de Home Assistant.

Iremos a la la consola de desarrollador (developer console), elegimos nuestra skill recien creada y accedemos al apartado ACCOUNT LINKING:

Consola desarrollador. Skill alexa
Account linking alexa

En esta pantalla deberemos introducir varios datos necesarios. Vamos a asumir que tenemos habilitado el acceso externo desde internet en la dirección https://tu_subdominio.duckdns.org:8123 y pondremos los ejemplos acorde a esto, pero no olvidad particularizar para vuestro caso:

  • En el campo «Your Web Authorization URI»: https://tu_subdominio.duckdns.org:8123/auth/authorize
  • En el campo «Access Token URI»: https://tu_subdominio.duckdns.org:8123/auth/token
  • En el campo «Your Client ID» (Si no estás en Europa consulta la documentación): https://layla.amazon.com/
  • En el campo «Your Secret» pondremos cualquier cosa porque no se chequea, pero no podemos dejarlo en blanco
  • Campo «Your Authentication Scheme»: Elegimos «Credentials in request body»
  • Campo «Scope»: Añadimos y tecleamos «smart_home»

Quedará todo de la siguiente manera y haremos Save:

Account Linking. Alexa

Una vez que hemos puesto la información en Developer Console, tendremos que decirle a Alexa que vincule las cuentas.

Importante: Como nuestro móvil seguramente esté conectado a nuestra WiFi local, al intentar logear con el acceso remoto a Home Assistant, es probable que no funcione por NAT loopback (básicamente le estamos preguntando a nuestro router que salga para volver a entrar). Para solucionarlo simplemente tendremos que desconectarnos de nuestra WiFi durante estos pasos.

Desde la app de Alexa entraremos en Skills y juegos y pulsaremos en el skill creado para activarlo:

Skill app Alexa

Nos preguntará por las credenciales de nuestro sistema Home Assistant, y ya podremos descubrir los dispositivos de nuestro sistema:

Alexa. Dispositivo de Home Assistant vinculado

Posibles problemas y soluciones:

  • Si durante la activación de la Skill desde Alexa os da problemas del tipo «invalid client id or redirect uri» es posible que en algún momento por algún motivo estemos asociados como US. Deberéis de traspasar la cuenta desde Amazon a vuestra región.
  • Durante el paso de activar la skill desde la app de Alexa, también es posible que aparezcan otros errores. Si es así, probad a tener activado en el router el port forwarding desde 443 exterior a 8123 de nuestra LAN, y consecuentemente cambiad las URL en el paso de «account linking» de la skill a «https://tu_subdominio.duckdns.org/auth/authorize» y «https://tu_subdominio.duckdns.org/auth/token«. Una vez vinculadas las cuentas podéis de nuevo dejar 443–>443 en el router

  • VENTAJAS
    • Más flexibilidad
    • Gratuito
  • INCONVENIENTES
    • Dificultad alta
    • Necesarios datos bancarios

CONCLUSIONES

Hemos aprendido cómo integrar Alexa en Home Assistant de diferentes maneras, detallando los pasos y sobre todo resaltando lo bueno y lo malo de cada una.

Amazon es un gigante tecnológico y no se le escapa el negocio que hay detrás de los asistentes, por lo que cada vez veremos más skills y opciones en el ecosistema de Alexa. Eso no quiere decir que tengamos que renunciar a la opción independiente de Home Assistant donde se pone el foco en la privacidad, el código abierto y la seguridad.

Juguemos con lo mejor de cada mundo y veremos si en un futuro cercano Amazon abraza a Home Assistant.

Si te ha gustado este post, aquí tienes otros que te pueden interesar:

16 comentarios en «El asistente Alexa cada vez está más extendido, y no es raro que encontremos maneras de usarlo allí donde no se espera. Si quieres dar un salto de gigante úsalo junto con Home Assistant.»

  1. Muchisimas gracias. Un aporte buenisimo e instrucciones detalladas. He integrado los dispositivos que tengo en local de HA en Alexa con el metodo de crear la Skill y todo funciona a la perfeccion.
    Gracias

    • Estupendo. Aunque el post es largo, la idea era esa: Exponer cada paso para llegar al final con Alexa funcionando sobre nuestros dispositivos de HA.

  2. Muchas gracias por el aporte. Seguido y funcionando.

    Un saludo!

  3. Buenísimo trabajo. Gracias por el tiempo prestado y por el detalle de todos los pasos a seguir a quienes no nos movemos por el entorno AWS.

  4. Ha funcionado a la perfección.
    Me ha surgido un problema y he hecho lo de cambiar la redirección del puerto y ha funcionado enseguida.
    Una cuestión: He vuelto a poner el puerto 443 como estaba antes y el test en AWS no me ha funcionado. He puesto las URL de ACCOUNT LINKING como al inicio y también me da error el test. y ahi estoy, con el error.
    Otra cuestión: ¿Para cada dispositivo que queramos «enlazar» con alexa, hay que hacer todos los pasos de nuevo? Es algo que no me queda muy claro.

    • Hola Jose, es muy probable que en tu caso la redirección sea necesaria. Tiene sentido, pues el puerto estándar para SSL es el 443, y es por tanto el que se usa cuando poner https. La redirección simplemente llama internamente (en tu LAN) con otro puerto que no es el estándar, pero en el que has configurado Home Assistant (usualmente el 8123).
      Por otra parte no hará falta repetir todo para nuevos dispositivos. Simplemente al tenerlos expuestos en Home Assistant deberían incluirse en Alexa.
      Es una integración complicada y todavía no hay un método sencillo y gratis. Seguramente todo cambie con el nuevo protocolo Matter que permitirá utilizar directamente dispositivos de un ecosistema en otro.

  5. Excelente post. He realizado la integración creando la skill y puedo controlar perfectamente los dispositivos de Home Assistant desde Alexa. Sin embargo no puedo activar las rutinas de Alexa desde eventos de dispositivos procedentes de Home Assistant. Por ejemplo, si quiero que Alexa ejecute una acción cuando se active un sensor de puerta Tuya, puedo hacerlo si integro Tuya directamente en Alexa, pero no si lo hago a través de H.A. Creo que hay algo en la configuración que no permite la transmisión de eventos desde H.A. a Alexa. ¿Alguna idea? Gracias por todo.

  6. Hola, todo perfecto hasta que abro la app de Alexa, cuando accedo a la web de HA (por supuesto desconectando de la red wifi y usando datos) pongo el user y la contraseña, y despues me sale :
    no ha sido posible vincular a home assistant en este momento y tw deja un link a una pagina que ya no existe

    • Hola José,
      Indica por favor con cuál de los métodos tienes el problema y en qué pasó exactamente. Quizás algún otro usuario o nosotros podamos ayudarte.
      Un saludo y felices fiestas.

      • Hola, gracias por contestar pues el problema es cuando desde la app de Alexa pincho el Skill de desarroyador, y luego abro Home Assistant, meto el usuario y el password y me sale :
        No ha sido posible vincular a home assistant en este momento y pone un link a una pagina que ya no existe.
        Un saludo y Felices Fiestas.

        • Hola de nuevo Jose,
          Doy por sentado que tienes acceso a Home Assistant desde el exterior (sin wifi) en una dirección del tipo «https://tu_subdominio.duckdns.org:8123″ (particulariza para tu dominio o por si tienes un puerto distinto al 8123).
          También doy por realizado el paso de crear un Token de vida larga en Home Assistat.
          Prueba a activar en el router el port forwarding desde 443 exterior a 8123 de nuestra LAN, y cambia las URL en el paso de «account linking» de la skill a «https://tu_subdominio.duckdns.org/auth/authorize» y «https://tu_subdominio.duckdns.org/auth/token«. Una vez vinculadas las cuentas puedes de nuevo dejar 443–>443 en el router.
          Estos son los fallos más usuales, pues el paso en el que no avanzas es el de vinculación de la cuenta de Alexa con la de Home Assistant.
          De todas formas, aunque es una guia larga, revisa cada paso en detalle, pues el resto de usuarios y a nosotros mismos no nos saltó ese problema.
          Un saludo

  7. Y en HA me pone: Intento de inicio de sesión o solicitud con autenticación no válida

    • Creo que tiene que ver con algo del acceso, he intentado entrar con https/misdatos.duckdns.org:8123, pero he metido la contraseña de forma errónea (a propósito) y me sale el mismo error.

  8. A ver si a alguien le ha pasado esto. Me funciona todo bien excepto la prueba lambda, que no me devuelve los dispositivos. En la aplicación de Alexa me vincula la cuenta, pero igualmente no me devuelve nada. He puesto la configuración básica en home assistant:
    alexa:
    smart_home:

    Accedo perfectamente a la URL desde el exterior, tengo instalado ngix.

    El tema es que he tenido esta integracion funcionando mucho tiempo, he cambiado el equipamiento y ahora ya no consigo hacerla funcionar, he re-hecho todo desde el principio por si me faltaba algun token antiguo y nada. La prueba de labda no da un error como tal, pero devuelve esto:
    {
    «event»: {
    «header»: {
    «namespace»: «Alexa»,
    «name»: «ErrorResponse»,
    «messageId»: «e685f0ef-ea24-45ba-80ee-9d03f46e98e1»,
    «payloadVersion»: «3»
    },
    «payload»: {
    «type»: «INTERNAL_ERROR»,
    «message»: «Unknown error»
    }
    }
    }

    Y en los registros del lambda no encuentro nada adicional que pueda ayudarme

  9. Buenas noches
    Desarrollé una SKILL para conectar Alexa a mi Home Assistant.
    Desafortunadamente mi router (DIGI ZTE H3600 V9 estoy ubicado en Madrid) bloqueó el puerto 443 por razones internas y no permite que se desbloquee. Cuando quiero vincular la cuenta, llego al nivel para poner la contraseña de Home assistant y entonces me sale el mensaje «No fue posible vincular la cuenta con Alexa. Vuelve a intentarlo más tarde»
    ¿Hay alguna forma de evitar este problema o necesito cambiar de proveedor internet?
    La pruebe de la función LAMBDA funciona bien.
    Muchas gracias

Los comentarios están cerrados.