Google Assistant. Desarrollo de aplicaciones IoT para Arduino y ESP8266

Tekst
0
Recenzje
Przeczytaj fragment
Oznacz jako przeczytane
Google Assistant. Desarrollo de aplicaciones IoT para Arduino y ESP8266
Czcionka:Mniejsze АаWiększe Aa



Google Assistant. 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

Diseño de cubierta: ENEDENÚ DISEÑO GRÁFICO

Maquetación: cuantofalta.es

Asesor técnico: Rubén Beiroa

Correctora: Mónica Muñoz

Directora de producción: Mª Rosa Castillo Producció del ebook: booqlab

«Cualquier forma de reproduccion, distribucion, comunicacion publica o transformacion de esta obra solo puede ser realizada con la autorizacion de sus titulares, salvo excepcion prevista por la ley. Dirijase a CEDRO (Centro Espanol de Derechos Reprograficos, www.cedro.org) si necesita fotocopiar o escanear algun fragmento de esta obra».

ISBN: 978-84-267-3241-5

Dedicado a todos aquellos que, desde Google, han colaborado para que Internet se convierta en nuestro segundo hogar

TABLA DE CONTENIDO

1. INTRODUCCIÓN

1.1 IoT

1.2 Interfaces de voz

1.3 Sistemas conversacionales

2. GOOGLE ASSISTANT

3. SU PRIMER ASISTENTE

3.1 Conceptos básicos de sistemas conversacionales

3.2 Requisitos previos

3.3 Creación del proyecto en Actions on Google

3.4 Modificación de la intención de bienvenida en Dialogflow

3.5 Activación del micrófono del simulador del asistente

4. ACTIONS ON GOOGLE

4.1 Consola

4.1.1 Sistema de pestañas

4.1.1.1 Pestaña de información general (Overview)

4.1.1.2 Pestaña de desarrollo (Develop)

4.1.1.3 Pestaña de pruebas (Test)

5. DIALOGFLOW

5.1 Consola

5.1.1 Configuración de los agentes

5.1.2 Menú lateral

6. CONCEPTOS BÁSICOS PARA EL DESARROLLO DE SISTEMAS CONVERSACIONALES CON DIALOGFLOW

6.1 Intenciones (Intents)

6.1.1 Práctica de uso de intenciones

6.2 Contextos (Contexts)

6.2.1 Práctica de uso de contextos

6.3 Entidades (Entities)

6.3.1 Práctica de uso de entidades personalizadas

6.4 Cumplimiento (fulfillment)

6.4.1 Conceptos previos al desarrollo de un cumplimiento

6.4.1.1 Protocolo HTTP

6.4.1.2 Tecnología webhook

6.4.1.3 Formato de datos JSON

6.4.2 Librerías de desarrollo

6.4.2.1 Librería Firebase Functions

6.4.2.2 Librería Actions on Google

6.4.3 Estructura de ficheros de un cumplimiento

6.4.4 Desarrollo de un cumplimiento

6.4.4.1 Generación dinámica de respuestas

6.4.4.2 Manejo de contextos y parámetros desde un cumplimiento

6.4.5 Depuración del código de un cumplimiento

6.4.5.1 Análisis de solicitudes y respuestas HTTP

6.4.5.2 Generación de mensajes de traza

7. PRÁCTICAS DE DESARROLLO DE SISTEMAS CONVERSACIONALES CON DIALOGFLOW

7.1 Juego de «adivina el número»

7.1.1 Creación de las intenciones

7.1.2 Desarrollo del cumplimiento

7.2 Juego de «sigue la secuencia»

7.2.1 Creación de las intenciones

7.2.2 Desarrollo del cumplimiento

7.3 Creación de las intenciones comunes de fallback

7.4 Creación de las intenciones comunes de ayuda y salida

7.5 Creación de las acciones (actions)

7.6 Uso del asistente desde un teléfono móvil

8. EXPORTACIÓN E IMPORTACIÓN DE AGENTES EN DIALOGFLOW

9. FIREBASE

9.1 Consola

9.1.1 Panel principal

9.1.2 Menú lateral

9.2 Práctica de creación de un proyecto

10. FIREBASE REALTIME DATABASE

10.1 Consola

