Portada del servidor meteorologico Ecowitt autoalojado

Estación Clima XE1E: mi propio servidor para una estación Ecowitt

Las estaciones meteorológicas Ecowitt pueden mandar sus datos a varios servicios en la nube, y para empezar está bien. Pero en cuanto quieres ver tus datos a tu manera o guardar todo el historial sin depender de nadie, se queda corto. Lo mismo pasa si quieres alertas a tu medida o mostrar el clima en pantallas de tu casa. Por eso armé un servidor propio para mi estación Ecowitt en la Ciudad de México y lo llamé Estación Clima XE1E. Recibe los datos, los guarda y los publica en un sitio web abierto a cualquiera: clima.xe1e.net.

En este artículo te cuento cómo está hecho, qué puede hacer y qué aprendí en el camino.

Estación Ecowitt WS2910 con el sensor exterior WS69, la principal de mi servidor
Estación Ecowitt WS2910 con el sensor exterior WS69, la principal de mi servidor
Lo básico
EstaciónEcowitt WS2910 con sensor exterior WS69 (915 MHz)
Sensores extraWN31 de temperatura y humedad (hasta 8 canales) y una segunda estación con gateway GW1100
ServidorFastAPI (Python), InfluxDB y un sitio en React, todo en contenedores Docker
Dónde verloclima.xe1e.net, con datos cada minuto
ExtrasCámara del cielo, radar, ciclones, alertas por correo y pantallas físicas

Cómo funciona el servidor

La consola WS2910 tiene una opción que casi nadie usa: «servidor personalizado». Ahí le indicas a dónde mandar sus lecturas. Luego, cada minuto, hace un envío con el protocolo de Ecowitt, es decir, un HTTP POST con todos los valores. Además, la estación Ecowitt no necesita estar en la misma red que el servidor, ya que basta con que tenga internet.

Del otro lado hay tres piezas:

  1. El receptor, un servicio en Python con FastAPI. Lee cada envío, convierte las unidades, revisa que los valores tengan sentido y los guarda.
  2. InfluxDB, una base de datos hecha para series de tiempo. Guarda cada lectura sin fecha de caducidad, así que el historial crece día con día.
  3. El sitio web, hecho en React, que muestra los datos en vivo y todo lo que se calcula a partir de ellos.

Todo corre en contenedores Docker, en un servidor en la nube y con HTTPS. Una de las cosas que más cuidé es que la base de datos no quede expuesta a internet. De hecho, solo se llega a ella desde dentro.

Lo que puedes ver en el sitio

Al principio, el servidor de mi estación Ecowitt solo mostraba un tablero con la temperatura y el viento. Hoy, en cambio, el sitio tiene más de quince páginas. Las que más uso son estas:

  • Inicio: condiciones actuales, viento con su brújula, presión con tendencia, lluvia, UV y radiación solar, sensación térmica, punto de rocío y humidex.
  • Pronóstico: por día y por hora, con dos fuentes para comparar: Open-Meteo y el pronóstico oficial del SMN (Conagua), que puedes consultar para cualquier municipio de México.
  • Radar: el radar del SACMEX sobre la Ciudad de México, animado. Además, el servidor guarda su propio historial de cuadros y calcula la intensidad de los ecos por sus colores.
  • Cámara: una foto del cielo cada pocos minutos y un timelapse de cada día. También hay un análisis con inteligencia artificial que describe las nubes, la visibilidad y si se ve venir lluvia.
  • Ciclones: los ciclones tropicales activos en el Pacífico y el Atlántico, con su trayectoria y los avisos para las costas de México. Incluso trae un resumen en español de la discusión técnica del Centro Nacional de Huracanes.
  • Historia, Estadísticas y Climatología: todo el archivo de la estación, con récords, promedios por mes, rosa de vientos y descarga en CSV.
  • Calidad del aire, Astronomía, Sismos y Aeronáutica (METAR y TAF decodificados).

Una de mis favoritas es la que califica los pronósticos. Ahí el servidor compara cada pronóstico con lo que de verdad midió el pluviómetro de la estación Ecowitt. Entre las fuentes están la cámara, Open-Meteo, el SMN y otras, y la comparación va a la hora y a tres horas. Así sé a quién creerle cuando dicen que va a llover.

Alertas para cualquiera

