Bueno, pues lo prometido es deuda.
Aquí está el paso a paso de cómo hacerlo.
Lo primero decir que no se programar, todo lo he sacado por prueba y error, mirando otros scripts, y leyendo el manual de la API de Momit, con lo cual seguramente los scripts sean "feos" y haya formas de hacerlo mucho mejores.
Yo lo uso para controlar el aire acondicionado, pero el proceso sería exactamente el mismo si lo usáis para calefacción.
Si lo usáis para ambos, incluso se podría poner un periférico más para pasar de modo frío a modo calor, aunque teniendo en cuenta que esto se hace 2 veces al año, tampoco tiene mucho sentido.
Dicho esto, lo que necesitamos:
Lo primero, necesitamos tener nuestro Secret key and CliendID, los podemos solicitar al soporte de Momit, escribiendoles un mail a support@momit.zendesk.com
Hola!
Quiero integrar mi termostato Momit en mi centro domótico, y necesitaría mis credenciales de API (SecretKey y ClientID)
Mi email es XXX@gmail.com
Una vez que los recibamos, ya podremos empezar la integración.
Paso 1: Editamos el script momit_termostato.php, poniendo nuestros datos: email, password, clientd id y secret key donde corresponde (está en el script)
Paso 2: Subimos el script momit_termostato.php a eedomus y lo ejecutamos. Esto es para coger el ID de nuestro termostato, que lo vamos a necesitar, y por un problema en el JSON de salida del API no se puede coger automaticamente. Al ejecutarlo directamente desde eedomus, se nos abrirá un navegador con un JSON. Buscamos el campo ID y lo apuntamos, ese es el ID de nuestro termostato.
Con este dato, ya podemos editar los otros 2 scripts (momit_get y momit_put) y subirlos a eedomus.
Una vez que tenemos los scripts, tenemos que configurar los perifericos en eedomus. Tendremos que crear 4:
Periferico 1 (Para apagar o encender el termostato)
- HTTP Actuador - Crear
Nombre: Momit - Estado
Habitacion: Salon o la que querais
Uso: Otro
Abrimos parámetros avanzados y ponemos:
Petición actualización:
http://localhost/script/?exec=momit_get.phpRuta Xpath: /root/data/parameters/state
Frecuencia la que queramos, yo he puesto 5 minutos
Con esto conseguimos que si encendemos el momit desde el propio termostato, eedomus haga polling y se de cuenta.
Pulsamos guardar y seguir editando y vamos a valores.
Añadimos 3 valores, 0, 1 y 2. URL llamamos siempre a la misma, que es el script:
http://localhost/script/?exec=momit_put.phpY en parámetros ponemos lo siguiente:
0 / Apagado: &accion=state%26state=0
1 / Manual: &accion=state%26state=1
2 / Automatico: &accion=state%26state=2
Periferico 2 (Para cambiar la temperatura de consigna)
- HTTP Actuador - Crear
Nombre: Momit - Temp consigna
Habitacion: Salon o la que querais
Uso: Otro
Abrimos parámetros avanzados y ponemos:
Petición actualización:
http://localhost/script/?exec=momit_get.phpRuta Xpath: /root/data/parameters/temperature
Frecuencia la que queramos, yo he puesto 5 minutos
Adjuntar a: Momit, o como hayamos llamado al primer periférico
Con esto conseguimos que si cambiamos la temperatura del propio termostato, eedomus lo refleje.
Aquí hay un pequeño problema: cuando el termostato está encendido, el JSON devuelve el valor "temperature", pero cuando está apagado, devuelve el valor "pasttemperature", con lo cual cuando lo tengamos apagado, eedomus nos lanzará una notificación de que el valor que está leyendo está vacío. Investigaré a ver cómo solucionarlo.
Pulsamos guardar y seguir editando y vamos a valores.
Aquí ponemos todos los valores de temperatura que queramos poder controlar. Yo he puesto de 17 a 26
En URL ponemos siempre:
http://localhost/script/?exec=momit_put.php Tipo GET
Y en parámetros ponemos: &accion=temperature%26temperature=17 Para 17 grados, &accion=temperature%26temperature=18 para 18 grados... etc... (en la imagen se ve mejor)
Periferico 3 (Sonda de temperatura)
- HTTP Sensor - Crear
Nombre: Temperatura Salon
Habitacion: Salon o la que querais
Uso: Temperatura
Tipo de datos: Decimal
Unidad: º
URL de la llamada:
http://localhost/script/?exec=momit_get.phpRuta Xpath: /root/data/record/temperatureValue
Frecuencia la que queramos, yo he puesto 15 minutos
Parametros experto:
Adjuntar a: Momit, o como hayamos llamado al primer periférico
Esta será la sonda que nos muestre la temperatura que registra el termostato.
Periferico 4 (Sonda de humedad)
- HTTP Sensor - Crear
Nombre: Humedad Salon
Habitacion: Salon o la que querais
Uso: Humedad
Tipo de datos: Decimal
Unidad: %
URL de la llamada:
http://localhost/script/?exec=momit_get.phpRuta Xpath: /root/data/record/humidityValue
Frecuencia la que queramos, yo he puesto 15 minutos
Parametros experto:
Adjuntar a: Momit, o como hayamos llamado al primer periférico
Esta será la sonda que nos muestre la humedad que registra el termostato.
Y eso sería todo.
Espero que os sirva, porque el termostato está muy bien, la verdad, y es de una empresa española.
Saludos, Álvaro