Uso de alexa con domoticz: Alexicz

obreherrero del grupo «Domoticz a lo spain» de telegram nos explica cómo ha vinculado Alexa con Domoticz.

Si estamos aquí es porque a todos nos gusta tener domotizadas nuestras viviendas, donde juegan un papel importante los altavoces inteligentes.

En este tutorial conseguiremos que los dispositivos que tenemos en domoticz los podamos controlar mediante Alexa, el asistente virtual de Amazon.

Toda la información la hemos sacado, actualizado y traducido del foro oficial de domoticz.

Vamos a dividir el tutorial por pasos dentro de la misma página de forma que así os sea más fácil localizar una parte concreta:

Requisitos previos

Creación de un plano de la vivienda en domoticz

Lo primero que necesitamos es tener un plano de nuestra vivienda organizado en domoticz. Para ello se puede seguir los siguientes pasos (tutoriales):

1.1. Cómo crear Roomplans o Plano de la habitación en domoticz

1.2. Cómo subir un plano de nuestra vivienda a domoticz para cargar sobre él todo nuestro sistema

1.3. Una vez hecho lo anterior para que Alexa detecte los dispositivos más adelante es indispensable tener un “Room Plans” con el nombre $Hidden Devices (es el único que aparece por defecto) que abarque toda nuestra vivienda, como aparece en la siguiente imagen.

Si os fijáis aparece una zona azul que abarca toda la vivienda.

Además, hay que tener el resto de habitaciones creadas con los dispositivos metidos en su interior y marcados en el plano en cada estancia. SIN ESTO ALEXICZ NO DETECTARÁ DISPOSITIVOS (Gracias Jondi del grupo «Domoticz a lo spain» de telegram por haberte dado cuenta!!!!)

Creación de la cuenta developer de amazon y creación de proveedor OAuth2

2.2.Introducimos email y contraseña de nuestra cuenta de amazon para acceder

Una vez estamos dentro procedemos a crear un “Nuevo perfil de seguridad”:

Escriba cualquier nombre de perfil de seguridad, descripción y haga clic para guardar:

El siguiente paso es pulsar sobre “Configuración web” y sobre la opción “mostrar secreto”. En este momento es recomendable que copies y pegues en un documento de texto el “Id. De cliente” y el “Secreto de cliente”. Deja esta pestaña del navegador abierta porque volveremos más adelante:

Creación de una habilidad (Skill) de Alexa

El siguiente paso será crear nuestra propia habilidad o skill de Alexa, para ello pulsaremos sobre Amazon Alexa y las opciones de las siguientes imágenes:

En el siguiente apartado ponemos el nombre de la skill, el lenguaje español y seleccionamos el modelo de skill “Smart Home”. Acto seguido pulsamos sobre “Create Skill”:

En la siguiente pantalla ya tendremos la ID de nuestra habilidad o skill. Como dije anteriormente, en este momento copiaremos y pegaremos ese ID Skill en nuestro Notepad o bloc de notas para tenerlo guardado:

El siguiente paso será crear la función LAMBDA, por tanto, deja esta pestaña apartada y vamos a realizar el siguiente apartado.

Requisitos previos para la creación de la función LAMBDA

4.1. Para crear la función lambda necesitamos una serie de archivos, de los cuales deberemos configurar algunos parámetros. Para facilitar el proceso puedes descargar el zip a configurar del siguiente enlace.

Una vez descargado lo descomprimiremos y realizaremos las siguientes modificaciones:

  • En el archivo configdz.json habrá que poner:
    • La url de acceso externo y el puerto de nuestro Domoticz
    • El usuario y la contraseña de acceso a nuestro Domoticz
    • «includeScenesGroups»: true,
    • El resto se queda igual.
  • En el archivo lambda.py habrá que modificar solamente el puerto de nuestro Domoticz, siempre y cuando no sea el que aparece por defecto. Si tenemos el 8080 este paso nos lo saltamos.

Si tienes dudas sobre el puerto que usas, recuerda que para https es puerto 443 si no especificas otra cosa.

