Google Assistant dentro de Home Assistant

¿Google Assistant? ¿Home Assistant? ¡Un momento! ¿No estamos hablando de lo mismo?

Pues no. Home Assistant es el sistema operativo, el cerebro que instalamos en la Raspberry o en otro dispositivo para el control de todos los elementos domóticos; el sistema del que hemos venido hablando hasta ahora.

Google Assistant (asistente de Google) es no ni más ni menos que el sistema de control por voz implementado por Google en el buscador, en el teléfono móvil,…. Podemos decir que es el equivalente a Alexa de Amazon.

Nosotros hemos apostado por Google (Frente a Alexa) para todo lo que es el control por voz del hogar e integración de los dispositivos que hay en Home Assistant dentro de Google Home.

Espera, espera. ¿Otra vez? ¿Google Home? Google Home es una aplicación que puedes instalar en el móvil que forma parte del ecosistema de Google y que te permite controlar dispositivos domóticos con ciertas limitaciones. Home Assistant en un Sistema Operativo completo para domótica, que es lo que nosotros estamos configurando a lo largo de este blog.

¿Entonces?¿Por qué ahora aparece aquí Google Home? Porque si queremos controlar nuestros dispostivos con la voz usando Google Assistant, tenemos que configurarlos en nuestro cerebro Home Assistant, pero para ello tenemos que usar Google Home, que hace las veces de puente. Es un tanto engorroso pero tiene que ser así. Claro que siempre puedes prescindir de la voz…

¿Con qué objetivo hacemos esto?

  • Podemos lanzar mensajes de voz desde nuestros Google mini y ejecutar acciones sobre los dispositivos (enchufes, sensores, etc.) que tengamos configurados en Home Assistant.
  • Podemos exponer los dispositivos a Google. Y de esta manera verlos en Google Home. Podemos exponer por ejemplo scripts de Home Assistant, escenas, luces, tu vacuum, sensores y un largo etc.
  • Tendremos unificados todos nuestros dispositivos en una sola cuenta (Lo vemos entrando en Google Home => Ajustes => Funciona con Google), que es precisamente lo que vamos a crear ahora mismo. Y ya no dependeremos nunca más de terceros (De que se caigan sus servidores o que hagan cambios o limitaciones que pongan en riesgo nuestra domotización a futuro):
Control de la casa

Si bien creemos que para el usuario normal que no quiera un nivel de domotización extendido, que no use Home Assistant y que no quiera ninguna complicación Alexa es una opción muy recomendable, para poder ejecutar acciones con cierta complejidad y poder manejar por voz muchas facetas de nuestro Home Assistant, Google y sus dispositivos son para nosotros la solución más: rápida, barata y flexible.

Antes de comenzar, es indispensable comentar que si optas por la opción de “Home Assistant Cloud” (Y esos 5€ mensuales que hemos comentado en alguna otra entrada del blog) está opción que vamos a mostrar ya la tienes configurada por defecto, y tan solo te quedaría abrir la aplicación “Google Home” y enlazar tu cuenta de “Nabucasa” para tener todos tus dispositivos listos para poder ser usados con la voz y desde Google Home.

Creando tu proyecto en Google actions (para dummies)

Entramos en https://console.actions.google.com/ y nos logueamos con la misma cuenta con la que estamos usando Google Home (o Gmail) y hacemos click en «New Project» poniendo el nombre que queramos usando el tipo «Smart Home».

Nuevo proyecto Google Home
Tipo de proyecto Smart Home

Le damos a “Start building”. En la pantalla que aparece “Name your Smart Home action”. Aquí ponemos el nombre que luego aparecerá en la aplicación del móvil Google Home después de la palabra test (Como hemos visto más arriba poniendo ”[test] Mi Casa”) y en ese pantalla «Overview»:

Nombre para tu acción Smart Home
Overview

En “Build your Action” => “Add Action(s)”, y a continuación mete la URL de tu Home Assistant con el siguiente formato:

Añadir acción en Home Assistant
URL Home Assistant

Finalmente guardamos. Se queda un rato “Generating preview”. Paciencia. Una vez grabado, vamos a «Project Settings» y anotamos el Project ID que hemos generado:

Settings de proyecto
ID del proyecto

Ya podemos volver a Overview y pinchar en “Setup account linking”:

Overview
Setup account linking

A continuación tenemos que rellenar el formulario:

  1. Client ID: https://oauth-redirect.googleusercontent.com/r/[TU_ID_DE_PROYECTO] (Reemplaza [TU_ID_DE_PROYECTO] con tu ID de proyecto generado anteriormente).
  2. Client secret: lo que quieras, Home Assistant no necesita este campo.
  3. Authorization URL: https://[URL_HOME_ASSISTANT:PUERTO]/auth/authorize.
  4. URL del token (sustituir con su URL real): https://[URL_HOME_ASSISTANT:PUERTO]/auth/token.
  5. Dos veces al “Next”.
Adición de acción en Home Assistant

Ahora debemos de estar viendo “Configure your client (optional)”. Ponemos “email” y le damos a “Add Scope”, ponemos “name” y le volvemos a dar a “Add Scope”. (Dos scopes en total).

Configurando scope

No hay que marcarGoogle to transmit clientID and secret via HTTP basic auth header”. A continuación pulsamos Next y Save:

Guardar proyecto

Y nos vamos a Develop:

Develop en configuración
Configuraciones en Develop

