Integración de IFTTT en eedomus (o cualquier otro controlador) y viceversa

Abro este nuevo hilo con dos objetivos:

  1. Dar pistas sobre cómo crear interacciones desde eedomus (o cualquier otro controlador domótico) hacia IFTTT y viceversa, para los que no sepan cómo hacerlo.

  2. Solicitar vuestra ayuda para un caso muy concreto.

Empezamos. Va a ser un post largo, aviso…

1) CÓMO INTEGRAR IFTTT EN EEDOMUS (U OTRO CONTROLADOR) Y VICEVERSA

Inicialmente, la plataforma IFTTT sólo permitía crear interacciones entre servicios y dispositivos oficialmente integrados en la plataforma, es decir servicios y dispositivos que tuvieran su propio canal en IFTTT.

Ejemplo:

Si recibo un mail con un texto concreto —> Pon mi interruptor Wemo en ON

Posteriormente IFTTT creó y puso a dispositición de sus usuarios un nuevo canal que podríamos llamar “universal”, que permite crear interacciones entre cualquier dispositivo que sea capaz de mandar o recibir llamadas http y cualquier servicio o dispositivo oficialmente integrado en IFTTT. Ese canal universal se llama “Maker”.

Con Maker, puedes hacer, por ejemplo, lo siguiente:

Si mi Wemo está en ON ——> eedomus se entera, aunque Wemo no sea compatible con eedomus.

O al revés:

Mando una orden desde eedomus—> Mi Wemo se pone en ON.

Con Maker, es hasta posible crear ineracciones entre dos dispositivos no integrados oficialmente en IFTTT.

Para entender el mecanismo de esa integración, hay que saber bien lo que es IFTTT y como funciona.

En IFTTT las escenas domóticas se llaman recetas.

Esas escenas (“recetas”) se crean en base a dos elementos:

  • Un evento desencadenante (llamado trigger en inglés y conocido como “IF THIS” en IFTTT -“Si ocurre esto”-).

  • Una acción (conocido como “THEN THAT” en IFTTT -“Entonces que suceda esto”-).

Ejemplo de “receta” para dos dispositivos oficialmente integrados en IFTTT, si quisiera encender mi interruptor Wemo al recibir un mail concreto:

IF THIS [Canal mail—> Si el título del mail contiene “Encender Wemo”]

THEN THAT [Canal Wemo —> Wemo ON]

Ejemplo de “receta” para un dispositivo oficialmente integrado en IFTTT y otro que no, si quisiera por ejemplo que mi controlador domótico sepa en todo momento cuándo mi Wemo está en ON:

IF THIS [CanalWemo —> Si Wemo está en ON]

THEN THAT [Canal Maker —> Envía una URL muy concreta a mi controlador domótico, que hará que un periférico virtual llamado “Wemo” se ponga con el valor “ON”]

Ejemplo de “receta” para un dispositivo no integrado oficialmente en IFTTT y otro dispositivo o servicio integrado oficialmente, si quisiera por ejemplo dar la orden desde mi controlador domótico de poner mi interruptor Wemo en ON:

IF THIS [Canal Maker —> Mando a IFTTT una llamada http muy concreta desde mi controlador domótico]

THEN THAT [Canal Wemo —> Wemo ON]

Por tanto, en IFTTT puedes usar el canal Maker no sólo como evento desencadenante (trigger o IF THIS) sino también como acción (THEN THAT). Incluso puedes usarlo a la vez como trigger y acción en una misma receta (para crear interacciones entre dos dispositivos no integrados oficialmente en IFTTT).

Con esa base, creo que se entiende bastante bien la mecánica de integración.

Cómo usar el canal Maker como acción:

En nuestra receta en IFTTT, indicamos primero cual es el trigger y cuando llegamos a la acción elegimos “Maker”.

En ese canal Maker como acción, hay una casilla llamada URL, que es donde vamos a poner la URL que va a desencadenar una acción en nuestro controlador.

En eedomus, el formato de la URL que hay que usar es éste:

https://api.eedomus.com/set?action=periph.value&periph_id= xxxxxx&value=0&mode=mobile&api_user=xxxxx&api_secret=xxxxxxxxxxxxxxxx

Para entender bien como se construye esa URL, os recomiendo este post mío sobre la API de eedomus:

http://www.domoticadomestica.com/nociones-basicas-sobre-la-api-eedomus/

