Descripción
Alexa es el asistente virtual de Amazon al que le puede pedir desde un resumen de las principales noticias del día o el pronóstico del tiempo, hasta la canción que le gusta o la gestión de la lista de la compra. Sus habilidades son cuantiosas y diversas, pero es posible que usted tenga necesidades particulares que no se vean resueltas, al menos, como le gustaría. Es ahí donde este libro le puede resultar de gran ayuda.
Gracias a los contenidos de este manual, aprenderá todo lo necesario para crear sus propias habilidades con la consola del desarrollador de Alexa, dotando a sus proyectos Arduino de un control por voz. Con este libro conseguirá:
- Emplear Alexa para solicitar información de sensores o controlar remotamente dispositivos conectados a Arduino y ESP8266. Si ha programado en alguna ocasión con Arduino, sabrá programar con ESP8266, porque utiliza el mismo IDE y el mismo lenguaje de programación.
- Conocer los conceptos que subyacen a los sistemas conversacionales y la forma de trabajar con ellos de forma totalmente práctica.
- Desarrollar programas mediante los que entablar una conversación para controlar cualquier dispositivo domótico integrado con ESP8266.
Además, el libro recoge múltiples prácticas que incluyen habilidades de juegos de palabras y de control domótico. El código que contiene la lógica de estas habilidades se desarrolla en JavaScript. Si desconoce este lenguaje, no se preocupe, se proporciona un amplio anexo en el que se enseñan los principios básicos de funcionamiento. Con ellos será capaz de entender el código de cada práctica, que se explica línea a línea.
Asimismo, en caso de no disponer de un altavoz Alexa, podrá descargar la app gratuita para su teléfono móvil con la que utilizar las habilidades que desarrolle.
Con este libro, dar rienda suelta a su imaginación es muy sencillo. No espere más para hacerse con su ejemplar, experimentar con Arduino y ESP8266, y conseguir todos los sistemas controlados por voz que desea.
El autor Tomás Domínguez es ingeniero de telecomunicación y tiene un doctorado en inteligencia artificial. Su labor profesional se ha desarrollado en una multinacional de telecomunicaciones, donde ha ocupado diversos cargos relacionados con la tecnología. Asimismo, ha ejercido como profesor universitario de ingeniería informática en la Universidad Alfonso X el Sabio de Madrid. En los últimos años, ha publicado diversos libros relacionados con Arduino y ESP8266.
Índice
1. INTRODUCCIÓN 1
1.1 Interfaces de voz 1
1.2 Sistemas conversacionales 2
1.3 IoT 4
2. ALEXA 5
3. HABILIDADES 7
3.1 Tipos de habilidades 7
3.2 Modelo de interacción 9
3.3 Invocación de habilidades personalizadas 10
4. PORTAL DE SERVICIOS PARA DESARROLLADORES
DE AMAZON 15
4.1 Consola del desarrollador de Alexa 18
4.2 Práctica de creación de una habilidad 22
4.3 Opciones de configuración de habilidades 26
5. MODELO DE INTERACCIÓN 35
5.1 Intenciones 35
- 5.1.1 Intenciones personalizadas35
- 5.1.1.1 Expresiones de muestra 36
- 5.1.1.2 Slots 36
- 5.1.2 Intenciones estándar 37
5.2 Slots 38
- 5.2.1 Tipos de slot personalizados 39
- 5.2.2 Tipos de slot estándar 39
5.3 Modelo de diálogo 41
- 5.3.1 Validación de los valores de un slot 42
- 5.3.2 Delegación del diálogo 43
5.4 Práctica de creación de un modelo de interacción 44
- 5.4.1 Establecimiento del nombre de invocación 44
- 5.4.2 Creación de una intención y sus expresiones
de muestra 45
- 5.4.3 Creación de los tipos de slot 55
- 5.4.4 Modelo de diálogo 60
- 5.4.5 Construcción del modelo de interacción 70
- 5.4.6 Prueba del modelo de interacción 74
5.5 Formato de datos JSON del modelo de interacción 81
- 5.5.1 Formato de datos JSON 82
- 5.5.2 Objetos JSON del modelo de interacción 85
- 5.5.2.1 Objeto languageModel 86
- 5.5.2.2 Objeto dialog 92
- 5.5.2.3 Objeto prompt 97
6. FUNCIONES LAMBDA 99
6.1 Flujo de comunicación entre un dispositivo Alexa y la función lambda de una habilidad 100
- 6.1.1 Protocolo HTTP 101
- 6.1.1.1 Peticiones HTTP 103
- 6.1.1.2 Respuestas HTTP 105
- 6.1.2 Formato de datos JSON en las comunicaciones HTTP 106
- 6.1.2.1 Formato de datos JSON de las peticiones HTTP 106
- 6.1.2.2 Formato de datos JSON de las respuestas HTTP 112
6.2 Alojamiento de la función lambda de una habilidad en el servicio Alexa 114
6.3 Módulos de desarrollo Node.js 116
6.4 Proceso de ejecución de la función lambda de una habilidad 117
- 6.4.1 Recepción de solicitudes 117
- 6.4.2 Procesamiento de solicitudes 120
- 6.4.3 Devolución de respuestas 123
6.5 Editor de código 126
6.6 Prácticas de desarrollo de la función lambda de una habilidad 130
- 6.6.1 Inicio de la habilidad 130
- 6.6.1.1 Desarrollo de la función lambda 130
- 6.6.1.2 Prueba de la habilidad 133
- 6.6.2 Invocación de una intención 141
- 6.6.2.1 Desarrollo de la función lambda 141
- 6.6.2.2 Prueba de la habilidad 152
6.7 Gestión de atributos 155
- 6.7.1 Tipos de atributos 155
- 6.7.2 Adaptadores de persistencia 157
6.8 Práctica de gestión de atributos de sesión 159
- 6.8.1 Creación de las intenciones estándar de confirmación y negación 159
- 6.8.2 Desarrollo de la función lambda 162
- 6.8.3 Prueba de la habilidad 174
6.9 Práctica de gestión de atributos persistentes 175
- 6.9.1 Creación de la intención de obtención del nombre del usuario 176
- 6.9.2 Desarrollo de la función lambda 178
- 6.9.3 Prueba de la habilidad 190
7. USO DE ALEXA DESDE UN TELÉFONO MÓVIL 195
7.1 Instalación de Alexa en el móvil 195
8. AMAZON CLOUDWATCH 199
8.1 Acceso a Amazon CloudWatch 199
8.2 Práctica de depuración de errores 202
9. PRÁCTICA DE DESARROLLO DE UNA HABILIDAD.
EL JUEGO DE QUIÉN ES QUIÉN 207
9.1 Creación del modelo de interacción 207
9.2 Desarrollo de la función lambda 215
10. EL MÓDULO ESP-01 231
10.1 Características del ESP-01 232
10.2 Programación del ESP-01 desde el IDE Arduino 233
10.3 Prácticas 237
- 10.3.1 Integración de Arduino con ESP-01 238
- 10.3.2 Cliente web 241
- 10.3.3 Cliente NTP 248
11. ADAFRUIT IO 253
11.1 Acceso al servicio 254
11.2 Componentes básicos del servicio 259
11.2.1 Feeds 261
- 11.2.2 Paneles de control 270
11.3 Integración con Adafruit IO 282
- 11.3.1 Librería Adafruit IO Arduino 282
- 11.3.2 API HTTP 285
11.4 Práctica de integración de ESP-01 con Adafruit IO 286
12. PRÁCTICAS DE CONTROL DE DISPOSITIVOS DOMÓTICOS 299
12.1 Escenario de integración de servicios 299
12.2 La placa WEMOS D1 R1 300
12.3 Actividades previas 303
- 12.3.1 Creación de la habilidad 303
- 12.3.2 Desarrollo de la estructura básica de la función lambda 306
12.4 Encendido y apagado de luces por habitación 318
- 12.4.1 Creación de los feeds en Adafruit IO 318
- 12.4.2 Desarrollo del programa ESP8266 321
- 12.4.3 Creación del modelo de interacción 328
- 12.4.4 Desarrollo de la función lambda 338
- 12.4.5 Pruebas de la habilidad 345
12.5 Consulta de la temperatura 347
- 12.5.1 Creación del feed en Adafruit IO 347
- 12.5.2 Desarrollo del programa ESP8266 349
- 12.5.3 Creación del modelo de interacción 351
- 12.5.4 Desarrollo de la función lambda 353
- 12.5.5 Pruebas de la habilidad 354
12.6 Programación de la temperatura de la calefacción 354
- 12.6.1 Creación de los feeds en Adafruit IO 355
- 12.6.2 Desarrollo del programa ESP8266 358
- 12.6.3 Creación del modelo de interacción 365
- 12.6.4 Desarrollo de la función lambda370
- 12.6.5 Pruebas de la habilidad 375
12.7 Programación de la hora de encendido de la calefacción 379
- 12.7.1 Creación del feed en Adafruit IO 379
- 12.7.2 Desarrollo del programa ESP8266 382
- 12.7.3 Creación del modelo de interacción 391
- 12.7.4 Desarrollo de la función lambda 394
- 12.7.5 Pruebas de la habilidad 405
ANEXO. FUNDAMENTOS DE JAVASCRIPT 409