Uso de Google Home con Domoticz mediante IFTTT (requiere suscripción mensual)

En esta guía vamos a explicar cómo vincular Google Home con domoticz y, además, para todos aquellos que no utilicéis la APP de domoticz detallaremos paso a paso cómo generar accesos directos como widgets en el escritorio de Android, ya que tiene mucha transferencia con el proceso para enlazar Google Home y domoticz.

Os recordamos que actualmente IFTTT requiere una suscripción con pago mensual para poder disfrutar de más de 3 applets. En caso de que no queráis pasar por IFTTT o evitar este pago, deberéis seguir el siguiente tutorial: «Uso de Google Home con Domoticz mediante Node Red (actualmente NO requiere suscripción mensual)«.

Dicho esto, para poder utilizar domoticz con Google Home necesitamos tener acceso a nuestro domoticz desde fuera de nuestra red wifi. Para ello, necesitamos:

  • Tener el puerto de nuestra raspberry abierto.
  • Establecer una IP fija con un sistema tipo noip para acceso externo (con dominio noip gratuito). Tienes el siguiente tutorial para conseguirlo: «Cómo acceder a domoticz desde fuera de nuestra red Wifi«.
  • Opcionalmente puedes utilizar también un dominio propio

Os facilitamos la información dividiendo en distintos apartados

Creación de user y pass externo con BASE64

Vamos a domoticz > more options > edit users

Necesitamos crear un usuario que va a controlar los dispositivos desde fuera de la red Wifi. El user y pass no puede ser cualquiera al azar, seguimos las siguientes indicaciones para escogerlo.

Imaginamos:

User: userext
Pass: contraseña

Vamos a la siguiente web: https://www.base64encode.org/ y siguiendo nuestro ejemplo seria:

Hay que buscar un resultado que no tenga ningún =

Así que tienes que jugar con un usuario que no produzca un base64 con =

Ejemplo:
«Prueba» valdría, no tiene = al final.

Ahora hay que buscarte un password que no genere un == en el base64. Vamos a probar con «contraseña» como ejemplo de posible pass

Como puedes ver, utilizar «contraseña» como pass x ejemplo no valdría, porque tiene un = en el resultado.

Vamos a probar con «claves» como contraseña

«claves» por ejemplo sí valdría. No genera =

Entonces finalmente nos quedamos con:

User: Prueba
Pass: claves

Mucho cuidado, aquí es muy importante que respetemos el uso de mayúsculas y minúsculas. El programa las reconoce.

Con esto, nos vamos a domoticz de nuevo y siguiendo con el ejemplo, crearíamos un usuario llamado Prueba con password claves. 

Configuración en IFTTT: creamos el IF para acciones simples (encendido, apagado, ...)

El ejemplo que vamos a utilizar es el de dar la orden a Google para abrir el portón de un garaje que está controlado por domoticz gracias a un sonoff basic con relé seco a través de una escena con IDX 1.

Teniendo en cuenta lo anterior, nos vamos a IFTTT y creamos un APPLET.

Vamos a nuestro usuario y seleccionamos CREATE:
Clicamos sobre THIS:
Escribimos Google Assistant:
Seleccionamos Google Assistant y enlazamos nuestra cuenta. Seleccionamos la opción "Say a simple phrase".
Cubrimos los campos a nuestro gusto y clicamos sobre CREATE TRIGGER:

Creamos el APPLET: THEN para acciones simples (encendido, apagado, ...)

Encontramos Webhooks

Seleccionamos THAT:
Buscaremos WEBHOOKS y lo seleccionaremos:
Enlazamos nuestra cuenta y seleccionamos la opción que nos aparece para el THAT:

Ahora nos solicita varios datos que tenemos que aprender a extraer con la información que hemos creado anteriormente. 

Vamos a ir paso a paso.

  • URL: siempre que queramos crear APPLETS en Google Home para que ejecute acciones de domoticz, vamos a necesitar una URL que va a relacionar nuestro USER y PASS externo que hemos creado en BASE64 con el IDX de nuestro dummy/scene/group… de domoticz.
  • Method: dejamos GET.
  • Content Type: en función del sistema puede funcionar con application/x-www-form-urlencoded y en otros sistemas puede funcionar con JSON. Probaremos primero con application y si no funciona lo cambiaremos a JSON.

