Cómo descargarse de forma automática cada día los datos estadísticos de eedomus

phroc

  • *
  • 5703
  • Belle époque
    • Ver Perfil
    • PR-DOMOTICA
Los usuarios de eedomus sabemos que existen cuentas Premium, de las disfrutamos durante unos meses cuando tenemos una cuenta/controlador nuevo, y cuentas Free.

Las cuentas Premium, pasado ese periodo de gracia, son de pago y las Free gratis. Entre ambas modalidades, existen diferencias de servicios. Creo que ya lo hemos hablado en este foro y además lo reflejamos en varios post.

Así a bote pronto y sin entrar en muchos detalles, las limitaciones más importantes que recuerde son las notificaciones Push (sólo en cuentas Premium), los datos estadísticos (sólo 24 horas en cuentas Free) y el acceso a la API  (1000 llamadas diarias con cuenta Free vs 10000 con cuenta Premium... 1000 son muchas muchas, no nos pongamos tiquismiquis).

Lo bueno de eedomus, es que no capa el controlador para obligarte a contratar los servicios Premium. Es decir, se suelen tener soluciones alternativas y gratis para conseguir lo mismo que con los servicios Premium (aunque es más incómódo, hay que trabajárselo más.... pero eso nos gusta a todo@s los que estamos en este foro, ¿no?  8)).

En un post de hace unos meses, explicamos cómo tener notificaciones Push en eedomus con Pushover aunque no tengamos cuenta Premium:

http://www.domoticadomestica.com/notificaciones-push-con-pushover-en-eedomus/

En cuanto a los datos estadísticos, se pueden descargar a través de la API eedomus, de ahí que desde hace unos meses hayamos intentado (no sé si lo hemos conseguido) dar mucha información, progresivamente, y pistas sobre cómo sacar partido a esas funciones avanzadas de eedomus que permiten ir mucho más allá.

Como por ejemplo los scripts:

http://www.domoticadomestica.com/como-implementar-scripts-en-el-controlador-domotico-eedomus/

La API eedomus:

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

Y el servicio IFTTT:

http://www.domoticadomestica.com/ifttt-se-potencia-exponencialmente-con-el-nuevo-canal-maker/

Creo que esos tres artículos dan pistas claras sobre cómo aprovechar la API para ampliar las funcionalidades de nuestras eedomus.

Por ejemplo, la API tiene una función llamada periph.history que permite descargarse todos los datos históricos de los periféricos que queramos.

Pero no todo el mundo quiere, puede o sabe hacer un script desde cero para hacer esas cosas estupendas, como por ejemplo bajarse los datos históricos de nuestro controlador eedomus de forma automática.

En la interfaz web, en Configuración (abajo del todo haciendo scroll) existe una opción llamada "Descarga los datos históricos".

A través de esa opción podemos descargarnos cada día los datos históricos de todos nuestros periféricos Z-Wave en formato Excel para conservarlos y hacer con ellos lo que queramos (base de datos, representación gráfica...).

Las estadísticas son uno de los puntos fuertes de eedomus. No creo que haya otro controlador que ofrezca ahora mismo tanto y tan bien presentado en esta materia. Pero claro, como decíamos antes, cuando pasamos de una cuenta Premium a una cuenta Free, sólo podemos acceder a los datos históricos de las últimas 24 horas.

Esa opción que digo permite pues bajarse esos datos cada 24 horas, pero manualmente.

Lo ideal es que pudiéramos hacer eso desde la APi, porque entonces lo podríamos automatizar. Pero no se puede, me lo ha confirmado el equipo de desarrollo de eedomus. Y no se puede no porque eso vaya en contra de los servicios Premium (no es lo mismo tener los datos en bruto en formato Excel que lo que nos ofrecen esos servicios Premium -representación gráfica, filtros, etc.-) sino porque generar todos esos archivos de todos los periféricos de cada usuario, supone una carga de trabajo importante para los servidores y si la APi permitiera hacerlo, habría muchas peticiones con las sobrecargas que eso produciría en la propia API y en los servidores (eso me han explicado y tiendo a creérmelo).

