Abro este nuevo hilo con dos objetivos:
-
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.
-
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)