10.2 Práctica de creación de una estructura de datos

11. EL MÓDULO ESP-01

11.1 Características del ESP-01

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

11.3 Práctica de integración de Arduino con ESP-01

11.4 Librería ESP8266Wifi

11.5 Práctica de acceso a Internet

12. INTEGRACIÓN DE FIREBASE REALTIME DATABASE CON ESP8266

12.1 Librería Firebase ESP8266 Client

12.1.1 Configuración de las credenciales de la base de datos

12.1.2 Lectura y escritura de datos

12.1.3 Sincronización de datos

12.2 Prácticas de integración de Firebase Realtime Database con ESP8266

 

12.2.1 Lectura y escritura de los pines digitales del ESP-01 desde Firebase Realtime Database

12.2.1.1 Desarrollo del programa ESP-01 usando una consulta manual

12.2.1.2 Desarrollo del programa ESP-01 usando una función de callback

12.2.2 Lectura de los pines analógicos de Arduino desde Firebase Realtime Database

12.2.2.1 Creación de la estructura de datos en Firebase Realtime Database

12.2.2.2 Desarrollo del programa Arduino

12.2.2.3 Desarrollo del programa ESP-01

13. FIREBASE CLOUD FUNCTIONS

13.1 Consola

13.2 Firebase CLI

13.2.1 Instalación de Firebase CLI

13.2.2 Acceso a Firebase CLI

13.3 Prácticas de despliegue de funciones JavaScript

13.3.1 Despliegue de una función JavaScript

13.3.2 Despliegue de un cumplimiento como un webhook

14. INTEGRACIÓN DE FIREBASE CLOUD FUNCTIONS CON ESP8266

14.1 Librería ESP8266HTTPClient

14.2 Práctica de integración de Firebase Cloud Functions con ESP8266

14.2.1 Desarrollo de la función en Firebase Cloud Functions

14.2.2 Desarrollo del programa ESP8266

15. INTEGRACIÓN DE FIREBASE CLOUD FUNCTIONS CON REALTIME DATABASE

15.1 SDK de Firebase Admin

15.2 Prácticas de integración de Firebase Cloud Functions con Realtime Database

15.2.1 Creación de la estructura de ficheros del proyecto

15.2.2 Escritura de datos en Firebase Realtime Database

15.2.3 Lectura de datos en Firebase Realtime Database

15.2.4 Creación de nodos en Firebase Realtime Database

15.2.5 Borrado de nodos en Firebase Realtime Database

16. LA PLACA WEMOS D1 R1

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

17.1 Escenario de integración de servicios

17.2 Actividades previas

17.2.1 Creación del proyecto en Actions on Google

17.2.2 Creación de la estructura de base de datos en Firebase Realtime Database

17.2.3 Creación de las entidades y las intenciones básicas en Dialogflow

17.2.4 Inicialización del proyecto Firebase

17.2.5 Desarrollo de la estructura básica del cumplimiento en Firebase Cloud Functions

17.3 Encendido y apagado de luces por habitaciones

17.3.1 Creación de la intención de obtención de la habitación en Dialogflow

17.3.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.3.3 Desarrollo del programa ESP8266

17.4 Lectura de la temperatura

17.4.1 Creación de la intención de consulta de la temperatura en Dialogflow

17.4.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.4.3 Desarrollo del programa ESP8266

17.5 Programación de la temperatura de la calefacción

17.5.1 Creación de la intención de programación de la temperatura en Dialogflow

17.5.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.5.3 Desarrollo del programa ESP8266

17.6 Programación de la alarma de un reloj despertador

17.6.1 Creación de la intención de programación de la alarma en Dialogflow

17.6.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.6.3 Desarrollo de la función que devuelve la hora en Firebase Cloud Functions

17.6.4 Desarrollo del programa ESP8266

17.7 Creación de las acciones

18. ANEXO - JAVASCRIPT DE SUPERVIVENCIA

18.1 Instalación de Node.js

18.2 ¡Hola Mundo!

18.3 Variables y constantes

18.4 Tipos de datos

18.5 Operadores

18.6 Estructuras de control

18.7 Funciones

18.8 Objetos y clases

18.9 Manejo de Strings

18.10 Módulos

