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/.
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
Empezaremos 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: