Saltar a contenido

🌦️ Proyecto Clima

Proyecto de Monitorización — Datos meteorológicos y microclima de la finca

Temperatura, precipitación, viento, radiación solar, evapotranspiración.
Una estación meteorológica en la finca. Microclima por bancal.
Proyecto transversal: da servicio a todos los proyectos de ⛰️ El Salto.

Versión 1.0 · Mayo 2026


1. Resumen Ejecutivo

El Proyecto Clima es el proyecto transversal de El Salto que proporciona datos meteorológicos y de microclima a todos los demás proyectos de la finca. Una estación meteorológica propia, complementada con sensores de temperatura y humedad distribuidos por los bancales, alimenta una base de datos climática local que enriquece cada decisión y cada análisis.

Sin datos climáticos, los otros proyectos operan a ciegas:

  • La Agricultura Regenerativa no puede interpretar la infiltración de agua sin saber cuánto ha llovido
  • Corral del Viento no puede correlacionar la producción de miel con la floración sin datos de temperatura y horas de sol
  • El Gallinero no puede evaluar el bienestar animal sin monitorizar temperaturas extremas

El proyecto publica sus datos en abierto con anonimización, contribuyendo al conocimiento sobre el clima de la comarca de La Vera en el contexto del cambio climático.

Visión: Que cada dato —desde la humedad del suelo hasta la producción de miel— tenga su contexto climático. Que la finca entienda su clima y actúe en consecuencia.


2. Infraestructura de monitorización

2.1 Estación meteorológica principal

Ubicada en un punto alto de la finca, representativo del clima general:

Sensor Variable Unidad Precisión
Temperatura del aire Temperatura ambiente °C ±0.3 °C
Humedad relativa Humedad del aire % ±2%
Precipitación Lluvia acumulada mm ±0.2 mm
Velocidad del viento Viento medio y racha m/s ±0.5 m/s
Dirección del viento Dirección predominante ° (grados) ±3°
Radiación solar Irradiancia global W/m² ±5%
Presión atmosférica Presión barométrica hPa ±1 hPa

2.2 Sensores de microclima por zona

Además de la estación principal, se despliegan 8 estaciones ESP32 en ubicaciones estratégicas para capturar la diversidad microclimática de la finca:

# Zona Altitud Uso principal Sensores especiales Cámara
Z1 Cinco Fuentes ~810 m Colmenas 🎤 INMP441 bioacústica 📷 PIR fauna
Z2 Casa Margarita ~790 m Colmenas 📷 PIR fauna
Z3 Huerto kiwis ~800 m Kiwis (riego) + frutales (riego) + cerezos (secano) 🔥 MLX90614 (CWSI) · mojado foliar 📷 Verdor + PIR
Z4 Castaños principal ~830 m Castaños (riego) + pasto (secano) — referencia 🌧️ Pluviómetro · SHT31 alta precisión 📷 Verdor + PIR
Z5 Castaños secundario ~820 m Castaños (riego) — umbría parcial 📷 Verdor + PIR
Z6 Peña Redonda 🏔️ ~760 m Finca externa 1 ha — ladera este → oeste · ecosistema contrastado 🌧️ Pluviómetro propio 📷 PIR fauna
G1 Gallinero 1 🐔 ~790 m Aves · huevos 🌡️ DHT22 int+ext · MQ-135 (NH₃) · 💡 BH1750 (luz) 📷 Bienestar
G2 Gallinero 2 🐔 ~795 m Aves · huevos 🌡️ DHT22 int+ext · MQ-135 (NH₃) · 💡 BH1750 (luz) 📷 Bienestar

Cada estación monta un ESP32 con sensores base (BME280 + 3×DS18B20 + 3×Capacitivo a 5, 15 y 30 cm de profundidad) más los sensores específicos de la zona. Las 8 estaciones publican por MQTT en la red IoT (vmbr3). Para las zonas sin cobertura WiFi, se usa LoRa RFM95 (adoptado del proyecto Hiveeyes) con un gateway LoRa→MQTT.

2.3 Datos externos: 12 APIs meteorológicas

SmallCountry ya tiene implementadas 12 fuentes de datos externas que enriquecen el Proyecto Clima. Siguiendo el principio de soberanía operativa (ADR-003), los datos se cachean localmente vía n8n y nunca se dependen en caliente de APIs externas:

# Fuente Tipo Variables clave
1 Open-Meteo Forecast EU Temp, viento, lluvia, ET₀, calidad aire
2 AEMET Oficial España Predicción 7d, viento
3 OpenWeatherMap Comercial Temp, humedad, calidad aire
4 ERA5-Land Reanálisis EU Humedad suelo 3 capas, temp suelo
5 Palinocam Polen Madrid 7 especies polínicas (medición real)
6 SIAR (MAPA) Agro oficial ET₀ Penman-Monteith real + temp, precip, radiación
7 Meteoblue Comercial agro ET₀ FAO, temp/humedad suelo, mojado foliar
8 Copernicus CAMS Modelo UE PM2.5/PM10/NO₂/O₃ + polen 6 spp
9 NASA POWER Climatología Medias mensuales históricas
10 C. Madrid Aire 24 estaciones Calidad aire tiempo real
11 Meteoclimatic Red amateur 31 estaciones Extremadura
12 Sentinel Hub Satélite ESA NDVI/NDWI cada 5 días

2.4 EVT multi-fuente

La evapotranspiración de referencia se calcula combinando 3 fuentes:

Fuente Variable Tipo
SIAR ET₀ Penman-Monteith (~3.3 mm/día típico en La Vera) Medición real (estación CC11 Jarandilla, 15.4 km)
Open-Meteo ET₀ FAO forecast Predicción hoy
Meteoblue ET₀ FAO diario + mojado foliar Predicción hoy

La media ponderada se convierte en litros/planta para cada cultivo de riego (kiwis: 20 m²/planta, castaños: Kc 0.75) con balance hídrico a 3 y 10 días.

2.5 Cultivos con riego

Cultivo Zona Riego Marco Kc Área/planta
Kiwis Z3 ✅ Sí 5×4m 1.0 20 m²
Castaños Z4-Z5 ✅ Sí Dispersos 0.75 Variable
Otros frutales Z3-Z4 ✅ Sí Variable Variable Variable
Cerezos Z3 ❌ No
Pastos Z4 ❌ No

Solo los cultivos con riego reciben recomendación automática. Los cerezos y pastos se monitorizan pero no generan alerta de riego.

2.6 CWSI: midiendo el estrés hídrico en las hojas

La evapotranspiración no se puede medir directamente con un sensor barato — se calcula. Pero sí se puede medir su efecto más revelador: la temperatura de las hojas. Cuando una planta tiene agua, transpira y se enfría. Cuando le falta agua, cierra los estomas y la hoja se calienta.

En la zona Z3 (kiwis), un sensor infrarrojo MLX90614 apunta al dosel foliar y mide esa temperatura. Combinado con los datos del BME280 se calcula el CWSI (Crop Water Stress Index):

CWSI = (T_hoja - T_húmeda) / (T_seca - T_húmeda)

CWSI < 0.2  → ✅ Sin estrés
CWSI 0.2-0.3 → 🟡 Estrés leve, vigilar
CWSI > 0.3  → 🔴 Estrés hídrico, necesita riego

Este método está validado desde los años 80 para kiwi, castaño y la mayoría de frutales. Es agricultura de precisión con un sensor de 5 €.

2.7 Bioacústica: INMP441 para seguimiento de fauna

En la zona Z1 (colmenar Cinco Fuentes), un micrófono digital INMP441 (MEMS I2S, respuesta plana 20Hz-20kHz, ruido propio <29 dB SPL) graba audio en buffers de 10 minutos. El pipeline:

INMP441 (I2S) → ESP32 (buffer 10min WAV)
BirdNET Analyzer (modelo local)
        ↓ detecciones
PostGIS (tabla fauna.detecciones, Darwin Core)
Grafana (dashboard biodiversidad) + InvenioRDM (dataset mensual)

Especies ya detectables en Garganta la Olla: abejaruco europeo, abubilla, alcaudón común, águila calzada, buitre leonado, milano negro, mochuelo europeo, autillo, ruiseñor común, curruca cabecinegra, carbonero común...

2.8 Sistema de cámaras ESP32-CAM con IA