En este momento volveremos a comprimir todos los archivos que estaban dentro del zip que hemos descomprimido al principio de este punto, de manera que tengamos un zip con los mismos archivos y las modificaciones que hemos hecho. Es muy importante que no comprimas una carpeta con los archivos, sino los archivos directamente en un solo zip sin carpeta de por medio.

Creación de la función LAMBDA

Para crear la función LAMBDA necesitamos estar registrados en el AWS de amazon, para ello accedemos a la siguiente web https://aws.amazon.com/es/

En el proceso de creación de la cuenta nos pide para verificarla que introduzcamos una tarjeta de crédito. Todo lo que estamos haciendo en este tutorial entra dentro del plan gratuito, pero es requisito indispensable meter estos datos. Es recomendable de todos modos usar por ejemplo una tarjeta virtual o monedero virtual.

Una vez registrados deberemos iniciar sesión en AWS. Si desde el PC nos aparece algún error (como el de la siguiente imagen) os recomendamos acceder desde el email de confirmación que hemos recibido de cuenta AWS creada correctamente en: «Manage your account’s access keys«.

De recibir ese mensaje de error, como os comentábamos, vamos al email y clicamos sobre «Manage your account’s access keys«. Desde ahí podremos iniciar sesión correctamente.

Volvéis al ordenador e intentáis acceder de nuevo. Ahora sí os dejará.

Seleccionar la región de EU (Ireland)

El siguiente paso será buscar el servicio LAMBDA. Hay varias maneras, pero una de ellas es la siguiente:

Una vez dentro procederemos a crear una nueva función LAMBDA, momento en el que haremos lo que aparece en la siguiente captura:

Cuando le damos a crear la función nos aparecerá una pantalla en la que deberemos escribir el nombre que queramos, en nuestro caso Alexicz, y poner los datos como aparecen en la siguiente captura. Acto seguido procederemos a clicar sobre crear la función:

En este momento ya tenemos nuestra función lambda creada. Si nos fijamos, arriba a la derecha nos aparece un ARN con el ID de lambda. Al igual que hemos hecho con el resto de datos recomiendo copiarlo y pegarlo a nuestro Notepad o bloc de notas con los datos de todo este tuto.

Ahora vamos a añadir un desencadenador Alexa Smart Home a nuestra función. Para ello pulsamos sobre “Agregar desencadenador” y hacemos lo de las siguiente capturas:

En el siguiente apartado nos pide que metamos un “ID de la aplicación”, que en nuestro caso es el ID skill o de habilidad que guardamos en el notepad en el punto 3 de este tutorial. Por si es de ayuda el formato es amzn1.ask.skill.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ahora es momento de cargar el archivo zip que hemos creado con anterioridad con todos nuestros archivos modificados. Para ello basta con pulsar sobre “alexicz” (icono naranja) dirigirse al apartado “Código de la función” y al desplegable “Acciones”, donde nos encontraremos con la opción “Cargar un archivo zip”. Buscamos nuestro archivo en nuestro ordenador y le damos a cargar:

Una vez cargado el zip ya podremos ver en nuestro navegador los datos que metimos en los archivos. Además de lo anterior, deberemos irnos al apartado “Configuración del tiempo de ejecución” bajando la pantalla y escribir el nombre del controlador por “lambda.event_handler”:

Asimismo, un poco más abajo y dentro del apartado “Configuración básica” tenemos que tener los siguientes parámetros. (La descripción es opcional). Si no lo ves clica aquí:

En este momento no hay que hacer nada más, puesto que la función lambda ha quedado guardada y configurada.

¿Te has quedado bloqueado en este paso? No te preocupes, JoseMi del grupo «Domoticz a lo spain» de telegram nos explica cómo eludió este paso:

En el caso de JoseMi, además de los pasos siguientes, tuvo que darle acceso desde las IPs de Irlanda de AWS a su domoticz por geofiltrado. Para ello en el cortafuegos que tiene en casa decirle que permita acceder al domoticz desde la IP de AWS en Irlanda.

Continuamos creando un rol a mano: (quizá la opción desde la política de AWS templates también funcione):