Todo este rollo que os acabo de contar es para deciros que existe una manera "casera", sencilla pero efectiva de automatizar esa descarga de los datos estadísticos cada 24 horas. Y es lo que voy a contar. No es nada del otro mundo, pero quizá le resuelva la papeleta a alguien.

1) URL de descarga:

La URL de descarga de ese fichero Zip que contiene los datos estadísticos de todos los periféricos es la siguiente:

https://secure.eedomus.com/data_download.php?action=download

Si ponéis eso en la barra de URL's de vuestro navegador de Internet sin estar logueados en vuestra cuenta de eedomus, descargaréis un archivo que no es más que un ejemplo, con datos ficticios. En cambio, si estáis logueados, automáticamente se bajará un archivo ZIP que contiene múltiples archivos Excel con los datos históricos de cada uno de los periféricos de vuestra instalación.

2) Estar siempre logueado.

De lo anterior deducimos que nos conviene estar siempre logueado en nuestra cuenta de eedomus. Para eso, en la pantalla de acceso a la cuenta, debajo de "Usuario" y "Contraseña" se puede ticar una casilla que dice "Recordar" o algo parecido.

Si ticamos esa casilla, las siguientes veces que nos conectemos al portal eedomus automáticamente nos loguearemos en nuestra cuesta sin tener que introducir nuestro usuario y contraseña. Ni que decir tiene que eso sólo debemos hacerlo en nuestro ordenador personal y nunca en uno público o del trabajo, por razones obvias. Aclaro que estamos hablando aquí de loguearnos con el navegador de Internet por defecto de nuestro ordenador. Es importante porque podemos tener varios.

3) Descarga automática del archivo ZIP que contiene los datos históricos.

Ahora que siempre estamos logueados en nuestra cuenta de eedomus, simplemente con poner la URL de descarga arriba indicada en la barra de URL's de nuestro navegador por defecto, descargaremos el archivo ZIP en cuestión. Pero eso sigue siendo manual.

Yo, que soy eso que llaman "maquero" y gran entusiasta de Automator desde hace años y años, he automatizado esa descarga con Automator.

He creado una aplicación en Automator, muy sencilla, que contiene dos módulos: En el primero especifico la URL de descarga del archivo que contiene los datos históricos y en el segundo le digo que proceda a la descarga en la ubicación que le indico.

Pero claro, esa aplicación de Automator hay que ejecutarla manualmente, estamos en las mismas.

Para ejecutarla automáticamente cada día a la misma hora, en Calendario he creado un evento que me permite ejecutar una aplicación (la que acabo de crear con Automator) todos los días por la mañana.

Y ya está. Tengo un directorio en mi Mac donde guardo cada día el ZIP que contiene los datos estadísticos de las últimas 24 horas.

Está claro que si un día no enciendo el Mac, no me va a descargar el archivo. Pero en Mac, siempre puedo programar el ordenador para que se encienda y se apague sólo para realizar esa tarea él solito.

Ya digo, no es como un script especialmente diseñado para eso, pero es una solución que quizá le valga a más de uno.

Y si usáis Windows o Linux, se me ocurre que se podría hacer lo mismo con una aplicación de descarga de archivos que se permita programar descargas cada día. Tiene que haberlas.

Si hay algún maquero en la sala que necesita capturas de pantalla para saber cómo hacer la aplicación en Automator o cómo programar su ejecución en Calendario, no tiene más que pedirlo.

Espero que os sirva esta solución. El siguiente paso sería, por supuesto, desarrollar todo un flujo de trabajo con Automator y/o Hazel para concatenar todos esos archivos Excel, y otro paso más allá sería conseguir una representación gráfica de todos esos datos.

Saludos.
https://pr-domotica.es/

Communication Manager & Business Manager Spain at  NodOn
Consultoría en domótica inalámbrica e IoT
Formación Oficial Jeedom
Formación LoRa

Muy interesante lo que comentas. Creo que puedo proponer (y en algun momento implementar) esto con la siguiente combinacion:

Raspberry Pi con Graphite (almacenar metricas)  y algunos scripts en python usando la libreria 'requests' la cual puede automatizar sin problemas todo el proceso de login, descarga, etc. y posteriormente extraer el zip (o intentar bajar un csv) para procesar su contenido e introducirlo en graphite. Despues sería incluso sencillo el tema de verlo representado.

