Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266

Tekst
Loe katkendit
Märgi loetuks
Kuidas lugeda raamatut pärast ostmist
Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266
Šrift:Väiksem АаSuurem Aa

ALEXA

Desarrollo de aplicaciones IoT

para Arduino y ESP8266

Tomás Domínguez Mínguez


ALEXA

Desarrollo de aplicaciones IoT

para Arduino y ESP8266

Tomás Domínguez Mínguez

Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266

Primera edición, 2021

© 2021 Tomás Domínguez Mínguez

© 2021 MARCOMBO, S. L.

www.marcombo.com

Cubierta: ENEDENÚ DISEÑO GRÁFICO

Maquetación: cuantofalta.es

Correctores: Nuria Barroso y Beatriz García

Directora de producción: Mª Rosa Castillo

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra sólo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-3291-0

Producción del ePub: booqlab

A todos ustedes.

Sin lectores no habría libros.

TABLA DE CONTENIDO

1. INTRODUCCIÓN

1.1 Interfaces de voz

1.2 Sistemas conversacionales

1.3 IoT

2. ALEXA

3. HABILIDADES

3.1 Tipos de habilidades

3.2 Modelo de interacción

3.3 Invocación de habilidades personalizadas

4. PORTAL DE SERVICIOS PARA DESARROLLADORES DE AMAZON

4.1 Consola del desarrollador de Alexa

4.2 Práctica de creación de una habilidad

4.3 Opciones de configuración de habilidades

5. MODELO DE INTERACCIÓN

5.1 Intenciones

5.1.1 Intenciones personalizadas

5.1.1.1Expresiones de muestra

5.1.1.2Slots

5.1.2 Intenciones estándar

5.2 Slots

5.2.1 Tipos de slot personalizados

5.2.2 Tipos de slot estándar

5.3 Modelo de diálogo

5.3.1 Validación de los valores de un slot

5.3.2 Delegación del diálogo

5.4 Práctica de creación de un modelo de interacción

5.4.1 Establecimiento del nombre de invocación

5.4.2 Creación de una intención y sus expresiones de muestra

5.4.3 Creación de los tipos de slot

5.4.4 Modelo de diálogo

5.4.5 Construcción del modelo de interacción

5.4.6 Prueba del modelo de interacción

5.5 Formato de datos JSON del modelo de interacción

5.5.1 Formato de datos JSON

5.5.2 Objetos JSON del modelo de interacción

5.5.2.1Objeto languageModel

5.5.2.2Objeto dialog

5.5.2.3Objeto prompt

6. FUNCIONES LAMBDA

6.1 Flujo de comunicación entre un dispositivo Alexa y la función lambda de una habilidad

6.1.1 Protocolo HTTP

6.1.1.1Peticiones HTTP

6.1.1.2Respuestas HTTP

6.1.2 Formato de datos JSON en las comunicaciones HTTP

6.1.2.1Formato de datos JSON de las peticiones HTTP

6.1.2.2Formato de datos JSON de las respuestas HTTP

6.2 Alojamiento de la función lambda de una habilidad en el servicio Alexa

6.3 Módulos de desarrollo Node.js

6.4 Proceso de ejecución de la función lambda de una habilidad

6.4.1 Recepción de solicitudes

6.4.2 Procesamiento de solicitudes

6.4.3 Devolución de respuestas

6.5 Editor de código

6.6 Prácticas de desarrollo de la función lambda de una habilidad

6.6.1 Inicio de la habilidad

6.6.1.1Desarrollo de la función lambda

6.6.1.2Prueba de la habilidad

6.6.2 Invocación de una intención

6.6.2.1Desarrollo de la función lambda

6.6.2.2Prueba de la habilidad

6.7 Gestión de atributos

6.7.1 Tipos de atributos

6.7.2 Adaptadores de persistencia

6.8 Práctica de gestión de atributos de sesión

6.8.1 Creación de las intenciones estándar de confirmación y negación

6.8.2 Desarrollo de la función lambda

6.8.3 Prueba de la habilidad

