Homeware es una API para Google Home diseñada para que de una vez por todas puedas conectar tus dispositivos y circuitos a Google Home y Google Assitant de la forma correcta, sin usar IFTTT.

Vídeo en el que se revisan los conceptos básicos sobre HomeWare, una API para Google Home.

Homeware es una API y para hacerla funcionar debemos desplegarla.

El despliegue es el proceso por el cual ponemos en funcionamiento nuestra propia copia de Homeware y la configuramos para funcionar con nuestros datos.

Desplegar HomeWare

El proceso para desplegar HomeWare es tedioso, pero, para que no te pierdas, lo vamos a realizar juntos.

Vídeo con el paso a paso del despliegue de Homeware

Antes de comenzar debes tener en cuenta que HomeWare es una REST API que se despliega como un proyecto de Firebase, una plataforma de Google, y que para llevarlo a cabo necesitas una cuenta de Google. Debes usar siempre la misma cuenta, con independencia de en que dispositivo, plataforma o sitio web te encuentres durante el proceso de despliegue.

Control de la Actividad – Dando permisos

El control de actividad de Google nos permite controlar que tareas puede realizar Google con nuestra cuenta y que datos tiene permitido almacenar. Para poder usar HomeWare tenemos que asegurarnos de que están activos varios permisos con estos pasos:


1 Abrir la página de Control de la actividad de la cuenta de Google

2 Activar el apartado Actividad en la web y en aplicaciones

3 Activar el apartado Información de tus dispositivos

4 Activar el apartado Actividad de Voz y Audio

Actions on Google – Creando un proyecto

Todo el proceso de control de Google Home se basa en un proyecto que debemos crear en Actions on Google. Este proyecto sirve para configurar cómo y por donde se debe comunicar Google con la API de HomeWare. Sigue los siguientes pasos para que todo vaya como la seda.


1 Abrir la consola de Actions on Google.

2 SeleccionarNew project.

3 Elegir un nombre para el proyecto.

Para evitar problemas, es preferible que el proyecto se llame Home.

4 Seleccionar la categoría Home control.

5 Seleccionar Smart home.

6 Seleccionar Develop del menú superior y posteriormente Invocation del menú izquierdo.

7 Escribir Home como nombre de Display y hacer clic en el botón Save.

¡Ya hemos creado el proyecto de Actions on Google! Los proyectos en Google Cloud se identifican con un ‘ID de proyecto’. Este sirve para identificarlo en todas las plataformas y conocer la URL del proyecto. Debemos seguir los siguiente pasos para averiguar cual es el ID de proyecto.

8 Ir a la Consola de Firebase.

9 Seleccionar el proyecto Home.

10 Hacer clic en el engranaje que aparece en la parte superior del menú lateral.

11 Apuntar el ID de proyecto que aparece en pantalla para usarlo más adelante.

Habilitar HomeGraph – La API de Google

1 Abrir la consola de Google Cloud y seleccionar el nombre del proyecto con el desplegable que aparece en la barra superior de la página.

2 Ve a la sección de Credenciales en el menú APIs & Services del menú lateral izquierdo.

3 Hacer clic en Crear credenciales.

4 Selecciona API key.

Apunta la API key que ha generado Google ya que la necesitaremos más adelante.

Firebase CLI – Run it locally

Para poder trabajar con el código de la API para Google Home y desplegarlo a Firebase necesitamos disponer de las herramientas adecuadas instaladas en el ordenador. Las siguientes instrucciones son para sistemas operativos basados en Linux. Si usas otro, no olvides que puedes recurrir a la documentación de Firebase para ver la forma correcta de hacerlo.


1 Abrir un terminal y ejecutar:

npm -g install firebase-tools

2 Verificar la instalación con:

firebase --version

3 Iniciar sesión con la cuenta de Google:

firebase login

4 Descargar o clonar el repositorio de HomeWare.

5 Entrar en el directorio API y ejecuta:

firebase use --add

6 Seleccionar el ID de proyecto y seguir las instrucciones.

7 Ir a la carpeta Functions e instalar las dependencias.

