Proyecto domótica PARTE 12 - Crear servicio en Skills de Alexa y controlar nuestros dispositivos

En esta parte haremos algo similar a lo que hicimos en la parte anterior, haremos un Skill de Alexa, para que nuestro asistente Amazon Alexa pueda comunicarse con nuestros dispositivos, el proceso tiene cierto parecido al Google Actions.

12 ¿Que son las Skills de Alexa?

Las Skills de Alexa son funcionalidades extra añadidas por terceros que se pueden instalar al asistente. Con los Skills podremos crear diversas aplicaciones para interactuar con el asistente, desde chats, juegos y el que más nos interesa proyectos para dispositivos inteligentes.

12.1  Registrarse para crear un proyecto en la Consola de Google Actions.

Ingresar a la web de Alexa Developer Console (es necesario tener una cuenta de desarrollador).

Crear un nuevo Skill, presione el botón Create Skill.



Defina el nombre, seleccione el idioma (puede dejar el idioma inglés y posteriormente añadir el español), y por último seleccione el tipo de modelo (para nuestro caso es Smart home), para finalizar presione el botón Create skill.



12.1.1 Llegará a la vista Build del Skill de Alexa, por ahora dejaremos en pausa esta parte y retomaremos más adelante, lo importante es que copie y guarde el identificador de su skill para poder usarlo en el punto 12.3.5.




12.2 Configure la cuenta

12.2.1 Configura los permisos en un rol

Amazon maneja un sistema de permisos que puede llegar a ser un poco complejo en un principio, sin embargo cuando se logra entender su funcionamiento se vuelve fácil de manejar, en Amazon podemos controlar permisos no solo para cada usuario, si no también para cada aplicación, ahora procederemos a crear un permiso básico de ejecución para una aplicación Lambda.

Lo primero es ir a la opción para crear nuevo rol en IAM de AWS Management Console, puedes ir directo a crear un rol desde este enlace, o seguir los siguientes pasos.

En la aplicación IAM (Identity and Access Management) seleccionar el menú Roles que se encuentra a la izquierda.



Una vez dentro de los roles, presionar el botón "Create Role".



12.2.2 Una vez dentro seleccionar "AWS service" y "Lambda", luego presionar el botón "Next: Permissions".



12.2.3 Buscar la política AWSLambdaBasicExecutionRole, seleccionarla y presionar botón "Next: Tags".


12.2.4 En el paso 3 Add tags, no haremos nada así que presionar inmediatamente el botón "Next: Review".

12.2.5 Y por último debemos especificar un nombre a nuestro rol, en mi caso lo he nombrado "lambda_basic_execution" y presionar botón "Create role".




12.3.1 Crear una función en Amazon Lambda

Una función de Amazon Lambda es una aplicación que podemos crear sin necesidad de implementar grandes configuraciones de servidor, Amazon Lambda es compatible con seis lenguajes principalmente, pero el que nos interesa es javascript que se ejecuta mediante NodeJS. 

Utilizaremos la función Amazon Lambda como un servicio intermediario entre el Skill de Alexa y nuestro servidor Raspberry Pi 2, acá podremos agregar nuestro código fuente directamente y solo con unas pocas configuraciones nuestro Skill estará funcionando.

Para comenzar debe ingresar a la opción Lambda de AWS Management Console, una vez dentro presionar el botón "Create function".



12.3.2 Elegir los parámetros de configuración, definir un nombre para nuestra función en mi caso he usado SmartHomeDevices, seleccionar el lenguaje en que estará escrito nuestro código, en nuestro caso es Node.js 12.x, seleccione el rol que hemos creado "lambda_basic_execution" y finalmente presione el botón "Create function".



12.3.3 Agregar un trigger para que retorne la respuesta hacia nuestro Skill de Alexa, presionar el botón "Add trigger" que se encuentra en la sección Designer dentro del tag Configuration.



12.3.4 Ingrese Alexa Smart Home en el buscador, seleccione dicha opción.



12.3.5 Añadir el ID del Skill de Alexa que habíamos guardado previamente en el punto 12.1.1, verifique que el check de trigger habilitado esté marcado, y por último presione el botón "Add".



12.3.6 Añadir el código fuente de la función. Primero presione sobre el nombre de la función, para volver a las secciones de configuración.



Luego baje hasta la sección "Function code"




Copie el contenido del archivo "example-data-lambda.js" que se encuentra en el directorio "example-data" o vaya directamente a este enlace, y reemplace el contenido que viene por defecto en el index.js




Edite la linea 38 de la función ingrese el dominio publico de su servidor Raspberry Pi 2, y presione el botón "Save" para guardar sus cambios.



13.3.7 Verificar el Runtime y Handler, en la sección "Basic settings" debemos corroborar que los datos coincidan con nuestra código fuente, verificar que el Runtime sea Node.js (da lo mismo la versión desde la 10.x ya es compatible con nuestro código) y tambien verificar que el Handler sea index.handler. El handler permite especificar cual es la función principal o de entrada a nuestra aplicación Amazon Lambda.



Con todos estos pasos ya tenemos terminada nuestra aplicación Lambda, ahora solo debemos copiar nuestro ARN, que vendría siendo como el punto de acceso a nuestra función lambda y que lo agregaremos a nuestro Skill de Alexa en el siguiente paso.




13.4.1 Retomamos la configuración de nuestro Skill de Alexa y completamos la información que falta. Seleccionamos la version v3 de payload pegamos el ARN de la función de Lambda recién creada y presionamos el botón "SAVE".



13.4.2 En la sección ACCOUNT LINKING agregaremos los datos del servidor de autenticación.

Los siguientes datos son los de nuestro servidor Oauth 2, si aun no cambias los datos de ejemplo los puedes utilizar de la siguiente forma:

Clien ID: mySuperId

Client secret: mySuperSecretKey

Authorization URL: El dominio publico que apunta hacia tu Raspberry Pi 2

Token URL: El endpoint de autenticación, es el dominio + /api/oauth/token 

Agregar un scope: alexa

Presionar botón Save para finalizar




13.5.1 Enlazar Skill a Amazon Alexa

Ha llegado el momento de integrar todo lo construido hasta ahora y que los dispositivos que hayamos ingresados se vean en nuestra aplicación Alexa del teléfono.

1) En la aplicación Alexa, presionar el menú "Más", luego presionar sobre "Skills y juegos".


2) Seleccionar la opción "Mis Skills",  abajo seleccionar "Desarrollador" y luego presionar sobre el Skill que acabamos de crear.



3) Presionar el botón "ACTIVAR PARA USAR".



4) Iniciar sesión en nuestro servidor para traspasar el token de autenticación al Skill de Alexa.



5) Una vez terminada la autenticación se mostrará un mensaje de éxito, presionar el botón CERRAR para continuar.



6) Alexa ofrecerá la opción de detectar dispositivos, esto hará que el Skill de Alexa ejecute llamadas a nuestro servidor y recuperará el listado de dispositivos.



7) El dispositivo Alexa Echo Dot comenzará a mostrar una luz de espera mientras hace llamadas a nuestro servidor.




8) Finalmente se mostrarán los dispositivos que hayamos agregado en nuestro sistema.






Indice

Parte 15) Resultados

Comentarios