Herramientas de usuario

Herramientas del sitio


acemu:proyectos:ema:meteorologia:estacion_fq

¡Esta es una revisión vieja del documento!


Prototipo de Estación Terrena: Estación AGUADA

Para demostrar la factibilidad del proyecto, una vez que se armó el ciruito de microcontrolador (Arduino Nano) + sensores (temperatura, presión, humedad), se decidió montar una estación terrena que recolectara los datos que emitía el microcontrolador y los publicara de alguna manera en internet.

Para ello se colocó el microcontrolador y los sensores en un tubo de PVC tal como se ve en la siguiente foto:

Sensores y microcrontrolador Arduino Nano, conectado via RS-232 con el servidor Raspberry Pi

Para protección y se lo tapó con una cobertura y tapa de PVC aislada con espuma plast y todo el conjunto se afirmó con un soporte a una rejilla exterior a la vantana de una oficina:

La estación propiamente dicha se conectó, mediante un cable serial RS-232 al servidor de datos, en este caso una Raspberry Pi. En la siguiente foto se observa el adaptador RS-232 a USB que se empleó para que el computador pudiese leer los datos seriales, junto a la Raspberry Pi que se empleó como servidor de datos:

servidor frambuesa.fq.edu.uy

En una primer versión del programa de microcontrolador, éste recoge datos de temperatura, presión, humedad y punto de rocío cada 2 segundos y los envía por la interfase serial RS-232. Del lado del servidor Raspberry Pi, un programa escrito en python lee esos datos que llegan por el puerto USB (luego del conversor RS-232 a USB), donde será procesados y/o almacenados.

Servicio de datos meteorológicos

No alcanza con disponer de sensores y un microcontrolador que lea los datos. Tampoco alcanza con un que un comptador lea esos datos del microcontrolador a los simples efectos de almacenarlos. La idea es disponer de algún mecanismo de publicación y/o difusión de esos datos.

Para ello se recurrió al protocolo MQTT (MQ Telemetry Transport), en particular a la implementación de este protocolo en el paquete mosquitto y su biblioteca para Python (python-mosquitto).

En ese sentido se instaló en el servidor Raspberry Pi el demonio del servicio MQTT y empleando la biblioteca python-mosquitto se incluyó, en el programa que lee los datos de la estación, la posibilidad de publicar estos datos a través del servidor MQTT.

El servidor MQTT brinda un servicio de publicación y suscripción, que permite a diferentes clientes en internet ya sea publicar datos identificados o etiquetados bajo un cierto “tema” o suscribirse a dicho “tema” y recibir los datos que se publiquen allí. Eso elimina completamente la necesidad de programar de un servicio cliente/servidor, ya que el demonio MQTT se encarga de toda esa operación de manera transparente y sencilla.

Es así que es posible, empleando cualquier cliente MQTT, conectarse al servidor meteorológico y recibir los datos que levanta la estación.

Hay clientes MQTT para diferentes plataformas: Linux, Android, OS-X, etc. que son muy fáciles de instalar y emplear.

Ejemplo de acceso a datos meteorológicos

Linux: se puede instalar el paquete mosquitto-clients y desde una consola de Linux se puede ejecutar el siguiente comando:

mosquitto_sub -h frambuesa.fq.edu.uy -t "acemu_tiempo"

Inmediatamente el cliente se conctará via Internet, mediante el protocolo MQTT, al servidor de la estación terrena y recibirá un stream de datos similar al siguiente:

ACEMU-AGUADA,2014-7-12,20:45,18.0,1017.94,74.0,15.24
ACEMU-AGUADA,2014-7-12,20:45,18.0,1017.95,74.0,15.24
ACEMU-AGUADA,2014-7-12,20:45,18.0,1017.94,74.0,15.24
ACEMU-AGUADA,2014-7-12,20:45,18.0,1017.96,74.0,15.24
...

donde cada registro está compuesto por:

  • una identificación de la estación
  • fecha
  • hora
  • temperatura (°C)
  • presión (mbar)
  • humedad relativa (%)
  • punto de rocío (°C)

El formato de los registros es CSV que es un estándar, por lo que esta información es fácilmente transferible a una planilla electrónica o una base de datos.

Publicación gráfica de datos meteorológicos: RRD Tools

Como mencionamos anteriormente, desde cualquier otra computadora se puede emplear un cliente MQTT para recolectar estos datos y posteriormente procesarlos. Una opción de procesamiento interesante puede ser el recoger datos correspondiente a período extenso y publicar en ingternet gráficos de los mismos.

A continuación mostramos una posible solución “out of the box” disponible para cualquier plataforma libre: RRD Tool de Tobias Oiteker

Esta herramienta es muy conocida entre administradores de redes pues es el resultado de un desarrollo posterior al MRTG (Multi Router Traffic Grapher).

Rrdtool permite recolectar series temporales de datos y almacenarlas en una “Round Robin Database”. Esto no es más que una base de datos en la que se ha predefinido cuantos datos se almacenarán de manera que cuando se llena, simplemente los nuevos datos sustituyen los datos más viejos, de allí su nombre.

El propio rrdtool permite generar gráficos de diferentes períodos. Lo usual es generar gráficos de los datos recolectados el último día, la última semana, el último mes y el último año.

A continuación mostramos algunos gráficos generados en un período de una semana (desde el jueves 3 de julio al 11 de julio de 2014), de temperatura, presión y humedad relativa ambiente:

Temperatura Presión Humedad

acemu/proyectos/ema/meteorologia/estacion_fq.1405215761.txt.gz · Última modificación: 2014/07/12 18:42 (editor externo)