6.9 Práctica de gestión de atributos persistentes

6.9.1 Creación de la intención de obtención del nombre del usuario

6.9.2 Desarrollo de la función lambda

6.9.3 Prueba de la habilidad

7. USO DE ALEXA DESDE UN TELÉFONO MÓVIL

 

7.1 Instalación de Alexa en el móvil

8. AMAZON CLOUDWATCH

8.1 Acceso a Amazon CloudWatch

8.2 Práctica de depuración de errores

9. PRÁCTICA DE DESARROLLO DE UNA HABILIDAD. EL JUEGO DE QUIÉN ES QUIÉN

9.1 Creación del modelo de interacción

9.2 Desarrollo de la función lambda

10. EL MÓDULO ESP-01

10.1 Características del ESP-01

10.2 Programación del ESP-01 desde el IDE Arduino

10.3 Prácticas

10.3.1 Integración de Arduino con ESP-01

10.3.2 Cliente web

10.3.3 Cliente NTP

11. ADAFRUIT IO

11.1 Acceso al servicio

11.2 Componentes básicos del servicio

11.2.1 Feeds

11.2.2 Paneles de control

11.3 Integración con Adafruit IO

11.3.1 Librería Adafruit IO Arduino

11.3.2 API HTTP

11.4 Práctica de integración de ESP-01 con Adafruit IO

12. PRÁCTICAS DE CONTROL DE DISPOSITIVOS DOMÓTICOS

12.1 Escenario de integración de servicios

12.2 La placa WEMOS D1 R1

12.3 Actividades previas

12.3.1 Creación de la habilidad

12.3.2 Desarrollo de la estructura básica de la función lambda

12.4 Encendido y apagado de luces por habitación

12.4.1 Creación de los feeds en Adafruit IO

12.4.2 Desarrollo del programa ESP8266

12.4.3 Creación del modelo de interacción

12.4.4 Desarrollo de la función lambda

12.4.5 Pruebas de la habilidad

12.5 Consulta de la temperatura

12.5.1 Creación del feed en Adafruit IO

12.5.2 Desarrollo del programa ESP8266

12.5.3 Creación del modelo de interacción

12.5.4 Desarrollo de la función lambda

12.5.5 Pruebas de la habilidad

12.6 Programación de la temperatura de la calefacción

12.6.1 Creación de los feeds en Adafruit IO

12.6.2 Desarrollo del programa ESP8266

12.6.3 Creación del modelo de interacción

12.6.4 Desarrollo de la función lambda

12.6.5 Pruebas de la habilidad

12.7 Programación de la hora de encendido de la calefacción

12.7.1 Creación del feed en Adafruit IO

12.7.2 Desarrollo del programa ESP8266

12.7.3 Creación del modelo de interacción

12.7.4 Desarrollo de la función lambda

12.7.5 Pruebas de la habilidad

ANEXO. FUNDAMENTOS DE JAVASCRIPT

Unidad 1
INTRODUCCIÓN

Alexa es un asistente virtual que utiliza una interfaz de voz tanto para recibir peticiones del usuario, como para responderle. Dichas respuestas se darán dentro del contexto de una conversación en la que se simula estar hablando con otra persona. Por eso, antes de empezar a desarrollar aplicaciones para este asistente debe conocer qué son las interfaces de usuario basadas en la voz, y los conceptos básicos que gobiernan los sistemas capaces de mantener conversaciones de forma natural. Puesto que nos centraremos en la utilidad práctica de estas aplicaciones en el ámbito IoT (Internet of Things: Internet de las cosas), también se darán algunas nociones básicas de qué hay detrás de esta tecnología y los motivos que hacen que esté cada vez más presente en nuestras vidas.

1.1 INTERFACES DE VOZ

Hasta no hace muchos años, la interacción hombre-máquina se realizaba con un teclado y una pantalla. De la mano de los móviles llegaron las interfaces táctiles, que aumentaron drásticamente su facilidad de uso. El último paso han sido las interfaces de voz, mediante las que ya no es necesario usar las manos, puesto que la comunicación se realiza hablando con la aplicación.