Una vez creado el rol, ya nos deja seleccionarlo:

Terminamos de pulir nuestro Skill o Habilidad

Venga, ánimo que ya va quedando poco. Si hemos hecho lo anterior correctamente, vamos a terminar de configurar nuestra skill, de modo que volveremos a aquella pestaña que teníamos abierta allá por el punto 3 de este tuto.
Una vez hemos localizado la pestaña de nuestro navegador vamos a copiar y pegar nuestra Skill ID que tenemos en la parte superior. En default endpoint pondremos nuestro ARN de la función LAMBDA copiado en el inicio del tutorial y en nuestra zona Europe, India. (En los dos cuadrados debe aparecer la misma URL):

El siguiente apartado será configurar la vinculación de la cuenta. Para ello pulsaremos sobre la izquierda en “Account Linking”, donde se nos mostrará la siguiente pantalla:

En los apartados de la imagen hay que meter lo siguiente:

1. https://www.amazon.com/ap/oa/?redirect_url=https://layla.amazon.com/api/skill/link/XXXXXXXXXXXXXX

Lo que aparece en rojo lo podemos copiar de la parte inferior de esta web, donde nos aparecen varios enlaces. Nos quedamos con el que empieza por https://layla……. Y lo sustituimos por la parte roja.

2. Copiamos y pegamos lo siguiente sin modificar nada:

https://api.amazon.com/auth/o2/token

3. Copiamos y pegamos nuestro Cliente ID que lo tendremos en nuestro note pad y que obtuvimos en el apartado 2 de este tuto.

4. Copiamos y pegamos nuestro Cliente Secret que tendremos en nuestro notepad y que obtuvimos en el apartado 2 de este tuto.

5. HTTP basic.

6. Añadimos un scope y escribimos “profile:user_id” sin las comillas.

HECHO ESTO GUARDAMOS

Que no decaiga la fiesta, estamos a punto de terminar

Si recordáis tenemos que tener por ahí abierta la web https://developer.amazon.com/es/ (en security profiles), donde dejamos en la pantalla el apartado de “Gestión de perfiles de seguridad”. Bien, dentro de este apartado hay una pestaña llamada “Configuración web” y que deberemos pinchar sobre ella. Acto seguido le damos a editar, puesto que vamos a configurar las “URL de regreso permitidas”:

En este apartado debemos copiar y pegar las 3 url que aparecen al final de este apartado de la web que dejamos abierta con anterioridad con el “Account Linking”. Una vez copiadas guardamos:

El último paso antes de decirle a Alexa que busque los dispositivos que tengamos metidos en domoticz será meter el siguiente script.
Dentro de la web de AWS de amazon volvemos a la siguiente pantalla, donde pulsaremos las opciones de las siguientes capturas:

El nombre del evento puede ser el que nosotros queramos.

En la siguiente pantalla copiamos y pegamos el siguiente script:


{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "abc-123-def-456"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-skill"
} }
} }

Debe quedar tal que así:

HECHO ESTO, GUARDAMOS, CRUZAMOS LOS DEDOS Y NOS VAMOS A LA WEB DE ALEXA (https://alexa.amazon.es/spa/index.html?#cards) O NUESTRA APP PARA QUE ENCUENTRE TODOS LOS DISPOSITIVOS QUE TENEMOS EN DOMOTICZ.

Darle permisos en la app de Alexa al alexicz dentro de las skills de hogar digital

Vamos a darle permisos en la app de Alexa al alexicz dentro de las skills de hogar digital y luego poner credenciales de Amazon y finalmente detectar:

Pinchas en Dispositivos Abajo, luego en Mis Skills de Hogar Digital

Aquí pinchas en Alexicz:

Y aquí en activar Skill (yo lo tengo activado ya, de ahí que sólo deje desactivarlo).

Cuando haces este último paso, te ofrece la detección.

Información extra

Para que sólo un ALEXA nos responda:

Agradecimientos

Agradecer especialmente a DrBoom, a jondi y a JoseMi del grupo de Telegram «Domoticz a lo spain» su ayuda en la creación y elaboración de este pedazo de tutorial!!

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!