Nueve cámaras ESP32-CAM (OV2640 2MP, 8-12 €/ud) distribuidas por la finca operan en dos modos:

Modo 1 — Captura programada (verdor): cada N minutos (15-30 según zona), la cámara despierta, toma una foto y la envía por HTTP POST al servidor IA local.

Modo 2 — Detección por movimiento (fauna): un sensor PIR HC-SR501 despierta la cámara cuando detecta movimiento. Ráfaga de 3 fotos → HTTP POST. Cooldown de 30s para no saturar.

Zona Modo programado Modo PIR Justificación
Z1, Z2 (colmenares) 15 min Máxima biodiversidad
Z3 (kiwis) 15 min Cultivo más valioso — verdor casi en tiempo real
Z4, Z5 (castaños) 30 min Cultivo leñoso — cambios más lentos
Z6 (Peña Redonda) 30 min Fauna prioritaria — ecosistema contrastado
G1, G2 (gallineros) 5 min Bienestar animal + intrusos

Las imágenes llegan a un servidor IA local con 3 pipelines:

  1. MegaDetector (Microsoft, PyTorch): detecta animal/persona/vehículo/vacío. Elimina el 70-90% de fotos vacías automáticamente
  2. ExG (Excess Green Index): 2×G - R - B por pixel → índice de verdor del cultivo. Serie temporal en PostGIS → visible en Grafana
  3. YOLOv8 fine-tuned (futuro): clasificación de especies locales (zorro, jabalí, ciervo, garduña)

2.9 Conectividad LoRa para sensores de campo

Inspirado en el proyecto open source alemán Hiveeyes, que validó el uso de LoRa RFM95 para transmisión de datos de colmenas a larga distancia, el Proyecto Clima adopta radio LoRa como complemento al WiFi para las zonas sin cobertura:

Ventaja de LoRa Detalle
Alcance 2-5 km en campo abierto (vs 50-100 m de WiFi)
Consumo Batería con panel solar dura meses
Penetración Atraviesa vegetación mejor que WiFi 2.4 GHz
Topología Estrella: sensores de campo → un gateway LoRa → MQTT

El gateway LoRa (ESP32 + RFM95) se ubica en Casa Corazón (punto alto, buena cobertura hacia las 7 ha). Los sensores de colmena (Z1, Z2) y Peña Redonda (Z6) usarán LoRa si no hay cobertura WiFi. Los datos llegan al gateway, que los publica en MQTT para el resto del stack (Victoria Metrics + Grafana), manteniendo la misma arquitectura que Hiveeyes pero con Victoria Metrics en lugar de InfluxDB.


3. Flujo de datos

🌦️ Estación meteorológica
📡 ESP32 → WiFi → MQTT (Mosquitto)
⚙️ Node-RED → procesa y formatea
📊 Victoria Metrics → almacena series temporales
📈 Grafana → dashboards climáticos
🔗 API → disponible para todos los proyectos
🔬 n8n → pipeline de ciencia abierta (anonimización) → InvenioRDM

Los datos están disponibles en tiempo real para cualquier servicio de SmallCountry vía MQTT y API REST (Victoria Metrics). Cada proyecto consulta las variables que necesita:

Proyecto Variables que consulta Para qué
🌾 Agricultura Regenerativa Precipitación, temperatura, ET₀, radiación Contextualizar criterios de suelo, ajustar riego
🐝 Corral del Viento Temperatura, precipitación, viento Correlacionar producción de miel con clima, predecir floración
🐔 Gallinero Temperatura, humedad Monitorizar bienestar animal, alertas de temperaturas extremas

4. Ciencia abierta con anonimización

Los datos climáticos se publican mensualmente siguiendo la estrategia de anonimización de SmallCountry. Al ser datos atmosféricos (no vinculados a ubicaciones de cultivos sensibles), el nivel de anonimización es bajo:

Capa Nivel aplicado
Redondeo espacial 0.001° (~110 m) para la estación principal. Los DHT22 de bancal se agregan por altitud (bajo/medio/alto)
Privacidad diferencial No se aplica a datos meteorológicos (no son datos de producción)
Agregación temporal Datos horarios sin agregar. La granularidad horaria es necesaria para ciencia climática

Dataset mensual típico