npm install

8 Crear las siguientes variables de entorno ejecutando:

firebase functions:config:set system.api-key="[API_key]" 
firebase functions:config:set system.api-uri="https://us-central1-[id].cloudfunctions.net"

Asegúrate de configurar las variables con los parámetros de tu proyecto.

  • [API_key] es el API key que nos proporcionó Google desde su consola
  • [id] es el ID de proyecto que obtuvimos del proyecto de Google Actions

9 Vuelve al directorio API y despliega la API

firebase deploy

Puedes entrar en https://[id].firebaseapp.com para verificar que el despliegue se ha realizado con éxito. Al entrar deberías ver un mensaje de bienvenida.

Base de datos de la API

1 Entrar en la consola de Firebase.

2 Seleccionar Database desde la sección Develop del menú lateral izquierdo.

3 Crear una nueva base de datos.

4 Habilitar tanto la configuración lectura como la de escritura.

5 Seleccionar Importar JSON desde el menú con 3 puntos verticales de la parte superior derecha.

6 Subir el archivo JSON que se encuentra en la carpeta Database del repositorio.

Configurar el proyecto en Google Actions

Llegados a este punto solo nos queda configurar el proyecto de Google Actions que creamos al principio. Gracias al proceso de configuración le indicaremos a Google donde está nuestra API y como tiene que comunicarse con ella.


1 Ir a la consola de Actions on Google y seleccionar el proyecto adecuado.

2 Ir a la sección Develop del menú superior y seleccionar Actions en el menú de la izquierda.

3 Indicar la URL de fullfilment usando el ID de tu proyecto.

https://us-central1-[id].cloudfunctions.net/smarthome

Atent@!

Asegúrate que la zona de tu despliegue de Firebase es «us-central1». Si no fuera así debes cambiar «us-central1» por lo que corresponda en todas las URL que configuramos en el despliegue.

Puedes ver la zona en cualquier URL de la sección Desarrollo > Functions de la consola de Firebase.

4 Clic en Save.

5 Ir a la sección Account linking del menú de la izquierda.

6 Marcar No, I only want to allow account creation on my website y clic en Save

7 Seleccionar OAuth y Authorization code y a a continuación hacer clic en Next.

8 Configurar la información de cliente como en la siguiente tabla y hacer clic en Next. Asegúrate de usar los datos de tu proyecto.

ParámetroValor
Client ID123
Client Secret
456
Authorization URL
https://us-central1-[id].cloudfunctions.net/auth
Token URL
https://us-central1-[id].cloudfunctions.net/token

9 Habilitar Google to transmit clientID and secret via HTTP basic auth header en Configure your Client y clic en Next.

10 Escribir lo siguiente en el cuadro Testing instrucions y hacer clic en Save.

No authentication needed

11 Ir al simulador en la sección Test del menú superior.

12 Seleccionar START TESTING.

Llegados a este punto lo tenemos todo desplegado y preparado para funcionar.

Enlazar la API para Google Home en la aplicación Google Home

Aún nos queda por realizar un último paso crucial para el funcionamiento y consiste en conectar la aplicación de Google Home que debes instalar en tu Smartphone con el proyecto.

1 Abrir la aplicación Google Home en el Smartphone.

2 Seleccionar Añadir.

3 Clic en Nuevo dispositivo.

4 Seleccionar Funciona con Google.

5 Marca la opción similar a [Test] Home.

¡Lo tenemos! Ya está todo configurado. Si todo ha ido bien al volver a la página principal de la aplicación Google Home debe aparecer una bombilla inteligente (ficticia por ahora) llamada Bulb.

Desplegar el CMS

Ya tenemos nuestra API para Google Home despliegada, sin embargo, necesitamos alguna forma de crear dispositivos. Esto se hace con el CMS.

El CMS o Content Managment System es una aplicación web que nos permite crear dispositivos y modificar sus propiedades. Todo esto sin necesidad de manipular la base de datos de manera manual. ¡Con colores todo es más bonito!


1 Dirigirse a la Consola de Firebase