algo asi: http://www.rawmeat.org/raspberrypi-network-monitor.html

Lo único es que a dia de hoy aun no tengo la controladora (eedomus+) asi que poco puedo hacer...

un saludo
« Última modificación: Julio 22, 2015, 12:21:32 pm por mvillarejo »

Margu

Genial... Otra cosa más a desarrollar. Voy a intentar crear un script en linux que recoja los datos de eedomus y los aloje en una base de datos. Después poder visualizar a través de una web las estadísticas. Así puedo dar otro uso a mayores a la Rasberry Pi.

Por cierto la próxima semana espero subir los siguientes manuales:
- Incluir una estación meteorológica Oregon wrm88 usando una Rasberry Pi en eedomus.
- Saber el estado de un sai conectado a un NAS Synology a traves de eedomus.
- Mostrar las condiciones meteorológicas en eedomus dadas por la página de AEMET.

phroc

  • *
  • 5703
  • Belle époque
    • Ver Perfil
    • PR-DOMOTICA
Estupendo. Pero si nos proponemos llevar a cabo un proyecto común de este tipo, me estoy refiriendo a bajarse los datos estadísticos, lo mejor sería usar la API en vez de esos archivos Excel.

Desde la API tenemos la función periph.history que nos permite descargarnos los datos históricos del periférico X. Con eso conseguimos un archivo JSON. Lo suyo, es montar un servidor con base de datos y volcar esos datos de cada archivo JSON de cada periférico (cada 24 h) en esa base de datos, para luego explotar esos datos. Se podría entonces hacer una representación gráfica de los datos almacenados en esa base de datos e incluso mandarnos un informe semanal por mail.

Quiero decir que si nos podemos con servidor, base de datos, etc, la mejor forma de hacerlo, creo yo, es esa.

Lo de los archivos Excel es más para gente que no tenga la posibilidad o no sepa montar un servidor, una base de datos etc. y quiera usar herramientas de usuario final (estoy pensando en Automator y Hazel -en Mac- Excel, etc.).

Pero vamos, hay varias vías para hacerlo.

Sería un proyecto muy interesante en cualquier caso.
https://pr-domotica.es/

Communication Manager & Business Manager Spain at  NodOn
Consultoría en domótica inalámbrica e IoT
Formación Oficial Jeedom
Formación LoRa

Si se puede extraer en JSON, muchisimo mejor.

Una pregunta, controlais de python? lo digo porque siempre podemos intentar crear un modulo en github o algo asi...

phroc

  • *
  • 5703
  • Belle époque
    • Ver Perfil
    • PR-DOMOTICA
Yo de Python nada, me temo...

Si sacas los datos a través de la interfaz web como cuento en este hilo, descargas un archivo Zip que contiene multitud de archivos Excel (1 por periférico concretamente) que contienen a su vez los datos históricos de las últimas 24 horas de cada periférico.

Si sacas los datos a través de la API, tienes que hacer la petición a través de la función periph-history, que te devuelve 1 archivo JSON con todos los datos de las últimas 24 horas del periférico especificado.

Saludos.

https://pr-domotica.es/

Communication Manager & Business Manager Spain at  NodOn
Consultoría en domótica inalámbrica e IoT
Formación Oficial Jeedom
Formación LoRa

kasz

  • *****
  • 796
    • Ver Perfil
Muy interesante toda la información!

En breve acaba mi suscripción premium y llevo ya un par de semanas probando pushover con muy buenos resultados, así que ahora estoy dando el salto a la recolección de estadísticas.
Ya he bajado el histórico de estadísticas (al ser premium me descarga todo, no solo las últimas 24h).

Lo que estaría bien es poder descargarlas mediante una llamada tipo "curl" o "wget" de linux, así se podría automatizar de manera sencilla, en mi caso directamente desde el NAS, creando una entrada en el crontab que ejecute la llamada todos los días a la misma hora (igual que haces tu con Automator, pero en mi caso el NAS está siempre encendido :) )
El problema que veo es la autenticación para la descarga, ¿sabéis si hay forma de pasarle como parámetro usuario/password a la llamada?


phroc

  • *
  • 5703
  • Belle époque
    • Ver Perfil
    • PR-DOMOTICA

