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:

$ sudo wget http://www.weewx.com/downloads/weewx_[poner aquí la versión]_all.deb
$ sudo dpkg -i weewx_[poner aquí la versión]_all.deb

Si falla alguna dependencia, ejecutamos:

$ sudo apt-get update sudo apt-get -f install

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.

$ sudo tail -f /var/log/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:

dic 27 17:12:03 alarm weewx[23971]: wmr100: Bad USB report received.
dic 27 17:12:03 alarm weewx[23971]: ***** [Errno 110] Operation timed out
dic 27 17:12:39 alarm weewx[23971]: wmr100: Bad USB report received.
dic 27 17:12:39 alarm weewx[23971]: ***** [Errno 110] Operation timed out
dic 27 17:13:02 alarm weewx[23971]: wmr100: Bad USB report received.
dic 27 17:13:02 alarm weewx[23971]: ***** [Errno 110] Operation timed out
dic 27 17:14:02 alarm weewx[23971]: wmr100: Bad USB report received.
dic 27 17:14:02 alarm weewx[23971]: ***** [Errno 110] Operation timed out

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:

$ cd /etc/weewx/skins/Standard
$ ls -l
total 124
drw-r--r-- 2 root root  4096 oct 10 17:28 NOAA
drw-r--r-- 2 root root  4096 oct 10 17:28 RSS
drw-r--r-- 2 root root  4096 oct 10 17:28 backgrounds
-rw-r--r-- 1 root root  1150 oct 10 17:28 favicon.ico
-rw-r--r-- 1 root root 21562 oct 10 17:28 index.html.tmpl
-rw-r--r-- 1 root root   619 oct 10 17:28 mobile.css
-rw-r--r-- 1 root root  3045 oct 10 17:28 mobile.html.tmpl
-rw-r--r-- 1 root root 15592 oct 10 17:28 month.html.tmpl
-rw-r--r-- 1 root root 22514 dic 25 16:44 skin.conf
drw-r--r-- 5 root root  4096 dic 24 20:55 smartphone
-rw-r--r-- 1 root root 15414 oct 10 17:28 week.html.tmpl
-rw-r--r-- 1 root root  3484 oct 10 17:28 weewx.css
-rw-r--r-- 1 root root  9986 oct 10 17:28 year.html.tmpl

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

$ sudo nano /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:

    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp

        # If you wish to use FTP, uncomment and fill out the next four lines:
        user = usuario_ftp
        password = password_ftp
        server = direccion.del.servidor
        path = /var/www/eltiempo/

        # If you wish to upload files from something other than what HTML_ROOT
        # is set to above, then reset it here:
        #HTML_ROOT = public_html

        # Most FTP servers use port 21, but if yours is different, you can
        # change it here
        port = 21

        # Set to 1 to use passive mode, zero for active mode:
        passive = 1

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