Herramientas de usuario

Herramientas del sitio


Barra lateral

Logo ACEMU

meteo:datos

Retorno a página principal


Prototipo de Estación Terrena: Estación AGUADA

Para demostrar la factibilidad del proyecto, una vez que se armó el circuito 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.1)

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 proteger la estación se la tapó con una cobertura y tapa de PVC aislada con poliestireno y todo el conjunto se afirmó con un soporte a una rejilla exterior a la ventana 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 corriendo Raspbian, una versión de GNU/Linux Debian adaptada para esa plataforma. 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 que un computador 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 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 "IP del servidor broker MQTT" -t "acemu_tiempo"

En el ejemplo, “acemu_tiempo” es el tópico al cual el cliente se suscribe y queda escuchando los datos de la estación que publica el servidor, en nuestro caso, el Raspberry Pi antes mencionado.

Android: Se puede instalar el cliente MyMQTT que está disponible en la “Play Store”. Se configura la IP del servidor y el tópico correpondiente.

Cualquiera de estos clientes se conecta via Internet, mediante el protocolo MQTT, al servidor de la estación terrena y recibe periódicamente un flujo 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:46,18.1,1017.95,74.0,15.23
ACEMU-AGUADA,2014-7-12,20:47,18.0,1017.94,74.0,15.24
ACEMU-AGUADA,2014-7-12,20:48,18.2,1017.98,73.5,15.22
...

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 ( comma separated value) que es un estándar muy empleado, por lo que es cómodamente transferible a una planilla electrónica, una base de datos o alguna otra alternativa de almacenamiento o procesamiento de información.

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 internet gráficos de los mismos.

A continuación mostramos una posible solución “out of the box” disponible en 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 han predefinido cuantos datos se almacenarán de manera que cuando ésta se llena, los nuevos datos simplemente sustituyen los datos más viejos, de allí su nombre.

El propio rrdtool permite generar gráficos para 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 aproximado de una semana (desde el jueves 3 de julio al viernes 11 de julio de 2014), de temperatura, presión y humedad relativa ambiente:

Temperatura Presión Humedad Temperatura y Punto de Rocío


Retorno a la página principal

Tabare Perez 18/06/2015 07:40

1)
Debemos aclarar que el montaje físico de esta estación experimental se realizó solamente a los efectos de probarla y no respeta los protocolos de montaje de este tipo de sistemas.
/home/acemuadmin/acemu.org/wiki/data/pages/meteo/datos.txt · Última modificación: 18/06/2015 07:41 por tabare.perez