Unidad 1
INTRODUCCIÓN

Google Assistant es un asistente virtual donde se utiliza una interfaz de voz, tanto para recibir las peticiones del usuario como para responderle. Dichas respuestas se darán dentro del contexto de una conversación en el 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 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 día, es más y 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 (por ejemplo, encender o apagar una luz) o que estos informen de datos recogidos por sus sensores (por ejemplo, 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 usaran 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.

1.2 INTERFACES DE VOZ

Hasta hace no muchos años, la interacción hombre-máquina se realizaba mediante 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 emplear 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 mediante 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 los llama 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 los ochenta. Son los que hoy 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 pasarnos 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 ha sido debida 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 reducidas. Incluso, puede resultar imprescindible en el desarrollo de actividades profesionales que requieran trabajar con determinadas 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ñan sus sitios web disfrutarán de un crecimiento del 30 % en los ingresos.

1.3 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 les puedan plantear o ejecutar las órdenes que se les pida realizar.


Los sistemas conversacionales (también llamados 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 Massachusetts Institute of Technology (MIT) entre 1964 y 1966 por Joseph Weizenbaum. Realizaba procesamiento de lenguaje natural para tratar de mantener una conversación de texto coherente entre un psicólogo (a quien 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 de oír lo que se les diga, sino de llegar a entenderlo, aunque se usen 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.

No fue hasta 2007 cuando se supo que compañías como Google y Apple estaban desarrollando funcionalidades de reconocimiento de voz. Actualmente, su uso es común en diversos dispositivos, especialmente en teléfonos móviles, donde ya está llegando a ser algo imprescindible. Google, consciente de esa necesidad, le llevó a presentar Google Assistant con Android 7.0 «Nougat», versión a partir de la cual se ha convertido en parte inseparable de este sistema operativo.

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 10 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 permiten 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.

Unidad 2
GOOGLE ASSISTANT

Como su nombre indica, Google Assistant es el asistente virtual de Google. Su uso no ha parado de extenderse desde su lanzamiento en 2016, siendo incorporado en un creciente número de dispositivos hardware (iluminación, enchufes e interruptores, electrodomésticos, televisores, etc.). Esta expansión se debe, en gran medida, a que la posibilidad de interactuar con cualquier aplicación o dispositivo mediante la voz hace más fácil y atractiva su utilización.

Por ese motivo, sus campos de aplicación son cada vez mayores:

• Acceso a la información de calendarios o cualquier otro tipo de datos de carácter personal

• Localización de información en línea, como direcciones, climatología, noticias, etc.

• Control de la música que se desea reproducir

• Establecimiento de temporizadores y recordatorios

• Creación de citas y envío de mensajes

• Interacción con aplicaciones instaladas en el teléfono móvil

• Lectura de notificaciones

• Realización de traducciones habladas en tiempo real

• Control de dispositivos IoT y hogar inteligente

Es precisamente, en el último campo, donde se enfocará este libro, dándole la posibilidad de desarrollar aplicaciones que le permitan «hablar» con dispositivos controlados mediante un ESP8266 (en concreto, ESP-01 y WeMos D1 R1), convirtiendo su casa en un verdadero hogar inteligente. Podrá programar la calefacción, saber la temperatura que hay en casa o preguntar si se ha dejado las luces encendidas.

Inicialmente, Google Assistant se lanzó únicamente para teléfonos Google Pixel y altavoces Google Home, pero, actualmente, está en todos los dispositivos Android modernos (teléfonos, relojes, televisiones, etc.). Además, no solo funciona con los altavoces inteligente de Google, sino incluso con los de otras marcas, como Sony, LG, Panasonic, etc.

Aunque podrá hacer uso de Google Assistant en diversos dispositivos, para facilitar que cualquiera pueda disfrutar del resultado de las múltiples prácticas que realizará a lo largo del libro, se utilizará el más asequible: el incorporado en teléfonos móviles Android. Los usuarios de iOS no quedarán marginados, ya que podrán descargarse la aplicación para iPhone, aunque con alguna restricción, que no les impedirá disfrutar de este asistente.

Seguro que estará deseando conocer todo lo que puede llegar a ofrecerle. En su web (https://assistant.google.com/), tiene toda la información que necesita.