Desde clima.xe1e.net/alertas cualquiera puede inscribirse para recibir avisos por correo. Hay avisos de lluvia, calor o frío, viento fuerte, UV alto y mala calidad del aire. También hay de sismos, de ciclones que se acercan a México y de lo que detecta la cámara. Cada quien elige las que quiere e incluso puede poner un horario de silencio nocturno. Además, se da de baja con un clic desde cualquier aviso.

Yo, por mi parte, recibo por Telegram las alertas técnicas del servidor y de la estación Ecowitt. Por ejemplo, un sensor sin batería, uno que se quedó «pegado» en el mismo valor o la estación que dejó de enviar.

Más de una estación Ecowitt

El mismo servidor recibe una segunda estación Ecowitt, con un gateway GW1100. Su sensor WN32 va dentro de un escudo de radiación impreso en 3D. Sus datos se guardan aparte y tienen su propia página, la de estación remota. El escudo lo diseñé para los sensores WN31, WN32 y WN35. Además, lo puedes descargar gratis en Printables.

Estación remota: sensor WN32 dentro del escudo de radiación impreso en 3D
Estación remota: sensor WN32 dentro del escudo de radiación impreso en 3D

Pantallas del servidor en la casa y el shack

No siempre quiero abrir el navegador para ver el clima. Por eso el servidor de mi estación Ecowitt también alimenta pantallas físicas:

  • Un kiosco táctil de 7″ con la Waveshare ESP32-S3. El servidor arma cada pantalla como imagen y el ESP32 solo la descarga y la muestra. Así, agregar pantallas nuevas no requiere tocar el firmware. Su código es abierto: ecowitt-display-kiosk-xe1e. Antes, esa misma pantalla fue una estación meteorológica ESP32-S3 autónoma.
  • Una pantalla de tinta electrónica LilyGo T5 de 4.7″, que despierta, pide el pronóstico y vuelve a dormir para ahorrar batería.
  • Un reloj de píxeles Ulanzi TC001 con mi firmware SVITRIX-XE1E. Va rotando la temperatura, la humedad, el viento y la calidad del aire. Te cuento más en el artículo del firmware para el Ulanzi TC001.
Kiosco de 7": réplica de la consola Ecowitt
Kiosco de 7″: réplica de la consola Ecowitt
Reloj Ulanzi TC001 mostrando la temperatura exterior de la estación
Reloj Ulanzi TC001 mostrando la temperatura exterior de la estación

Compartir con las redes de aficionados

Una estación propia aporta más cuando sus datos llegan a otros. Por eso el servidor publica las lecturas en Weather Underground, Windy, PWSWeather, AWEKAS, Weathercloud, OpenWeatherMap, openSenseMap y en CWOP/APRS. Esta última, de hecho, es la red de estaciones de radioaficionados y voluntarios cuyos datos aprovecha la NOAA. También la foto de la cámara sale como webcam en Windy, AWEKAS y Weathercloud. La imagen, además, lleva una franja con los datos del momento. Por último, Home Assistant toma los mismos datos de la API del servidor para las automatizaciones de la casa.

Lo que aprendí con mi servidor

  • La altitud importa. La Ciudad de México está a unos 2,250 metros. Ahí, la presión de la consola no se parece a la de los pronósticos si no la corriges al nivel del mar. Al final, el servidor hace esa corrección con la fórmula de la atmósfera estándar, en vez de la consola.
  • Los sensores a veces mienten. Un sensor puede quedarse con el mismo valor durante horas sin marcar ningún error. Por eso el servidor revisa si una lectura de la estación Ecowitt se repite de más. También revisa si un valor no cuadra con el historial de la propia estación.
  • Primero la seguridad. Un servidor en internet recibe intentos de acceso todo el día. Así que cerré todo lo que no tiene que estar abierto. Además, el panel de administración tiene usuario, contraseña y límite de intentos.

Conclusión

Tener tu propio servidor para la estación Ecowitt es como tener tu propio repetidor: da más trabajo que usar el de alguien más, pero aprendes muchísimo y lo haces a tu medida. Estación Clima XE1E guarda datos desde julio de 2026, alerta a quien lo pida y alimenta las pantallas de la casa. Si quieres ver cómo está el clima en la Benito Juárez, entra a clima.xe1e.net. Y si tienes una estación Ecowitt y te animas a algo parecido, escríbeme a [email protected].

73 de XE1E.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *