Cómo subir los datos de una estación meteorológica a Internet con WeeWX y Raspberry Pi
Tabla de contenido
He instalado y configurado una estación meteorológica Davis para registrar las condiciones locales y compartir los datos en Internet. Como usuario novel en este ámbito, me enfrenté a diversos problemas de configuración. Una vez todo funcionó de forma estable, decidí documentar el proceso completo para que otras personas puedan reproducirlo con menos esfuerzo.
El sistema se basa en una Raspberry Pi como ordenador de bajo consumo que ejecuta WeeWX (software libre escrito en Python) para comunicarse con la estación, almacenar los datos y generar páginas web o enviarlos a servicios externos.
Material necesario #
Hardware #
- Raspberry Pi 3 Model B+ (o superior). Incluye Wi-Fi y 1 GB de RAM. Consumo reducido, ideal para funcionamiento 24/7. Precio orientativo ~35 €.
- Tarjeta microSD clase 10 de al menos 32 GB. La calidad de la tarjeta es crítica por el volumen de escrituras. Precio orientativo ~8 €.
- Estación meteorológica compatible con WeeWX (en este caso, Davis Vantage). WeeWX soporta la gran mayoría de marcas del mercado.
- Monitor, teclado y ratón (solo para la configuración inicial) o acceso por SSH desde el primer momento.
Software #
- Raspberry Pi OS (antes Raspbian): sistema operativo oficial, ligero y robusto.
- balenaEtcher: para grabar la imagen del sistema en la microSD.
- WeeWX: software de adquisición, almacenamiento y presentación de datos meteorológicos.
- Clientes SSH: Bitvise (Windows, con transferencia de archivos) y/o PuTTY.
- Opcional: servidor web Apache, herramientas de copia de seguridad, etc.
1. Instalación del sistema operativo en la microSD #
- Descargar la imagen de Raspberry Pi OS desde el sitio oficial.
- Descargar e instalar balenaEtcher.
- Insertar la microSD en el ordenador, abrir Etcher, seleccionar la imagen y la tarjeta, y grabar.
- Extraer la tarjeta e insertarla en la Raspberry Pi (apagada). Conectar monitor, teclado y ratón (o preparar acceso SSH) y encender.
Durante el primer arranque se configuran idioma, zona horaria, contraseña del usuario pi (por defecto es raspberry; debe cambiarse) y conexión a Internet (Ethernet o Wi-Fi). El sistema buscará e instalará actualizaciones.
Es recomendable habilitar el servicio SSH (puerto 22) desde las opciones de configuración de Raspberry Pi para poder administrar el equipo de forma remota.
2. Acceso remoto y comandos útiles de Linux #
Una vez la Raspberry Pi está en la red, se puede acceder desde otro ordenador mediante:
- Bitvise SSH Client (Windows): terminal + transferencia de archivos SFTP.
- PuTTY: terminal clásico.
La IP de la Raspberry Pi se obtiene desde el router o con hostname -I en la propia máquina.
Comandos de uso frecuente #
# Actualizar el sistema
sudo apt update && sudo apt upgrade -y
# Instalar un paquete
sudo apt install nombre_paquete
# Instalar un .deb
sudo dpkg -i archivo.deb
# Desinstalar
sudo apt --purge remove nombre_paquete
# Mover / copiar / borrar
sudo mv origen destino
sudo rm -f archivo
sudo rm -r carpeta
sudo mkdir carpeta
sudo touch archivo
# Permisos de ejecución
sudo chmod +x archivo
# Reiniciar
sudo reboot
# Control de WeeWX
sudo systemctl stop weewx
sudo systemctl start weewx
sudo systemctl status weewx
# Ver log reciente
sudo tail -100 /var/log/weewx.log
# Listar extensiones WeeWX
wee_extension --list
3. Instalación de WeeWX #
Con la estación desconectada de la Raspberry Pi:
# Añadir la clave y el repositorio
wget -qO - https://weewx.com/keys.html | sudo apt-key add -
wget -qO - https://weewx.com/apt/weewx-python3.list | sudo tee /etc/apt/sources.list.d/weewx.list
sudo apt update
sudo apt install weewx
Durante la instalación WeeWX pregunta:
- Ubicación de la estación.
- Latitud y longitud (longitud negativa al oeste de Greenwich).
- Altitud (sobre el nivel del mar, no la altura de los sensores).
- Sistema de unidades (recomendado: Metric).
- Tipo de hardware (Vantage en el caso de Davis).
- Tipo de conexión (normalmente serial o USB).
- Puerto (dejar el valor por defecto si es el correcto).
Toda esta información se guarda en /etc/weewx/weewx.conf. Si se comete un error, se puede editar posteriormente (deteniendo antes el servicio).
4. Optimizaciones básicas y tareas habituales #
Sincronización horaria (NTP) #
Es imprescindible para que las marcas de tiempo de los registros sean fiables:
sudo apt install ntp
sudo systemctl enable ntp
sudo systemctl start ntp
Servidor web local (opcional) #
Si se desea consultar los datos desde la red local:
sudo apt install apache2
sudo systemctl enable apache2
Los informes generados por WeeWX se pueden servir desde /var/www/html/weewx (o la ruta configurada).
Copia de seguridad de la base de datos #
La base de datos por defecto se encuentra en /var/lib/weewx/weewx.sdb (SQLite). Es altamente recomendable automatizar copias de seguridad periódicas mediante cron o un script.
Ejemplo de línea de crontab para copia diaria a las 00:05:
5 0 * * * rsync -a --delete /var/lib/weewx/ /ruta/backup/weewx/
Envío de datos a un servidor externo (FTP / RSYNC / SFTP) #
WeeWX incluye soporte nativo para FTP y FTPS. La sección correspondiente en weewx.conf es [[FTP]] dentro de [StdReport]. Se debe indicar usuario, contraseña, servidor, ruta de destino y activar enable = true.
Para RSYNC o SFTP se pueden utilizar extensiones o scripts externos (hay soluciones documentadas en el foro de WeeWX y en GitHub).
5. Base de datos: mantenimiento y edición #
La base de datos es el núcleo del sistema. Se puede inspeccionar y editar con:
- DB Browser for SQLite (aplicación gráfica).
- La utilidad de línea de comandos
sqlite3.
Ejemplo de borrado de registros posteriores a una fecha Unix determinada (hacer siempre copia de seguridad antes):
sudo systemctl stop weewx
sqlite3 /var/lib/weewx/weewx.sdb
sqlite> DELETE FROM archive WHERE dateTime > 1578156600;
sqlite> .exit
sudo systemctl start weewx
Los valores se almacenan internamente en unidades anglosajonas aunque la presentación pueda configurarse en sistema métrico. El cambio de target_unit una vez la base de datos contiene datos requiere una conversión completa (wee_database --reconfigure).
Unir dos bases de datos #
Si se ha perdido la continuidad de los datos (reinstalación, fallo, etc.), es posible fusionar dos archivos .sdb con un script en Python que recorra las tablas e inserte los registros faltantes (utilizando INSERT OR IGNORE). Después de la fusión conviene reconstruir los resúmenes diarios:
wee_database --drop-daily
wee_database --rebuild-daily
6. Archivo de configuración principal (weewx.conf) #
Se edita con:
sudo systemctl stop weewx
sudo nano /etc/weewx/weewx.conf
sudo systemctl start weewx
Secciones más relevantes:
[Station]: ubicación, latitud, longitud, altitud, tipo de estación, inicio de la semana de lluvia, etc.[StdRESTful]: envío a servicios como Weather Underground, CWOP, AWEKAS, WOW, etc.[StdReport]: skins (plantillas visuales) y configuración de FTP.[Databases]y[DatabaseTypes]: definición de la base de datos SQLite o MySQL.
Cualquier modificación incorrecta puede corromper los datos o impedir el arranque del servicio. Se recomienda trabajar siempre sobre una copia de seguridad.
Conclusión #
Con una Raspberry Pi, WeeWX y una estación meteorológica compatible se puede montar un sistema completo de adquisición, almacenamiento y publicación de datos meteorológicos de bajo coste y elevado control. El software libre permite personalizar prácticamente todos los aspectos: presentación, envío a múltiples servicios, copias de seguridad y análisis posterior.
La curva de aprendizaje inicial es real, especialmente si se parte de cero en Linux, pero una vez superada se obtiene un sistema robusto, documentado y mantenible a largo plazo.
Si has llegado hasta aquí, es probable que estés en la misma situación en la que me encontré al comenzar. Espero que esta guía te ahorre tiempo y te anime a compartir tus propios datos meteorológicos con el mundo.