A este tipo de interfaces capaces de permitir la interacción por medio de la voz, se las conoce por su acrónimo inglés VUI (Voice User Interface: interfaz de usuario de voz). A los dispositivos que las incorporan se les denomina VCD (Voice Command Device: dispositivo de comandos de voz). A nivel empresarial, las primeras aplicaciones que utilizaron esta tecnología fueron los sistemas IVR (Interactive Voice Response: respuesta de voz interactiva), desarrollados en la década de 1980. Son los que hoy en día le atienden cuando llama a los centros de atención de clientes de muchas compañías para solicitar información o realizar determinadas gestiones, antes de pasarle con un agente humano (si fuera necesario). A nivel de usuario, las aplicaciones que disponían de este tipo de interfaces aparecieron más tarde, siendo las primeras las de marcación de teléfonos activada por voz.

La gran aceptación y consecuente expansión de las interfaces de voz se debe a su independencia del hablante, es decir, a que son capaces de entender lo que dice cualquier persona, sea cual sea su idioma, su acento o las particularidades de su voz. Además, con este tipo de interfaces se puede hacer prácticamente lo mismo que con cualquier navegador: buscar información, solicitar que suene su música favorita, administrar calendarios y citas, hacer pedidos, jugar, etc. Pero donde hay un sector en el que cobra especial relevancia es en el de IoT y, en concreto, en el ámbito domótico, que es precisamente en el que se centra este libro.

Las ventajas de uso de las interfaces de voz son la velocidad de entrada (es más rápido hablar que escribir), así como su capacidad para ser incorporadas a dispositivos que no requieran pantalla, pudiendo utilizarse en relojes o pulseras de tamaño reducido. Además, permiten su uso a personas con capacidades visuales o motoras disminuidas. Incluso, puede resultar imprescindible en el desarrollo actividades profesionales que requieran trabajar con ciertas aplicaciones mientras se tiene las manos ocupadas.

A nivel empresarial, el empleo de interfaces de voz también tiene ventajas, ya que representan una oportunidad de negocio. Para 2021, se estima que las marcas que adopten este tipo de interfaces y rediseñen sus sitios web, disfrutarán de un crecimiento del 30 % en los ingresos.

1.2 SISTEMAS CONVERSACIONALES

Los sistemas conversacionales son aquellos capaces de comprender el lenguaje natural y entablar una conversación con una persona. Su objetivo principal es el de mejorar la experiencia del usuario, sustituyendo las formas tradicionales de interacción con las aplicaciones por otra basada en la voz. Se suelen utilizar para dar información sobre cuestiones que se le puedan plantear o ejecutar las órdenes que se le pida realizar.


Los sistemas conversacionales (también se les llama chatbots) nacieron mucho antes que las interfaces de voz, pero ha sido gracias a estas cuando han empezado a vivir una segunda juventud. Uno de los primeros (Eliza) se creó en el MIT (Massachusetts Institute of Technology) entre 1964 y 1966 por Joseph Weizenbaum. Realizaba un procesamiento de lenguaje natural para tratar de mantener una conversación de texto coherente entre un psicólogo (al que simulaba) y su cliente (el usuario).

Desde entonces, y hasta hace poco tiempo, los sistemas conversacionales eran únicamente materia de estudio por parte de expertos en el área de la inteligencia artificial. Sin embargo, los avances en procesamiento del lenguaje natural y el reconocimiento automático del habla han democratizado su uso, haciendo que esté cada vez más presente en un número mayor de dispositivos. Este tipo de técnicas hacen que los sistemas conversacionales no solo tengan la facultad que oír lo que se les diga, sino de llegar a entenderlo, aunque use palabras o frases diferentes. Además, son capaces de mantener una conversación coherente, utilizando información de contexto para que la interacción con ellos sea similar a la que tendría con cualquier otra persona.

Su uso es cada vez más frecuente en nuestra vida diaria. Por eso, Gartner ya identificó en 2017 los sistemas conversacionales como una de las diez principales tendencias tecnológicas estratégicas.

