Google Home + Raspberry Pi : Domotizando tu casa

Social

Si tienes un Google Home y una Raspberry, o simplemente quieres poder realizar acciones en tu Raspi con la voz y Google Assistant, este post te interesa. De una manera sencilla, podremos encender luces o cualquier cosa que nos ocurra con la voz, utilizando el asistente de Google. ¿Empezamos?

Que necesitamos?

  • Una Raspberry 2+ con Raspbian instalado.
  • Unos leds para conectar al GPIO (o un relé y una bombilla)
  • Un dispositivo con Google Assistant, o Google Home.
  • Acceso a router de tu casa

Empezamos

Si tienes tu Raspberry con Raspbian instalado, perfecto.
Instalaremos algunos paquetes que necesitamos:

sudo apt-get install git

Ahora, en la misma home, podemos clonar el siguiente proyecto:

sudo git clone https://github.com/krpeacock/google_home_starter.git

Esto descargará la ultima versión del código publicado por krpeacock, con el que podemos lanzar un servidor con una API en nuestra Raspi, con el que aceptaremos peticiones HTTP que activarán los GPIO que queramos.

Archivos a modificar

Primero, crearemos un fichero .env

sudo nano .env

y dentro de le pegaremos el siguiente codigo, modificando con los datos que queramos:

DEV = TRUE
PORT = 80
PASS = Contraseña

Ahora editaremos el fichero saveState.json. Lo tenemos en la raiz del proyecto. En este fichero definiremos los diferentes Switchers que utilizaremos. Es decir, los diferentes GPIO que se podrán activar o desactivar con las peticiones HTTP.

nano saveState.json

Y el fichero de ejemplo contiene esto:


{“switches”:[{“id”:”sw1″,”state”:”off”,”name”:”Kyle’s Lamp”}]}

Podemos añadir nuevas lineas en el array, con el numero o nombre del sw (switch) que queramos. Luego habria que crear los ficheros a los que llamaría.

Ahora veremos los switch. Se encuentran en la carpeta: public/python/. Por ejemplo el fichero sw01_on.py, que contiene lo siguiente:


import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)

Como vemos, configura el modo del GPIO, y lo activa (OUT): Si creamos otros switches, solo tenemos que copiar el contenido y modificarlo con el numero del GPIO que vamos a activar.

Conexiones

Si nunca has conectado nada a GPIO de tu Raspberry, ahora es el momento. La manera sencilla de probar este tutorial, seria conectar cualquier LED simple, conectado con un cable al PIN que hayamos asignado. En el ejemplo es el GPIO23. En la siguiente imagen podemos reconocer cual es cada uno de los pines en la Raspi:

Vemos, que el GPIO23 es el pin 16.

Si quieres conectar una bombilla normal, o un enchufe, necesitaras un relé. En este link podeis encontrar más info de como conectar un Relé mecánico en la Raspberry -> http://rsppi.blogspot.com/2013/07/control-de-rele-mecanico.html

Puesta en marcha

Una vez modificados estos ficheros, ya podemos arrancar el servidor desde el directorio del proyecto:

 sudo npm start

Aparecerá un mensaje: Listening on port, donde aparecerá el puerto configurado.

Para que funcione correctamente desde Google Assistant, necesitas tener el puerto abierto en tu router, apuntando a la IP local de tu Raspberry. Si no sabes de que te estoy hablando, mirate este blog: https://www.prometec.net/raspberry-servidor-internet/

Ahora, puedes hacer una petición por POST (puedes probar POSTMAN) a la siguiente dirección, poniendo tu IP y tu contraseña (si has puerto otro puerto que no sea el 80, indicalo después de la IP y 2 puntos:

http://tudirecciónIP/API/switches/sw1?password=contraseña

Al realizar la petición, se cambiará el valor del Switch que has indicado (en esta url el sw1)de on a off o al revés. Puedes comprobar el estado de la GPIO con este comando (si el pin esta en IN o en OUT)

 gpio readall

IFTTT

Ahora entraremos a ifttt.com, y si no tenemos cuenta crearemos una (puedes loguearte con Google).

Una vez dentro, crearemos un applet: En la esquina superior derecha seleccionaremos New Applet.

Ahora en haremos click en if THIS, y buscaremos Google Assistant. Dentro de las opciones que nos da, seleccionaremos la primera (un comando básico).
Ahora tendremos que indicar que le queremos decir a Google Home o Assistant, hasta de 3 maneras diferentes, su respuesta, y el Idioma.

Una vez realizado esto, haremos click en el THEN THAT. Aqui añadiremos un Webhook, y le diremos que haga una petición POST con la URL anterior:

http://tudirecciónIP/API/switches/sw1?password=contraseña

Y esto es todo! Te aparecera el applet así:

Guarda, y ahora, cada vez que utilices tu Asistente de Google y le lances la frase que le has indicado, hara un Toggle del estado del GPIO que has indicado en los ficheros. Y esto puedes replicarlo con los pines que quieras, o las acciones que te pasen por la cabeza: hacer un wake on lan, emitir un sonido, etc.

Espero que os haya servido, mis fuentes han sido las siguientes:

https://www.instructables.com/id/Google-Home-Raspberry-Pi-Power-Strip/ https://github.com/krpeacock/google_home_starter https://www.instructables.com/id/How-to-Control-You-Room-With-Your-Voice-and-Google/

Xavi Gonzalez Autor

Técnico en explotación de sistemas informáticos y Técnico Superior de Administración de sistemas en red y de Desarrollo de Aplicaciones Web. Actualmente como Responsable técnico y desarrollador web en Egardata Informàtica, en Terrassa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*