Lo que está haciendo esa URL es poner el periférico xxxxxxx de nuestro eedomus con el valor 0.

Cómo usar el canal Maker como evento desencadenante:

Para usar Maker como trigger, tienes que habilitar el canal Maker en tu cuenta de IFTTT y una vez que lo has hecho, IFTTT te da un código de API que debes usar en una URL muy concreta.

Luego construyes tu URL como te indican y la envías desde tu controlador domótico, por ejemplo. Cuando IFTTT recibe esa URL a través de Maker, considera que el evento desencadenante se ha producido y entonces ejecuta la acción.

El formato de la URL que hay que mandar a IFTTT es éste:

https://maker.ifttt.com/trigger/{event}/with/key/REPLACE_ME

Donde:

  • event es el nombre del evento que has creado en IFTTT (por ejemplo: Wemo_ON)

  • REPLACE_ME: el es código API que te da IFTTT cuando habilitas en tu cuenta el canal Maker.

Y hasta aquí mis pistas sobre cómo integrar IFTTT en eedomus (o cualquier otro controlador) y viceversa.

Ahora va mi pregunta. Pero el punto 2 es solo para lo más expertos en la materia. Si estás empezando con la integración entre IFTTT y tu controlador domótico, no sé si la lectura del punto 2 puede tener como efecto que salgas corriendo. Si estás empezando, pasa del punto 2 de momento (aunque no es tan complicado).

2) CONSULTA SOBRE CÓMO PERFECCIONAR EL USO DE MAKER COMO TRIGGER EN IFTTT.

Ya hemos visto que podemos mandar URL’s a IFTTT desde nuestro controlador domótico para desencadenar de esta manera una acción en un dispositivo que no está soportado por eedomus pero sí por IFTTT.

Voy a poner, de nuevo, un ejemplo concreto:

Pongamos que tengo el sistema IntesisHome en mi casa, que es compatible con IFTTT pero no con eedomus, y lo quiero controlar desde mi eedomus.

Creo una receta en IFTTT, que tendrá esta pinta más o menos:

IF THIS [Canal Maker ——> URL enviada desde eedomus]

THEN THAT [Canal IntesisHome —> Pon el aire acondicionado en 19º durante 2 horas]

La URL que tengo que mandar desde eedomus tendrá este formato, como hemos visto antes:

https://maker.ifttt.com/trigger/{event}/with/key/REPLACE_ME

Luego, al configurar la acción en IFTTT, es decir en este caso el canal IntesisHome, tendré varias casillas donde podré indicar la temperatura que quiero conseguir (19º en nuestro ejemplo) y el tiempo durante el cual quiero mantener esa temperatura (2 horas en nuestro ejemplo). Es solo un ejemplo, no recuerdo ahora mismo si el canal IntesisHome tiene o no esas variables, pero da igual.

Por tanto, siguiendo el método que os indicaba en el punto 1 de este largo post, tendré que crear en IFTTT tantas recetas como niveles de temperatura quiera establecer desde mi eedomus:

Para que resulte más cómodo, en eedomus crearé un actuador http con distintos valores, y en cada valor pondré la URL a enviar a Maker de IFTTT para cada temperatura (una URL para 19º, una URL para 20º, una URL para 21º, etc.). Y como os decía, en IFTTT tendré que crear otras tantas recetas.

Funciona muy bien pero es muy laborioso y ese método te obliga a crear una cantidad ingente de recetas en IFTTT.

Si tienes en tu casa 3 splits de aire acondicionado controlados por 3 controladores universales de IntesisHome y deseas poder establecer desde eedomus 5 niveles de temperatura (18º, 18,5º, 19º, 19,5º, 20º), tendrás que crear en IFTTT 5 recetas multiplicado por 3. Y si, además, quieres poder establecer desde eedomus el tiempo durante el cual regirá esa temperatura, el número de recetas se puede multiplicar exponencialmente.

Para evitar eso, el canal Maker te permite establecer hasta tres variables en tus recetas.

Es decir, cuando configuras la acción del canal IntesisHome en IFTTT, en las casillas “Temperatura” y “Duración”, en vez de poner “19º” y “2” respectivamente, como en nuestro ejemplo anterior, puedes poner lo que IFTTT llama “ingredientes”, es decir valores de variables (“Value1” y “Value2” en nuestro caso).

