Estación meteorológica online con Olinuxino, weewx y Oregon wmr88

Si habéis leído mis post anteriores sobre Olinuxino, ya deberíais tener un mini servidor web en marcha con Olinuxino. Pues bien, entre muchas funcionalidades, podemos aprovechar nuestro mini servidor 24×7 de bajo consumo para montar una pequeña estación meteorológica online.

Hace un año que mi esposa me regaló una Oregon WMR88. No es la mejor estación meteorológica, pero para cubrir mis necesidades de cacharreo es más que suficiente. La pobre estaba apurada porque había un modelo nuevo (no si ni cuál) que tenía conexión a Internet y una app móvil. No contaba con que para mí casi que es mejor la que me había regalado, ya que resultaba más interesante para “jugar”.

Tenía por casa un Olinuxino iMX233 con wifi que no utilizaba y este proyecto venía como anillo al dedo para darle uso. Tras analizar lo que había en Internet, me decanté por weewx como programa que se encargaría de recoger los datos de la estación meteorológica (tiene un puerto USB) y generar un reporte web de las condiciones meteorológicas.

Partimos del supuesto que ya tenemos configurado un servidor web funcional y que es accesible sin problemas, pues bien, vamos a instalar weewx. Si nos dirigimos al apartado de descargas de su web, vemos que tiene un paquete .deb listo para instalar (bien!). Bueno, pues nos vamos a nuestro olinuxino y tecleamos:

Si falla alguna dependencia, ejecutamos:

Durante la instalación, el instalador nos preguntará por la localización (nombre), coordenadas (latitud y longitud), altitud y el tipo de estación (en mi caso tuve que poner WMR100). Una vez finaliza la instalación, el servidor weewx estará corriendo y leyendo datos de la estación. Podemos ver que está funcionando en el syslog.

En mi caso me salen varios errores de CRC y timeout, que parece que son normales para el modelo de estación que tengo:

Si tenemos configurado ya nuestro servidor web en /var/www/, pasados unos 5 minutos deberíamos tener una web funcionando en /var/www/weewx, con lo que podemos navegar a ella: http://ip-del-olinuxino/weewx/.

weewx

Como veis, yo he editado la plantilla para que aparezca en castellano, además de insertar un bloque de adsense, ¿Cómo?, pues muy fácil, si nos vamos al directorio /etc/weewx/skins veremos varias carpetas. Son las denominadas “pieles” del programa, cada una de ellas se ejecuta a un intervalo de 5 minutos y se encarga de generar las gráficas y los html de la página web. En concreto, la que genera la web es la skin “Starndard”, si listamos el directorio veremos lo siguiente:

Screenshot_2015-12-25-17-01-33Empezaremos editando el archivo skin.conf y traduciendo las unidades y nombres. Después, nos dirigiremos a cada archivo *.html.tmpl para editarlo a nuestro gusto. Por ejemplo, yo he editado la versión smartphone para actualizar jquery mobile y el skin por defecto.

Con estos pasos ya tendríamos nuestra estación meteorológica en marcha y en la red. Pero en mi caso, el Olinuxino iMX estaba conectado por wifi al router de casa, haciendo que la navegación fuera muy lenta desde Internet.

Podemos configurar el skin FTP para que weewx “suba” las actualizaciones de tu estación meteorológica a otro servidor web (por ejemplo el de tu ISP), en mi caso, se iba a subir al A10Lime que está en la azotea y que es mi servidor web principal.

Para ello, editamos el archivo /etc/weewx/weewx.conf

Y nos vamos al bloque [[FTP]] (ctrl+w y escribimos [[FTP]]), deberemos descomentar las líneas correspondientes (quitando el cuadradillo “#”) y editar “user”, “password”, “server” y “path” con el usuario, password, dirección del servidor y path correctos, respectivamente:

Por tanto, ahora, cada 5 minutos weewx leerá los datos de la estación, los almacenará (en una base de datos SQLite), generará los html correspondientes y los subirá por FTP a nuestro server.

Si tenéis algo (muy poco) de maña con Android, podéis hacer una aplicación con webView y listo, ya tenéis vuestra estación meteorológica con conexión a Internet y app móvil. Yo ya lo he hecho con la mía:

Get it on Google Play