El ámbito de uso de los sistemas conversacionales es cada vez más amplio, incluyendo, desde los más sencillos, en los que se solicita información concreta, como la previsión meteorológica, hasta los más complejos, empleados por centros de atención al cliente de grandes compañías, pasando por aquellos que permitan el control de dispositivos de uso doméstico. Será precisamente en el ámbito IoT, especialmente el centrado en sistemas domóticos, al que se orientan las prácticas de este libro.

 

1.3 IoT

Internet de las cosas (IoT) es un concepto propuesto por Kevin Ashton en 1999 para referirse a la conexión de objetos cotidianos a través de Internet. Su implantación es cada vez mayor y abarca, entre otros, los sectores de la medicina, la industria, el transporte, la energía, la agricultura, las ciudades inteligentes o los hogares, que es en el que nos centraremos. Hoy en día es cada vez más frecuente encontrar dispositivos en casa capaces de ser utilizados de forma remota a través de Internet, bien sea para su control o para obtener información de los sensores que lleven incorporados.


El éxito de la tecnología IoT se debe, en gran parte, a su capacidad para introducir objetos de uso diario en el mundo digital, abriendo un amplio abanico de nuevas posibilidades que incrementan enormemente su utilidad, ya que permiten el control de los objetos a distancia (p. ej., encender o apagar una luz) o que estos informen de datos recogidos por sus sensores (p. ej., humedad o temperatura). Todo ello desde cualquier dispositivo en cualquier parte del mundo.

Para controlar o recoger datos de los dispositivos IoT se utilizan generalmente interfaces clásicas que se ejecutan en un ordenador y, cada vez con más frecuencia, en teléfonos móviles. Si en vez de estas se emplearan interfaces de voz, la interacción se volvería más natural, haciendo más sencillo el uso de las aplicaciones. Por este motivo, la unión de las tecnologías IoT y las relacionadas con el desarrollo de interfaces de voz están llamadas a formar un tándem que hará que este tipo de dispositivos tengan cada vez un uso más cotidiano.

Unidad 2
ALEXA

Alexa es el asistente virtual de Amazon. Nació en 2014 junto con el altavoz inteligente Amazon Echo, pero hasta 2018 no ha estado disponible en español. Su nombre fue elegido por varias razones, la primera de la cuales hace referencia a la Biblioteca de Alejandría (Alexandria), uno de los mayores centros de difusión del conocimiento de la Antigüedad. El otro motivo que favoreció su elección fue más práctico, ya que la letra “x” es una consonante poco común y fácil de reconocer. Puesto que el asistente se activa por voz, se quería minimizar el riesgo de confundirlo con otras palabras que pudieran despertarlo accidentalmente.

Aunque en un principio Alexa solo estaba vinculado a la gama de altavoces inteligentes Amazon Echo, posteriormente se permitió que otros fabricantes pudieran integrarlo en sus productos. Así, podemos encontrarlo hoy en día en teléfonos móviles (Android o iOS), pasando por televisores (LG, Sony, Hisense, Toshiba, etc.), interruptores, enchuches, bombillas o sensores (Osram, Philips, Belkin, Nest, etc.), hasta coches (Ford, Volkswagen, etc.).


Si abrir el asistente a dispositivos que no fueran productos de Amazon favoreció el uso de Alexa, lo que empujó definitivamente su expansión fue permitir que cualquier desarrollador pudiera ampliar sus capacidades. De esta forma, lo que se puede llegar a hacer con Alexa ya no depende únicamente de los comandos de voz que tiene integrados, sino de las habilidades (skills) que se instalen para ampliar su funcionalidad. Hay miles entre las que elegir, tanto gratuitas como de pago.

Esta estrategia de permitir integrar el asistente en dispositivos de otros fabricantes, así como el desarrollo de habilidades por parte de terceros, ha provocado que hoy en día Alexa sea uno de los asistentes virtuales de referencia en el mercado.

Unidad 3
HABILIDADES