De esta manera conseguimos que en vez de crear 5 recetas para 5 temperaturas distintas, tengamos que crear una sola, pero cuando mandemos la orden a Maker de IFTTT, además de la URL tendremos que indicar los valores de esas dos variables.

Es mucho más eficiente y racional, obviamente, hacerlo así.

El problema es que si lo haces así, no puedes usar el formato de una llamada http corriente para desencadenar el trigger en IFTTT, sino que debes hacerlo en formato JSON.

Dicho de otra manera, si no uso variables, la URL que debo mandar a Maker de IFTTT desde mi eedomus, debe tener el formato que os indicaba antes:

https://maker.ifttt.com/trigger/{event}/with/key/REPLACE_ME

Pero si uso variables, tengo que llamar a Maker en formato JSON, ya no es una URL, es una linea de comando como ésta:

curl -X POST -H “Content-Type: application/json” -d ‘{“value1”:“19”,“value2”:“2”}’ https://maker.ifttt.com/trigger/{event}/with/key/REPLACE_ME

Esa linea de comando, no la puedo ejecutar desde eedomus. No se puede hacer desde un actuador http, por ejemplo.

Mi pregunta es pues justamente esa:

¿Cual es la mejor forma de ejecutar esa línea de comando desde eedomus?

¿Hay otra opción que usar un script y/o una Raspberry PI?

¿Se os ocurre alguna manera más sencilla de integrar eso en eedomus sin pasar por un script?

¿Existe alguna forma de integrar esas variables en la URL para que pueda hacer la llamada desde eedomus con un actuador http? (no lo creo, pero…).

Mil gracias por vuestra ayuda. Con que hayáis leído hasta aquí, ya me parece un logro ;D 8)

Me parece muy interesante el canal Maker de IFTTT para integrar con eedomus.

Hasta ahora, sólo he creado un par de recetas en este canal para dos acciones muy específicas, que básicamente se basan en la localización del iPhone. Es justo lo que comentas arriba.

Para entrar un poco más en detalle por si le sirve de ayuda a alguien:

  • En eedomus:

    • He creado un nuevo estado con dos posibles valores:
      • En casa → valor 0
      • Fuera de casa → valor 1
  • En IFTTT:

    • He creado una receta basada en la localización para iOS y como Acción una llamada http a mi eedomus:

https://api.eedomus.com/set?action=periph.value&periph_id=330856&value=1&api_user=xxxx&api_secret=xxxx
Con esto cambio el valor de mi escena de eedomus. Tengo una receta para cuando mi teléfono entra en el rango y otra para cuando sale. Cada una de ellas cambia el valor a 0 ó 1.

Sólo con esto ya puedo saber si mi teléfono está o no en casa, y por las pruebas que llevo es muy acertado (como recomendación, hay que tener siempre activado el wifi en el teléfono, ya que se consigue mucha más precisión).

Todo esto lo he montado para que me abra las puertas del garaje cuando estoy llegando a casa. Por supuesto he puesto más condicionantes para la apertura, prefiero que algún día no me abra la puerta a que me la abra cuando no debe.

Originalmente utilicé el canal oficial de Wemo en IFTTT (tengo Wemo Maker), pero en una ocasión actuó cuando no debía, lo que me llevó a replantearme la estrategia y a meter por medio a eedomus para tener un mayor control.

Y ahora, volviendo a lo que comentabas, la parte avanzada para perfeccionar el uso de Maker.
Prueba a utilizar en la llamada http variables de la siguiente forma:

http://maker.ifttt.com/trigger/{event}/with/key/REPLACE_ME?value1=xxx&value2=xxx

La primera variable, siempre debe estar separada con el símbolo “?”, el resto van con “&”.

Prueba y me comentas, si no funciona mucho me temo que habría que recurrir a la Rpi porque las llamadas o scripts desde eedomus está muy limitado.

Mil gracias. Creo que probé ya eso que me comentas, pero ahora mismo voy a probar de nuevo por si me hubiera equivocado en alguno de los caracteres.

En cuanto a la geolocalización con IFTTT, lo tengo exactamente, pero exactamente, como tu, jeje. Y funciona genial, a mi me abre la cancela y me enciende la luz del jardín cuando llego.

No tengo latencia prácticamente.

Por cierto, que con Maker tampoco hay latencia. Han mejorado mucho ese aspecto en IFTTT y es muy de agradecer.

Ahora te comento si me ha funcionado.

En efecto, ya lo había probado, no funciona :frowning:

IFTTT me devuelve un error, me dice que el canal de la acción no admite esa URL.

Por tanto, si no es un problema de sintaxis, como creo, no hay más remedio que hacerlo con una RPi… O crear todas las recetas necesarias…

Déjame revisarlo, porque acabo de hacer una prueba rápida creando una receta para que al recibir el evento me envíe una notificación al iPhone. Esta prueba la he lanzado desde la Rpi con un simple curl, con los parámetros como te he comentado y me ha funcionado:

curl ‘https://maker.ifttt.com/trigger/test_maker/with/key/MI_LLAVE?value1=1&value2=2

Voy a probarlo desde eedomus y te cuento.

Gracias anticipadas.

A mi desde eedomus no me funciona usando el campo de valores en el actuador http.

Voy a ver si poniendo todo en el campo de la URL cuela.

Igual, como estoy haciendo tantas peticiones por las prueba, me bloquea el canal de la acción… O quizá la imposibilidad se deba al canal que estoy usando en particular.

Pero con linea de comando sí que me funciona.

Efectivamente, es lo que te iba a decir, pon todo en URL.
Lo acabo de probar, y funciona.

Buenos dias kasz,podrias explicarme con detalle lo que comentas de la localizacion para iphone?vivo en un duplex de 3 plantas y cuando llego a casa no se si esta mi mujer o no con lo que no se si esta la aalarma activa o no,asi podria meter la localizacion del los dos iphones en la regla de alarma para si esta quitada y hay alguien que no se ponga

Gracias

Sin problema Pedro, este fin de semana te lo detallo aquí en el foro.

Fantástico, funciona a las mil maravillas!!!

El fallo mío fue meter los valores en el campo de valores en el actuador http. No entiendo por qué no va porque lo suelo hacer así, pero la cuestión es saberlo. Poniendo toda la URL, incluidas las variables, en el campo de URL en eedomus, funciona perfectamente.

Entre el momento en que eedomus ejecuta la llamada http y el momento en que el dispositivo de destino (no compatible con eedomus pero sí con IFTTT) ejecuta la orden, pasan exactamente 15 segundos.

Simplemente es perfecto. Se depende de una plataforma externa (IFTTT), pero te da una infinidad de posibilidades de integración. De esta manera, los que tengáis IntesisHome, Evohome y otras muchas cosas, lo podéis integrar ya mismo en eedomus.

Mil gracias Carlos por tu ayuda.

Muchas gracias kasz,espero ansioso!!!

Hola phroc,

Realmente el uso de IFTTT con caña MAKER y EEDOMUS tiene muchas utilidades haciendo uso de las tres variables que se permiten en la url de llamada a MAKER.

Por ejemplo yo lo estoy usando para registrar información combinada de periféricos Eedomus en hojas Excel Google Drive a modo de histórico o para hacer cálculos o estadísticas. En este caso: registro en GoogleDrive consumo de brasero, tarifa eléctrica en ese preciso momento y tiempo con el mismo consumo y la misma tarifa:
https://maker.ifttt.com/trigger/BraseroEncendido/with/key/XXXXXXXX?value1=[LAST_VALUE PERIPH_ID=XXXXXX]&value2=[LAST_VALUE PERIPH_ID=YYYYY]&value3=[LAST_VALUE PERIPH_ID=ZZZZZ]

Las posibilidades son muchas, de forma bidireccional, haciendo uso de variables globales IFTTT, con diversos canales.

Soy nuevo en estos temas de EEDOMUS y domótica, he aprendido mucho de este foro y me alegro de poder contribuir de vez en cuando. Lástima de no disponer de tiempo para este hobby por temas laborales y el tener que programar el controlador el remoto (esta en casa de mi madre ayudándola porque vive sola).

Un saludo

Enviado desde mi Nexus 7 mediante Tapatalk

Muchas gracias por compartirlo. En efecto, combinando Maker con una hoja de Drive se pueden almacena datos estadísticos. Es muy interesante.

Las posibilidades son inmensas, como bien dices.

Me acabáis de alegrar el fin de semana. Lástima que es mi cumple y no voy a poder dedicarle tiempo. Además tengo pendiente lo de Siri y Kasz. Gracias a lo que has descrito tan diligentemente Phroc, voy a poder meter a Alexa (Echo) en el mundo Eedomus. Ya os contaré cuando le vaya integrando a través de IFTTT.

Enviado desde mi iPhone utilizando Tapatalk

Cierto, Alexa está en IFTTT!!

No dejes de contarnos al respecto, es muy interesante.

Y muchas felicidades!!!

Felicidades Jokin! Ya nos contarás si ha caído algún cacharro nuevo jejeje

Gracias Kasz, es complicado, lo tengo todo! :wink:
Ahora lo que necesito es tiempo, el mayor regalo que se me puede hacer, para implementar lo que te has currado con nuestra común amiga Siri.

Jeje, tampoco es tanto tiempo, ya veras como al final es más fácil de lo que parece.
Además estoy haciendo un tutorial paso a paso para la instalación, aunque seguro que a ti no te hace falta tanto

Por cierto, hoy estoy estrenando el Apple TV 4. A ver qué tal se comporta con HomeKit, que con el 3 no iba fino del todo.

Hola Pedro!

Como puedes ver al final he apurado el fin de semana jeje. Así que vamos al grano.

Debido a que la integración de la localización en iPhone para eedomus no me funcionaba correctamente, estuve buscando alternativas.
Un buen día leyendo un post de phroc hablando del canal Maker empecé a echarle un vistazo y ví que era posible utilizar el canal Maker de IFTTT para enviar “órdenes” a nuestro eedomus. El tema de la localización IFTTT ya lo tenía solucionado con el “canal”: “iOS location”.

En primer lugar necesitarás darte de alta en IFTTT, si es que no lo estás ya.
En segundo lugar necesitarás crear una llave en Maker: https://ifttt.com/maker
Esta llave, en principio ahora no te va a hacer falta, porque para tu caso vas a invocar una URL desde IFTTT Maker, y la llave sería para el caso contrario, que Maker reciba una petición.

Llegados a este punto, te recomiendo que eches un vistazo al post en el blog que te comentaba, donde Philippe explica muy bien y habla de Maker:
http://www.domoticadomestica.com/ifttt-se-potencia-exponencialmente-con-el-nuevo-canal-maker/

Ahora, en tu eedomus, tienes que crear una escena (por ejemplo llamada “Localización iPhone” que tenga dos valores:
0 → En casa
1 → Fuera de casa
De esta escena vas a necesitar dentro de parámetros experto, el Código API.

Lo siguiente que tendrás que hacer es crear dos “recetas” en IFTTT, que tengan como primer ingrediente el canal iOS location y el segundo el canal Maker.

Receta 1: Localización, salir de la zona
En la acción, tienes que utilizar como URL:
https://api.eedomus.com/set?action=periph.value&periph_id=XXXXX&value=1&api_user=XXXXX&api_secret=XXXXX
En el método: Post
Y el resto da igual.

Receta 2: Localización, entrar en la zona
URL:
https://api.eedomus.com/set?action=periph.value&periph_id=XXXXX&value=0&api_user=XXXXX&api_secret=XXXXX
Método: Post
Y el resto también da igual.

En las URLs de arriba tienes que sustituir las XXXXX por tus valores:
periph_id → es el código de API de la escena que habías creado antes
api_user y api_secret → son las credenciales para usar la API de eedomus.

Si no tienes tus credenciales para la API, aquí tienes otro magnífico post en el que está muy bien explicado:
http://www.domoticadomestica.com/nociones-basicas-sobre-la-api-eedomus/

Con esto solo te quedaría crear las reglas necesarias en eedomus.
Yo para las primera pruebas, me he creado 2 reglas para notificaciones:

  • Regla “En casa”
    Criterios:
    Si “Localización iPhone” ahora se vuelve igual a En casa
    Notificación: iPhone en casa

  • Regla “Fuera de casa”
    Si “Localización iPhone” ahora se vuelve igual a Fuera de casa
    Notificación: iPhone fuera de casa.

Ahora te quedaría crear las reglas que tu vayas a utilizar en tu caso. Por ejemplo para que si el iPhone está fuera de casa, se active la alarma, o al entrar en rango de casa se abran las puertas o se enciendan las luces, le puedes dar todos los usos que tu quieras.
Si te recomiendo que las primeras pruebas las hagas con notificaciones, para ajustar bien el rango de localización en IFTTT.

Suerte y ya nos contarás!

Muchísimas gracias Kasz,me pongo ahora mismo con ello haber si le pillo el truquillo a esto,que imaginación no me falta.
En cuanto este funcionando te digo

Gracias otra vez!!!