2 Hacer clic en el engranaje que aparece en la parte superior del menú lateral.

3 Apuntar la API Key que aparece en pantalla.

4 En la carpeta public que se encuentra en la carpeta API del proyecto, modificar todos los archivos JS para incluir el ID de proyecto y la API Key.

5 Volver a la carpeta API y ejecuta en el terminal:

firebase deploy --only hosting

Cambia [id] por el ID de tu proyecto en https://[id].firebaseapp.com/cms/  y dirígete a esa dirección para acceder al CMS. Debe aparecer una página de login en la cual introducir un usuario y una contraseña. Estas credenciales aún no están creadas, así que: ¡vamos allá!

6 Volver a la Consola de Firebase

7 Seleccionar la opción Authentication que se encuentra en el menú izquierdo.

8 En la pestaña SIGN-IN METHOD habilitar la opción Email/Password usando el icono del lápiz.

9 Volver a la pestaña USERS y crear un nuevo usuario.

Crear un dispositivo

Llegados a este punto, lo tenemos todo desplegado y solo nos queda crear nuestros propios dispositivos. ¡El límite está en cómo controles los electrones que te rodean!

  1. Crear el dispositivo desde el CMS.
  2. Preparar el ESP8266 y programarlo con alguno de los códigos de ejemplo.
  3. ¡A volar!

En este vídeo repasamos cómo realizar los pasos anteriores convirtiendo un ESP8266 en una bombilla inteligente, ya que controlamos desde Google Home tanto su brillo como su estado de activación.

Cómo crear un dispositivo en Homeware

¿Alguna duda?¿Alguna idea? Compártela en los comentarios.

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en enrique.rinconingenieril.es

52
Leave a Reply

avatar
15 Hilos de comentarios
37 Respuestas a los hilos
1 Followers
 
Más recientes
Hilos más activos
14 Comentarios de autores
guillermotayson1984Enrique GómezCarlos Sánchez PayáJose Maria Blanco Comentarios recientes de autores
  Suscribete  
Nuevos Antiguos Más votados
Notificame
Carlos Sánchez Payá
Invitado
Carlos Sánchez Payá

Bien he llegado bastante lejos, estoy en la parte final de «Configurar el proyecto en Google Actions» paso 11 y 12.
Creo que han cambiado la web de google y están en otro sitio los botones porque ahora Test parece que es una sección de arriba y lo de Start Testing no lo encuentro 🙁

Alejandro Garcia
Invitado
Alejandro Garcia

Hola, en la seccion «Configurar el proyecto en Google Actions» punto 8 «Configurar la información de cliente», los parametros Client ID y CLient Secret, donde los puedo conseguir?
Client ID 123
Client Secret 456

Alejandro Garcia
Invitado
Alejandro Garcia