Desde el momento en el que pueda hablar con Alexa, disfrutará de un compañero virtual al que podrá pedirle, por ejemplo, que suene una canción, ver su serie favorita o resumirle las últimas noticas del día. Para dar respuesta a estas solicitudes, el asistente debe disponer de las capacidades adecuadas, que serán las que ya tiene integradas o haya adquirido de habilidades (skills) desarrolladas por terceros.

A lo largo de los siguientes capítulos, aprenderá a desarrollar sus propias habilidades que, al ejecutarse en la nube, podrán usarse desde cualquier dispositivo Alexa al que esté conectado con su usuario de Amazon.

3.1 TIPOS DE HABILIDADES

El desarrollo de las habilidades se realizará con un conjunto de herramientas llamado ASK (Alexa Skills Kit), pudiendo ser de los siguientes tipos:

• Personalizada (custom). Permite atender cualquier tipo de solicitud. Para ello, deberá desarrollar, desde cero, el modelo de interacción (la conversación) que quiera que se establezca entre el usuario y Alexa. En dicho modelo, se determinará lo que se pueda llegar a pedir (intenciones), junto con las expresiones utilizadas para ello.

• Casa inteligente (smart home). Como su nombre indica, este tipo de habilidad controla dispositivos domésticos inteligentes, como luces, termostatos, televisiones, cerraduras, etc. Se basa en modelos de iteración preconstruidos, que incorporan las acciones que atienden las habilidades (a las que se llama directivas del dispositivo, como, por ejemplo, encender, apagar o cambiar el nivel del brillo de una luz), así como las expresiones empleadas para solicitarlas (p. ej., “enciende la luz” o “sube la intensidad de la luz un 30 %”). Sin embargo, dan menos control sobre la conversación mantenida con el usuario, que deberá ajustarse necesariamente a dicho modelo de interacción.

• Flash briefing. Proporciona al usuario contenido breve, como los titulares de las noticias o el pronóstico del tiempo. Al igual que en las habilidades de casa inteligente, utilizará un modelo preconstruido con las expresiones que utilizaría el usuario para pedir el briefing flash o solicitar las noticias (p. ej., “dame las noticias de hoy”), además del formato del contenido en el que Alexa le dará la información solicitada. El desarrollador de este tipo de habilidades se encargaría básicamente de definir las fuentes de las que se tendría que obtener dicho contenido.

• Vídeo. Ofrece contenido de vídeo, como programas de televisión o películas. También está basado en un modelo de interacción preconstruido, con las solicitudes que maneja la habilidad (directivas del dispositivo) y las expresiones con las que el usuario puede invocarlas. En este caso, el desarrollador de la habilidad programaría el comportamiento de cada una de estas directivas (p. ej., la de buscar o reproducir contenido de vídeo), o cómo se tendrían que mostrar los resultados.

• Música. Habilita la reproducción de canciones, listas de reproducción o emisoras de radio, a través de un dispositivo habilitado para Alexa. En este caso, quien programa la habilidad debe definir el modelo de interacción, convirtiendo las expresiones del usuario (como, por ejemplo: “Alexa, pon música”) en solicitudes que la habilidad gestionaría para enviar el contenido de audio solicitado al dispositivo.

• Listas. Como indica su nombre, este tipo de habilidad le permitirá la gestión de listas, como, por ejemplo, la de la compra. Con ellas podrá agregar, borrar o modificar elementos a una lista de cualquier tipo.


El modelo de interacción establece la interacción con la habilidad a través de un diálogo. Sería análogo a la interfaz de una aplicación tradicional. La diferencia es que ahora las aplicaciones son habilidades y las interfaces gráficas son de voz. Por ese motivo, en vez de ventanas, botones o menús, lo que manejará a partir de ahora serán expresiones (frases).

De todos los tipos de habilidad descritos, trabajará únicamente con las personalizadas, ya que, al no tener que ceñirse a modelos de iteración preconstruidos, son los que dan mayor libertad a la hora de definir la forma en la que deberá transcurrir la conversación con el asistente. En realidad, este tipo de habilidades engloba a todas las demás.