El problema que veo es la autenticación para la descarga, ¿sabéis si hay forma de pasarle como parámetro usuario/password a la llamada?

En la URL no se puede poner las credenciales, es https y está bien hecho...

Podrás hacerlo mismo pasando por la API, pero para cada dispositivo una llamada http y luego obtienes un archivos JSON, no un Excel.

https://pr-domotica.es/

Communication Manager & Business Manager Spain at  NodOn
Consultoría en domótica inalámbrica e IoT
Formación Oficial Jeedom
Formación LoRa

kasz

  • *****
  • 796
    • Ver Perfil

El problema que veo es la autenticación para la descarga, ¿sabéis si hay forma de pasarle como parámetro usuario/password a la llamada?

En la URL no se puede poner las credenciales, es https y está bien hecho...

Podrás hacerlo mismo pasando por la API, pero para cada dispositivo una llamada http y luego obtienes un archivos JSON, no un Excel.

Genial!!!

Ya he sacado el código API de los dispositivos que más me interesan y estoy haciendo pruebas.

Ahora voy a ver si hago algún script en bash/perl para procesarlo y guardarme el histórico. Después ya me gustaría ver si lo puedo meter en cacti o similar.

Si quieres una alternativa, te recomendaria graphite en una Raspberry Pi
https://github.com/ghoulmann/rpi-graphite

Saludos,


El problema que veo es la autenticación para la descarga, ¿sabéis si hay forma de pasarle como parámetro usuario/password a la llamada?

En la URL no se puede poner las credenciales, es https y está bien hecho...

Podrás hacerlo mismo pasando por la API, pero para cada dispositivo una llamada http y luego obtienes un archivos JSON, no un Excel.

Genial!!!

Ya he sacado el código API de los dispositivos que más me interesan y estoy haciendo pruebas.

Ahora voy a ver si hago algún script en bash/perl para procesarlo y guardarme el histórico. Después ya me gustaría ver si lo puedo meter en cacti o similar.

kasz

  • *****
  • 796
    • Ver Perfil
Gracias por la alternativa. Graphite también lo utilizo en el trabajo.

Miraré a ver si es factible instalar graphite en synology. Cacti se que se puede, aunque no de manera oficial.

kasz

  • *****
  • 796
    • Ver Perfil
Esto va tomando forma, ya tengo un script que descarga los datos de las últimas 24h en json, después lo parsea para dejarlo más claro y lo guarda en un fichero. Todas las noches se ejecuta a las 00:00h y va añadiendo los cambios al fichero del dispositivo.

Para el tema de las gráficas, me temo que al final si que tendré que ir a raspberry para montar un cacti/graphite o hacerlo en el mac, aunque éste no lo tengo siempre encendido, pero con que se encienda automáticamente para recoger y pintar los gráficos supongo que valdría.

Bien kasz! El script de arriba casi que te hace la instalación completa de graphite en una pi con debian (o kodi) te lo recomiendo encarecidamente, que he probado ambos.
Por cierto, existen módulos Python muy sencillos para introducir en graphite datos en JSON.
Saludos!

Enviado desde mi Nexus 5 mediante Tapatalk


kasz

  • *****
  • 796
    • Ver Perfil
Gracias por la info mvillarejo!

De momento tengo automatizado en el synology la tarea de lanzar el script con todo.

Tenía pensado montar en el Mac un graphite para pintarlo ahí mientras me hago con una pi.
Justo hoy he visto algún que otro módulo para graphite que admite JSON, después que he estado pardeando para tener una salida ideal para graphite, hasta cambiando la fecha a epoch time....

A ver si puedo seguir con esto y os voy contando.

kasz

  • *****
  • 796
    • Ver Perfil
Pues al final me decidí por probar con la Raspberry pi. Me llego el jueves y el mismo viernes ya estaba pintando con graphite, muy sencillo.

Ahora estoy viendo que no me coge algunos datos, como los enchufes, porque el valor es On/Off, y eso graphite no lo entiende, así que cambiare los ON por 1 y los Off por 0.

De todos modos probaré con los módulos de JSON, para no complicarme más con los scripts.

Y también me gustaría instalar grafano en la Pi, ¿lo has probado mvillarejo?