URL

Para elaborar la URL seguimos un patrón común:

http://dominiodeturaspberry/json.htm?username=XXXXXXX=&password=YYYYYYYY&type=command&param=switchscene&idx=1&switchcmd=off

Donde: 

  • dominiodeturaspberry es la url a la que accedes en externo a tu domoticz. Por ejemplo domotuto.hopto.org
  • XXXXXXX es el usuario extraído de BASE64.
  • YYYYYYYY es el password extraído de BASE64.
  • scene es una escena. En caso de que estuvieras enlazando a un device tipo dummy sería light.
  • El 1 es el IDX de dicha escena.
  • El off es la orden (podría ser también on, según nuestros intereses). En algunos casos poner off u on en minúsculas no funciona y se debe
    poner On u Off con la primera en mayúscula. Tendrás que probar cómo funciona en tu caso.

De este modo y basándonos en nuestro ejemplo, la URL sería la siguiente:

http://dominiodeturaspberry/json.htm?username=UHJ1ZWJh=&password=Y2xhdmVz&type=command&param=switchscene&idx=1&switchcmd=off

Donde:

  • «dominiodeturaspberry» es la url a la que accedes en externo a nuestro domoticz.
  • «UHJ1ZWJh» es el usuario «Prueba» exrtraído de BASE64.
  • «Y2xhdmVz» es el password «claves» que hemos pasado a base64.
  • Donde «scene» es la escena que queremos accionar, con IDX 1.

Lo introducimos todo en IFTTT, seleccionando application/x-www-form-urlencoded en Content Type, y clicamos sobre Create action.

Nos aparecerá un mensaje en el que deberemos escoger si queremos que nos notifique cuando se lance el APPLET o no. Nosotros por defecto lo desactivamos:

Clicamos sobre Finish y nos enlazará con la siguiente pantalla, en la que si clicamos sobre Settings vemos el resumen general del APPLET:

Comprobamos que el APPLET funciona con Google Home

Lanzamos la orden a Google Home y vemos si funciona. Si no nos funciona comprobamos antes de nada lo siguiente: introducimos la URL directamente en el navegador de nuestro ordenador o móvil. Veremos que se emite un mensaje. Si todo es correcto, debería ser el siguiente:

Pueden ocurrir dos cosas:

  • Que sea correcto:
    1. Puede que el problema lo tengamos en el user y pass de domoticz (igual hemos introducido mal el nombre o la contraseña, revísala y recuerda que se discrimina entre mayúsculas y minúsculas).
    2. Que IFTTT esté mal configurado. Ahi tienes dos teclas que tocar:
      • Cambia el Content Type a JSON y vuelve a probar. Si sigue sin funcionar prueba volviendo a poner el Content Type anterior y cambia la terminación de la URL poniendo la primera letra en Mayúscula (On u Off). Si no funciona, pon de nuevo JSON en Content Type y la Mayúscula en la terminación de la URL. 
  • Que sea incorrecto: tenemos un error en la URL. Revisamos que hayamos introducido correctamente el user y pass extraídos de BASE64 con sus mayúsculas y minúsculas correctamente introducidas. Si está todo correcto, revisa que tengas correctamente identificado si es una escena o un dummy, y si la terminación sea correcta (si estás llamando a una escena prueba con on y con off).

Configuración en IFTTT: creamos el IF para acciones que requieran porcentaje, como las persianas de shelly 2.5

El ejemplo que vamos a utilizar es el de dar la orden a Google para abrir las persianas al 50%. Dichas persianas están controladas por un shelly 2.5 y dentro de una escena. Por qué? Porque con esta escena se activan dos persianas distintas a la vez.

Teniendo en cuenta lo anterior, nos vamos a IFTTT y creamos un APPLET.

Vamos a nuestro usuario y seleccionamos CREATE:
Clicamos sobre THIS:
Escribimos Google Assistant:
Seleccionamos Google Assistant y enlazamos nuestra cuenta. Seleccionamos la opción "Say a phrase with a number".
Cubrimos los campos a nuestro gusto y clicamos sobre CREATE TRIGGER:

Creamos el APPLET: THEN para acciones que requieran porcentaje, como las persianas de shelly 2.5

Encontramos Webhooks

Seleccionamos THAT:
Buscaremos WEBHOOKS y lo seleccionaremos:
Enlazamos nuestra cuenta y seleccionamos la opción que nos aparece para el THAT:

Ahora nos solicita varios datos que tenemos que aprender a extraer con la información que hemos creado anteriormente. 

Vamos a ir paso a paso.

  • URL: siempre que queramos crear APPLETS en Google Home para que ejecute acciones de domoticz, vamos a necesitar una URL que va a relacionar nuestro USER y PASS externo que hemos creado en BASE64 con el IDX de nuestro dummy/scene/group… de domoticz.
  • Method: dejamos GET.
  • Content Type: en función del sistema puede funcionar con application/x-www-form-urlencoded y en otros sistemas puede funcionar con JSON. Probaremos primero con application y si no funciona lo cambiaremos a JSON.

URL

Para elaborar la URL a utilizar en este caso seguimos un patrón común:

http://dominiodeturaspberry/json.htm?username=XXXXXXX=&password=YYYYYYYY&type=command&param=switchscene&idx=5&switchcmd= set%50Level&level={{NumberField}}

Donde: 

  • dominiodeturaspberry es la url a la que accedes en externo a tu domoticz. Por ejemplo domotuto.hopto.org
  • XXXXXXX es el usuario extraído de BASE64.
  • YYYYYYYY es el password extraído de BASE64.
  • scene es una escena. En caso de que estuvieras enlazando a un device tipo dummy sería light.
  • El 5 es el IDX de dicha escena.
  • El set%50Level&level={{NumberField}} es la orden. 

De este modo y basándonos en nuestro ejemplo, la URL sería la siguiente:

http://dominiodeturaspberry/json.htm?username=UHJ1ZWJh=&password=Y2xhdmVz&type=command&param=switchscene&idx=5&switchcmd= set%50Level&level={{NumberField}}

Donde:

  • «dominiodeturaspberry» es la url a la que accedes en externo a nuestro domoticz.
  • «UHJ1ZWJh» es el usuario «Prueba» exrtraído de BASE64.
  • «Y2xhdmVz» es el password «claves» que hemos pasado a base64.
  • Donde «scene» es la escena que queremos accionar, con IDX 5.
  • Donde «set%50Level&level={{NumberField}}» es el porcentaje que queremos que suban las persianas.

Lo introducimos todo en IFTTT, seleccionando application/x-www-form-urlencoded en Content Type, y clicamos sobre Create action.

Cuando insertemos la URL veremos que {{NumberField}} coge formato sombreado.

Nos aparecerá un mensaje en el que deberemos escoger si queremos que nos notifique cuando se lance el APPLET o no. Nosotros por defecto lo desactivamos:

Clicamos sobre Finish y nos enlazará con la siguiente pantalla, en la que si clicamos sobre Settings vemos el resumen general del APPLET:

Comprobamos que el APPLET funciona con Google Home

Lanzamos la orden a Google Home de la siguiente manera:

Ok google! Persianas al 50

Vemos si funciona. Si no nos funciona comprobamos antes de nada que tengamos correctamente configurado el porcentaje tanto en la escena como en la URL.

Alternativa al uso de Google Home con persianas sin utilizar números en la frase

Otra opción en cuanto a las persianas y Google Home es que puedes crear escenas en domoticz para que las persianas suban o bajen individualmente o en grupo a un porcentaje en concreto establecido en el propio domoticz (mira el siguiente ejemplo en la imagen, con una escena para que lasl persianas se bajen al 20%). De ser asi, podrías crear una URL directamente con un ON u OFF con una orden simple (como el primer ejemplo de este tutorial), en lugar de complicarte con números.

En este caso la URL para la escena 8 (imagen anterior) sería:

http://dominiodeturaspberry/json.htm?username=UHJ1ZWJh=&password=Y2xhdmVz&type=command&param=switchscene&idx=8&switchcmd=off

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!