Y pinchamos en test:

Test de la acción recién creada

¡¡Y cuando veamos la siguiente pantalla habremos acabado!! ¿Complicado?

Proyecto creado. Fin.

Enlazando tu proyecto de Google Assistant en Home Assistant (para dummies)

Ahora vamos a “File Editor” dentro de Home Assistant:

File Editor
Editor de ficheros Assistant

Necesitamos un archivo con todas las credenciales del proyecto Google que acabamos de crear. Para ello, vamos a Vamos a https://console.cloud.google.com/apis/credentials, pinchamos en «Crear credenciales» y luego en «Cuenta de Servicio:

Google Cloud Platform Cuenta de Servicio

Una vez creada la cuenta siguiendo los pasos nos debería dejar descargar un fichero JSON llamado «service_account.json» al finalizar. Por temas de seguridad, sólo se podrá hacer una vez.

Te recomendamos crear una carpeta llamada “google” para meter dentro dos archivos. El que tiene la información de tu cuenta Google (Que acabamos de extraer de Google y se llama “service_account.json”) y uno que vas a crear desde 0: “exposed-devices.yaml”:

Creación de carpeta Google

Finalmente escribimos en nuestro fichero de configuración de Home Assistant (configuration.yaml) la siguiente configuración:

# Google Assistant
google_assistant:
  project_id: mi-hogar-xxxc1
  service_account: !include google/service_account.json
  expose_by_default: false
  entity_config: !include google/exposed-devices.yaml

Y con esto finalizamos la configuración de Google Assistant en Home Assistant. Ha valido la pena. Ahora todos tus dispositivos estarán integrados y tendrás un orden y control unificado de los mismos desde una misma cuenta.

Recapitulación. Exponiendo tus dispositivos a Google Home

Todo parece muy confuso. Pero todo lo que hemos hecho hasta el momento es muy importante de cara a sentar las bases de nuestro proyecto domótico. Ya, ¿y qué hemos hecho exactamente? Tan solo hemos creado un proyecto en Google, que contendrá nuestros dispositivos Home Assistant y hemos habilitado las credenciales para que Google Home lo pueda encontrar y acceder a él.

¿Por qué hemos hecho todo esto?

  • Para no depender de terceros. Solo usaremos (O al menos lo intentaremos) dispositivos Zigbee y totalmente compatibles con Home Assistant. Y los expondremos a Google Home con la única finalidad de poder controlarlos con la voz.
  • De esta manera también, podemos acceder a muchos mas dispositivos, escenas y scripts que tengamos en Home Assistant. Ya os enseñaremos cómo más adelante, pero con los pasos hechos hasta el momento, abrimos la posibilidad de hacerlo en un futuro.
  • Unificación. Todos nuestros dispositivos se van a enlazar a Google desde una única cuenta. La que acabamos de crear. Y nuestra información solo viajará entre dos únicos puntos: Google y nuestro Home Assistant.

¿Qué tipos de dispositivos podemos exponer desde Home Assistant? En la documentación los llaman dominios. En realidad son tipos de dispositivos que son susceptibles de ser expuestos en Google Home. En el enlace vemos que tenemos una diversidad de dispositivos enorme y prácticamente podremos controlar por voz cualquier cosa o mandar a Home Assistant (vía script, por ejemplo) que lo haga:

  • panel_control_alarma
  • sensor_binario
  • cámara
  • climatizador
  • cover
  • fan
  • grupos
  • input_boolean
  • input_select
  • luces
  • puertas
  • media_player
  • escenas
  • script
  • sensor
  • switch
  • vacuum

Pero, ¿Cómo podemos exponer un dispositivo de Home Assistant en Google Home? A través de ese fichero que hemos creado y que se llama “exposed-devices.yaml”, lo abrimos con el editor y deberemos añadir simplemente los dispositivos con el siguiente formato:

# Dormitorio
light.luz_escritorio:
  name: "Luz escritorio"
  expose: true
  room: "Dormitorio"
sensor.sensor_temperatura_dormitorio_temperature:
  name: "Temperatura dormitorio"
  expose: true
  room: "Dormitorio"
sensor.sensor_temperatura_dormitorio_humidity:
  name: "Humedad dormitorio"
  expose: true
  room: "Dormitorio"
  
# Dormitorio principal
sensor.sensor_temperatura_dormitorio_principal_temperature:
  name: "Temperatura dormitorio principal"
  expose: true
  room: "Dormitorio principal"
sensor.sensor_temperatura_dormitorio_principal_humidity:
  name: "Humedad dormitorio principal"
  expose: true
  room: "Dormitorio principal"
light.luz_cama:
  name: "Luz cama"
  expose: true
  room: "Dormitorio principal"

# Baño
light.luz_bano:
  name: "Luz baño"
  expose: true
  room: "Baño"

# Entrada
light.luz_entrada:
  name: "Luz entrada"
  expose: true
  room: "Entrada"

Solamente tenemos que ver como se llamada nuestro dispositivo en Home Assistant y referenciarlo siguiendo la indentación y el formato que se muestra en la tabla superior.

Siempre después de modificar este fichero, deberemos reiniciar Home Assistant y decirle a nuestro Google Home: “OK Google” y seguido “Sincronizar dispositivos”. Entonces veremos como auto-mágicamente aparecen los dispositivos en Google Home:

Dispositivos en Home Assistant

Deja una respuesta

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