{
  "station": "El Salto, Garganta la Olla, La Vera, Cáceres",
  "coordinates": "40.1°N, 5.7°W (redondeado a 0.001°)",
  "period": "2026-05",
  "variables": ["temperature", "humidity", "precipitation", "wind_speed", "solar_radiation", "pressure"],
  "temporal_resolution": "hourly",
  "dataGeneralizations": "Coordenadas redondeadas a 0.001 grados (~110 m). Datos de sensores de bancal agregados por rango altitudinal.",
  "license": "CC BY 4.0"
}

5. Integración con SmallCountry

5.1 Roles implicados

Rol Función
Argos — Observabilidad Configuración y mantenimiento de sensores, dashboards, alertas
Deméter — Cultivos y cosechas Usa datos de ET₀ para ajustar riego
Melissa — Colmenas y miel Usa datos de temperatura y precipitación para predecir floración
Fauno — Ganadería y gallinas Usa datos de temperatura para alertas de bienestar animal

5.2 Servicios que usará

Recurso Para qué
ESP32 Controlador de la estación meteorológica y los sensores DHT22 distribuidos
Mosquitto + Node-RED Bus MQTT y procesamiento de datos climáticos
Victoria Metrics Almacenamiento de series temporales climáticas (PromQL)
Grafana Dashboards: panel climático general, microclima, tendencias
n8n Pipeline de publicación mensual de datasets climáticos
InvenioRDM Publicación de datasets con DOI
Forgejo Scripts de análisis climático (Python: Penman-Monteith, tendencias)
Para el administrador

Sensores y conectividad

Dispositivo Ubicación MCU Alimentación Conectividad
Estación meteorológica Punto alto (~850 m) ESP32 Panel solar + batería WiFi → MQTT
Z1 — Cinco Fuentes Colmenar (~810 m) ESP32 + INMP441 Panel solar WiFi o LoRa RFM95
Z2 — Casa Margarita Colmenar (~790 m) ESP32 Panel solar WiFi o LoRa RFM95
Z3 — Huerto kiwis Cultivo (~800 m) ESP32 + MLX90614 Panel solar WiFi
Z4 — Castaños princ. Cultivo (~830 m) ESP32 + pluviómetro + SHT31 Panel solar WiFi
Z5 — Castaños secun. Cultivo (~820 m) ESP32 Panel solar WiFi
Z6 — Peña Redonda Finca externa (~760 m) ESP32 + pluviómetro Panel solar LoRa RFM95 → gateway → MQTT
G1, G2 — Gallineros Aves (~790, 795 m) ESP32 + DHT22×2 + MQ-135 + BH1750 Panel solar WiFi
Gateway LoRa Casa Corazón (~630 m) ESP32 + RFM95 Red eléctrica LoRa → serial → MQTT
ESP32-CAM ×9 Todas las zonas ESP32-S + OV2640 + PIR Panel solar WiFi → HTTP POST

Dashboard en Grafana

Panel de control climático con:

  • Resumen diario: temperatura max/min, precipitación acumulada, viento medio
  • Tendencia semanal: evolución de todas las variables
  • Microclima por altitud: comparativa de temperaturas entre sensores DHT22
  • ET₀: evapotranspiración de referencia calculada en tiempo real
  • Alertas: helada prevista (<2°C), golpe de calor (>38°C), viento fuerte (>50 km/h), sequía (>15 días sin lluvia)

Alertas vía ntfy

  • Helada inminente: activar protección en cultivos sensibles (kiwis, cítricos)
  • Temperatura extrema en gallinero: >35°C o <0°C → riesgo para las gallinas
  • Sequía prolongada: >15 días sin precipitación → planificar riego de emergencia
  • Tormenta: viento >50 km/h + presión bajando rápido → asegurar instalaciones

Problemas comunes

Síntoma Causa probable Solución
Estación sin datos Batería agotada o WiFi caído Verificar panel solar, comprobar cobertura WiFi
DHT22 sin lecturas Sensor dañado por humedad Sustituir sensor (repuesto en Casa Taller)
Pluviómetro atascado Hojas o suciedad Limpiar embudo del pluviómetro
Datos erráticos de viento Anemómetro sucio o araña Limpiar y lubricar
Para el arquitecto

