MCPSERV.CLUB
WeeWX

WeeWX

Self-Hosted

Open source weather station software for data collection and reporting

Active(100)
1.1kstars
0views
Updated 4 days ago

Overview

Discover what makes WeeWX powerful

WeeWX is a **Python‑centric** weather data processing framework that ingests raw sensor feeds, normalises them into a unified schema, and produces static artefacts (HTML pages, PNG plots, CSV summaries) as well as pushes data to remote services. At its core it is a **data pipeline**: the *driver* layer reads from thousands of hardware protocols (serial, USB, TCP/IP, SDR), the *engine* stores records in either SQLite or MySQL and triggers scheduled jobs (via a lightweight cron‑like scheduler), and the *skin* layer renders the user interface through Jinja2 templates. Developers benefit from a clean separation of concerns, an extensible plugin architecture, and a well‑documented API surface that can be interacted with programmatically or via HTTP hooks.

Language & Runtime

Data Store

Scheduler

Template Engine

Overview

WeeWX is a Python‑centric weather data processing framework that ingests raw sensor feeds, normalises them into a unified schema, and produces static artefacts (HTML pages, PNG plots, CSV summaries) as well as pushes data to remote services. At its core it is a data pipeline: the driver layer reads from thousands of hardware protocols (serial, USB, TCP/IP, SDR), the engine stores records in either SQLite or MySQL and triggers scheduled jobs (via a lightweight cron‑like scheduler), and the skin layer renders the user interface through Jinja2 templates. Developers benefit from a clean separation of concerns, an extensible plugin architecture, and a well‑documented API surface that can be interacted with programmatically or via HTTP hooks.

Architecture

  • Language & Runtime – Pure Python 3.7+; the entire codebase is written in idiomatic Python, making it accessible to developers familiar with scripting and object‑oriented design.
  • Data Store – Optional backends: SQLite (default, zero‑config) or MySQL/MariaDB for higher write throughput and multi‑user setups. The ORM layer is lightweight, using sqlite3 or pymysql.
  • Scheduler – A custom event loop built on top of asyncio‑like callbacks, allowing plugins to register periodic tasks without external cron jobs.
  • Template Engine – Jinja2 drives all skins; developers can write their own templates or override existing ones without touching the core logic.
  • Extensibility – A plugin framework based on Python packages that expose entry points (weewx.drivers, weewx.outputs, etc.). This enables developers to write drivers for new hardware, outputs for novel data sinks (e.g., MQTT, InfluxDB), or skins that consume the same API.
  • Deployment – Runs on any POSIX system (Linux, macOS, *BSD, Solaris) and is optimized for low‑resource devices like the Raspberry Pi. The code is container‑friendly; a Docker image is maintained in the upstream repo, and all dependencies are managed by Poetry.

Core Capabilities

  • Hardware Abstraction – Over 200 supported weather stations (Davis, Oregon Scientific, Fine Offset, etc.) each with a dedicated driver that translates proprietary packets into the WeeWX record format.
  • Data Publishing – Built‑in outputs for FTP/FTPS, rsync, MQTT, InfluxDB, and a large list of online weather services (WU, CWOP, Windy, etc.).
  • Almanac & Forecast – Generates comprehensive celestial almanacs (sunrise, sunset, moon phases) and can ingest external forecast feeds.
  • Skin & API – Exposes a REST‑like JSON endpoint (/json) for real‑time data, and the templating system can be extended to serve custom dashboards or mobile apps.
  • Internationalisation – Full i18n support via gettext, with locale‑aware date/time formatting and unit conversions.

Deployment & Infrastructure

WeeWX is lightweight enough to run unattended on a single‑board computer, yet scalable via database sharding or clustering of output services. Containerisation is straightforward: the official Docker image pulls a minimal base (Debian slim), installs Python and dependencies via Poetry, and mounts /opt/weewx for configuration. For production deployments, a reverse proxy (NGINX) can expose the JSON API over HTTPS while static skins are served from a separate web server. The scheduler’s event loop can be replaced with systemd timers if preferred.

Integration & Extensibility

  • Plugin Ecosystem – Thousands of community plugins exist, covering new sensors (e.g., weather radars), data sinks (Kafka, ElasticSearch), and skins. Developers can create a plugin by implementing a subclass of weewx.StdDriver or defining an output class that inherits from weewx.Output.
  • Webhooks & Callbacks – Output modules can emit events to external services via HTTP POST, enabling real‑time alerts or CI integrations.
  • Custom APIs – The JSON endpoint can be consumed by any client; developers often build dashboards in React or Vue that poll /json and render live charts.
  • Configuration – All settings are stored in a single weewx.conf file (INI style), making it easy to version‑control or template with Ansible/Chef.

Developer Experience

The project places a strong emphasis on documentation: the official guide covers installation, driver development, skin authoring, and output configuration. The codebase follows PEP‑8 with a comprehensive test suite (PyTest) and continuous integration via GitHub Actions. Community support is active on the mailing list, GitHub discussions, and a dedicated IRC channel. Licensing (GPLv3) ensures freedom to modify and redistribute, while the open‑source nature encourages rapid iteration.

Use Cases

  • Home Weather Stations – Hobbyists running a Raspberry Pi to collect and display local weather data on a personal website.
  • IoT Edge Deployments – Integrating WeeWX with MQTT brokers to feed sensor data into a larger IoT platform.
  • Research & Education – Universities deploying multiple stations across campuses, using the JSON API for data analysis in Python notebooks.
  • Weather Service Aggregation – Small meteorological groups that need to publish data to public weather sites while retaining full control over the underlying hardware.

Advantages

  • Performance & Flexibility – Lightweight core with optional high‑

Open SourceReady to get started?

Join the community and start self-hosting WeeWX today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
GPL-3.0
Stars
1.1k
Technical Specs
Pricing
Open Source
Database
Multiple
Supported OS
LinuxmacOSBSDSolaris
Author
weewx
weewx
Last Updated
4 days ago