Enrique, gracias por el tutorial y las respuestas. Te pido disculpas por mi español Funciona todo excepto en la app Google Home en mi mobile, cuando creo el new device puedo ver [Test]MyProject pero al seleccionar obtengo mensaje: Algo ha ido mal con la autorización. Creo esta relacionado con el error cuando ejecuta firebase deploy ( missing file .key.json ) Con la última versión del repo todavía hay error missing key.json cuando deploy. Si lo creo manualmente finaliza el deploy pero no estoy seguro si el formato del objeto es correcto, se ve asi: { «project-ID»: { «key»:»xxx», «id»:»xxxxx» }… Leer más »

CHRIS
Invitado
CHRIS

Hola disculpa donde esta el ( missing file .key.json) y que es lo que creas manualmente…si me podrias ayudar gracias

Carlos Sánchez Payá
Invitado
Carlos Sánchez Payá

Una chorrada, en configurar el proyecto en google actions paso 3 la dirección debe acabar con / al final
https://us-central1-[id].cloudfunctions.net/smarthome/

Carlos Sánchez Payá
Invitado
Carlos Sánchez Payá

Me he atascado otra vez jejeje. He visto que ha habido gente que ha podido avanzar algo mas. Yo he completado los pasos del despliegue del CMS pero me sigue apareciendo lo mismo:

«Hello World!

This is my first Smart Home provider cloud service for Google Home»

abel tkachuk
Invitado
abel tkachuk

Hola Enrique un Gusto.
Exelente tu explicación, me funciono, me llevo 3 noches pero lo logre. Lo único es que cuando quiero loguearme al CMS siempre me deja la misma pantalla, y no hace nada.

Saludos,

Abel
BsAs, Argentina

Jesus Luna
Invitado
Jesus Luna

Enrique un gusto conocerte y agradecer el compartir tus conocimientos, estoy tratando de seguir tus instrucciones pero tengo problemas para cargar el Json no aparecen los tres puntos no se exactamente donde esta, gracias

Yair Hernandez
Invitado
Yair Hernandez

Hola Enrique, muchas gracias por compartir tus conocimientos, estoy siguiendo tus instrucciones al pide de la letra pero en el paso 8 de «configurar google Actions» en la sección de «client information» no me habilita el botón «next» por alguna razón, ya revise que el Client-ID y el Client Secret sean los mismos en la base de datos, te dejo una captura para ayudar en la explicacióncomment image

Espero puedas ayudarme ya que llevo varios días sin poder lograrlo, Saludos desde México

CHRIS
Invitado
CHRIS

Hola alguien me puede ayudar…. hice todo lo del tutorial pero cuando le doy a [test] home en la app de google home, me redirige a una pagina web (https://us-central1-[id].cloudfunctions.net) (el id si que se lo cambie), carga esta pagina y luego vuelve a la app de Google home la rueda azul que sale en el centro de la pantalla se pone roja y vuelve a la pantalla de gestionar cuentas.

CHRIS
Invitado
CHRIS

Hola lo siento por tanta molestias…pero lo he intentado varias veces con diferentes cuentas y móviles y siempre da el mismo error y no se a que se debe, el error en cuestión es el siguiente. 1:42:45.761 p. m. auth Function execution took 1459 ms, finished with status code: 302 1:42:44.302 p. m. auth Function execution started Lo veo en el registro de funciones de firebase. te adjunto una foto de las funciones que obtengo en firebase. Si necesitas mas información para descubrir el error no dudes en pedírmelo. ademas por lo que he leído en todos los comentarios es… Leer más »

Francisco
Invitado
Francisco

Hola, tengo un problema con mi ESP8266, lo que pasa es que no me detecta ninguna red, como podría solucionar esto?

Gracias

Jose Maria Blanco
Invitado
Jose Maria Blanco

Buenas tardes primero muchas gracias por la explicación es muy bueno pero todo lo tengo OK asta que intento que salga el dispositivo en Google Home, que no sale.

Carlos Sánchez Payá
Invitado
Carlos Sánchez Payá

Sigo atascado con lo de «Function execution took 1316 ms, finished with status code: 200» ¿Le pasa a alguno mas?

guillermo
Invitado
guillermo

Buenas noches desde México, es muy interesante y mil gracias por compartir tus conocimientos. Ahora mismo tengo un problema con arduino. Me marca demasiados errores de compilación. ¿De casualidad tendrás alguna referencia para hacer esto?

undefined reference to `Homeware::getToken()

Y de nuevo felicidades!!!!

tayson1984
Invitado
tayson1984

Buenas, he conseguido que todo funcione hasta el flasheo del ejemplo «light». Revisando el puerto COM4 en Arduino IDE aparece continuamente el mensaje «0» y «deserializeJson() failed: InvalidInput». No se si puede ser un problema con ArduinoJson.h o otra. A que puede deberse? Seria posible disponer del proyecto con las librerías. Por otro lado observo que en la base de datos status > light, el valor online no se actualiza. Una vez se ha puesto en «true» si desconecto el ESP8266 no pasa a «offline». Si observo en alive se actualiza periodicamente el timestamp por lo que parece que si… Leer más »

guillermo
Invitado
guillermo

Hola Tayso, tengo el mismo problema. Pudiste resolverlo?

Cerrar menú