Esquema del sistema

flowchart TB
    subgraph Sensores["🌦️ Sensores climáticos"]
        Estacion[Estación meteorológica]
        Z1[Z1 — Cinco Fuentes<br/>BME280+DS18B20×3+Cap×3<br/>+INMP441 bioacústica]
        Z2[Z2 — Casa Margarita<br/>BME280+DS18B20×3+Cap×3]
        Z3[Z3 — Huerto kiwis<br/>BME280+DS18B20×3+Cap×3<br/>+MLX90614 CWSI+mojado foliar]
        Z4[Z4 — Castaños princ.<br/>BME280+DS18B20×3+Cap×3<br/>+SHT31+pluviómetro]
        Z5[Z5 — Castaños secun.<br/>BME280+DS18B20×3+Cap×3]
        Z6[Z6 — Peña Redonda<br/>BME280+DS18B20×3+Cap×3+pluviómetro]
        G1G2[G1+G2 — Gallineros<br/>DHT22×2+MQ-135+BH1750]
        Cam[ESP32-CAM ×9<br/>PIR+MegaDetector+ExG]
    end

    subgraph Radio["📡 Radio"]
        LoRa[LoRa RFM95<br/>sensores campo]
        GatewayLoRa[Gateway LoRa<br/>ESP32 + RFM95]
    end

    subgraph Procesamiento["⚙️ Procesamiento"]
        Mosquitto[Mosquitto MQTT]
        NodeRED[Node-RED]
    end

    subgraph Almacenamiento["💾 Almacenamiento"]
        VictoriaMetrics[Victoria Metrics<br/>series temporales]
        VictoriaLogs[Victoria Logs<br/>logs centralizados]
        Tempo[Tempo<br/>trazas]
        PostGIS[(PostGIS<br/>metadatos espaciales)]
    end

    subgraph IA["🧠 IA local"]
        BirdNET[BirdNET Analyzer<br/>bioacústica]
        MegaDetector[MegaDetector<br/>fauna en fotos]
        ExG[ExG<br/>índice de verdor]
    end

    subgraph Visualizacion["📊"]
        Grafana[Grafana]
        n8n[n8n → InvenioRDM]
    end

    Z1 -->|WiFi/LoRa| LoRa
    Z2 -->|WiFi/LoRa| LoRa
    Z6 -->|LoRa| LoRa
    LoRa -->|RFM95| GatewayLoRa
    GatewayLoRa -->|MQTT| Mosquitto

    Estacion -->|WiFi| Mosquitto
    Z3 -->|WiFi| Mosquitto
    Z4 -->|WiFi| Mosquitto
    Z5 -->|WiFi| Mosquitto
    G1G2 -->|WiFi| Mosquitto
    Cam -->|HTTP POST| MegaDetector

    Mosquitto --> NodeRED
    NodeRED --> VictoriaMetrics
    NodeRED --> VictoriaLogs
    NodeRED --> PostGIS

    Z1 -->|audio WAV| BirdNET
    BirdNET --> PostGIS

    MegaDetector --> PostGIS
    Cam -->|foto programada| ExG
    ExG --> PostGIS

    VictoriaMetrics -->|PromQL| Grafana
    VictoriaMetrics -->|API| n8n
    PostGIS --> Grafana

Firmware ESP32

  • Estación principal: firmware dedicado con lecturas cada 60s de todos los sensores. Publica en topics MQTT clima/estacion/{variable}
  • DHT22 distribuidos: firmware unificado para los 8 ESP32 con DHT22. Publica en clima/dht22/{ubicacion} cada 5 min
  • Ambos firmwares incluyen modo isla: si pierden MQTT, almacenan en buffer SPIFFS

Ecuación Penman-Monteith (FAO-56)

La ET₀ se calcula en un script Python ejecutado por Node-RED cada hora:

ET₀ = [0.408 × Δ × (Rn - G) + γ × (900/(T+273)) × u₂ × (eₛ - eₐ)] / [Δ + γ × (1 + 0.34 × u₂)]

Donde los inputs vienen de la estación: Rn (radiación neta, calculada a partir de la radiación solar), T (temperatura), u₂ (velocidad del viento), eₛ-eₐ (déficit de presión de vapor, calculado a partir de temperatura y humedad).

Publicación en ciencia abierta

El día 1 de cada mes, n8n ejecuta el pipeline:

  1. Consultar Victoria Metrics: clima/estacion/* y clima/dht22/* del mes anterior
  2. Formatear como CSV Darwin Core + datapackage.json
  3. Aplicar anonimización (redondeo de coordenadas)
  4. POST a InvenioRDM → nuevo dataset con DOI
  5. Notificar a Argos para revisión

Orquestación

Componente Path
Firmware ESP32 (estación) firmware/esp32-clima-estacion/
Firmware ESP32 (DHT22) firmware/esp32-clima-dht22/
Rol Ansible roles/proyecto-clima/
Playbook deploy-clima.yml
Forgejo Actions .forgejo/workflows/clima.yml

6. Hoja de Ruta

Fase 1 — Equipamiento

  • [ ] Adquirir e instalar la estación meteorológica en el punto alto de la finca
  • [ ] Fabricar 8 ESP32 para las zonas Z1-Z6, G1, G2 con sus sensores específicos
  • [ ] Adquirir e instalar 9 ESP32-CAM + PIR para las zonas
  • [ ] Instalar el gateway LoRa (ESP32 + RFM95) en Casa Corazón
  • [ ] Equipar Z1, Z2 y Z6 con módulos LoRa RFM95
  • [ ] Desplegar Mosquitto + Node-RED con topics MQTT para todas las zonas
  • [ ] Implementar script de ET₀ (Penman-Monteith FAO-56) y CWSI en Python

Fase 2 — Integración

  • [ ] Crear dashboards de Grafana: panel climático, CWSI, NDVI, verdor (ExG)
  • [ ] Desplegar servidor IA local con MegaDetector + ExG
  • [ ] Desplegar BirdNET Analyzer para bioacústica (Z1)
  • [ ] Configurar alertas: helada, sequía, golpe de calor, tormenta, NH₃ en gallinero
  • [ ] Integrar con Agricultura Regenerativa: ET₀, CWSI para riego
  • [ ] Integrar con Corral del Viento: correlación clima-floración, Schwarmalarm
  • [ ] Integrar con Gallinero: alertas de temperatura, NH₃ y luz en gallineros

Fase 3 — Ciencia abierta

  • [ ] Configurar pipeline n8n de publicación mensual de todos los datos
  • [ ] Publicar primer dataset climático + bioacústica + verdor con DOI
  • [ ] Validar la estación meteorológica con datos de SIAR y AEMET de la zona

Fase 4 — Predicción y mejora

  • [ ] Acumular datos de 2+ años para análisis de tendencias climáticas
  • [ ] Implementar predicción de heladas a 24h basada en tendencia de presión y temperatura
  • [ ] Fine-tunear YOLOv8 para clasificación de especies locales de fauna
  • [ ] Evaluar impacto del cambio climático en la fenología de los cultivos

7. Notas Finales

El Proyecto Clima es el más humilde de los proyectos de El Salto —no produce alimentos, no vende nada— pero es el que da sentido a todos los demás. Sin saber cuánto ha llovido, la infiltración del suelo no se entiende. Sin monitorizar la temperatura, la floración del cantueso no se predice. Sin medir el viento, no se sabe si las abejas pueden volar.

En el contexto del cambio climático, tener una serie temporal larga de datos meteorológicos propios no es un lujo — es una necesidad. Los datos de AEMET son útiles, pero ninguna estación oficial está en las solanas de Gredos a 700 metros. El clima de esta finca es único, y merece ser medido, comprendido y compartido.


Proyecto Clima · El Salto, Garganta la Olla, La Vera, Cáceres · Mayo 2026


Voluntariado

El Proyecto Clima está abierto a voluntarios interesados en meteorología, datos y sensores.

Si te interesa... Puedes colaborar en...
Meteorología Instalación y mantenimiento de estaciones, calibración de sensores, observaciones manuales
Datos Validación de series temporales, análisis de correlaciones (floración ↔ clima), visualización en Grafana
Electrónica Programación de ESP32, integración de nuevos sensores, mejora del datalogger

Las estancias se coordinan desde El Salto.


Secciones relacionadas


Proyectos