Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

755 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weather34 for WeeWX

A modern, modular self-hosted weather dashboard skin for WeeWX 5. Theme-aware, drag-and-drop customizable, with live radar, air quality, lightning, space weather, and AI-summarized forecast discussions — all powered by free, keyless data sources.

WeeWX 5.5.2 PHP 8.4 Python 3.13 Debian 13 Status: active License: non-commercial

A community-maintained fork of the original weewx-Weather34 skin. The upstream project reached end-of-life in August 2023; this fork keeps it working on modern WeeWX 5, PHP 8.4, and Python 3.13, and rebuilds it around a fully modular, customizable dashboard.

Weather34 for WeeWX — dashboard, dark theme


Overview

Weather34 for WeeWX turns an Ecowitt GW1000/GW2000 gateway (or any WeeWX-supported station) into a rich, self-hosted weather site. Sensor data is collected by the WeeWX daemon; a flat PHP frontend renders it as a live dashboard of modular "cards," each independently styled and rearrangeable. Supplemental data (forecasts, METAR, alerts, air quality, radar, space weather) comes entirely from free, officially maintained sources — no paid or deprecated APIs.

Features

  • 🧩 Modular dashboard — every card is a self-contained module with scoped .mod-* CSS. No monolithic stylesheet, no selector bleed between cards.
  • 🖱️ Live drag-and-drop layout editor — toggle edit mode and rearrange cards directly on the grid (SortableJS); arrangements save instantly. Lock the layout and choose 3 / 4 / 6 / auto grid columns on the fly.
  • 🌗 Full light/dark theme engine — theme-aware stylesheet pairs applied across the whole page, including the settings UI.
  • 📡 Live NWS radar — polished radar module with real-time station picking, dark-mode inversion, zero-flash double-buffered loop transitions, and an interactive pan/zoom popup.
  • 🌫️ Air quality — two-column module with PM2.5 and O₃ pills from the nearest WAQI monitor and PM10 / NO₂ estimates from the Open-Meteo air-quality model (marked est), a tabbed details popup, and a historical AQI trend chart.
  • ⚡ Lightning — live strike statistics from the archive database, a 24-hour strike-distance strip across the sensor's range (heat-shaded by count, with the latest strike marked), distances in the dashboard's units, and a Strike Almanac with yearly and weekly charts.
  • 💧 Rain & evapotranspiration — rain and ET totals side by side on the rainfall card, ET and the rain − ET balance in the Rain Almanac, and ET drawn alongside rain in the rain charts.
  • 🩺 Sensor health light — a top-bar check-engine light for low batteries and sensors that have gone silent (see SENSOR_HEALTH.md).
  • 🌌 Space Weather — real-time NOAA OVATION 30-minute auroral-visibility probability alongside the Kp index.
  • 🤖 AI Forecast Discussion — a local Ollama (gemma3:1b) summarizer distills the NWS Area Forecast Discussion right onto the dashboard, plus a short-term Local Nowcast card.
  • 📈 Almanacs & history charts — each card's popup opens an almanac (today, yesterday, month, year, all-time records) plus tabbed Highcharts yearly and weekly charts with timeframe buttons, for temperature, wind, rain, barometer, lightning, UV, solar radiation, indoor, air quality and cloud cover.
  • 🔔 Dashboard notifications — toast alerts for low battery, UV caution, heat exhaustion, wind advisory/warning, wind chill, and freezing dewpoint.
  • 🌍 Internationalized — 15 languages across the cards, popups and charts via $lang[].
  • 🆓 Free & keyless data — Open-Meteo, NOAA Aviation Weather METAR, and NWS alerts require no API key; only optional extended forecast / AQI use free tokens.

Branches

Branch WeeWX PHP Python OS Status Description
main 5.5.2 8.4 3.13 Debian 13 Trixie 64-bit Active The modular skin — dynamic layout engine, modular CSS, theme engine, Space Weather & LLM forecast
main-legacy 5.5.0 8.4 3.13 Debian 13 Trixie 64-bit Preserved Previous upstream-compatible standard layout (pre-modularization)
legacy-4.x 4.10.2 8.1 3.9 Debian 11 Bullseye Frozen Traditional steepleian-style WeeWX 4 releases

Requirements

  • WeeWX 5.x (tested 5.5.2)
  • PHP 8.2+ with mbstring (tested 8.4 via php-cli + Apache)
  • Python 3.9+ (tested 3.13)
  • OS Debian 12 Bookworm or 13 Trixie (64-bit recommended)
  • Station Ecowitt GW1000 / GW2000 via weewx-contrib/weewx-gw1000 (any WeeWX-supported hardware works; some cards assume GW1000 fields)
  • Optional Ollama with gemma3:1b for the Forecast Discussion module

Getting Started

Full step-by-step setup from a bare Pi — WeeWX install, GW1000 driver, skin deploy, cron jobs, and the optional Space Weather / LLM modules — is in INSTALLATION.md.

The short version:

# 1. Install WeeWX 5 (see INSTALLATION.md for the apt repo key setup)
sudo apt install weewx python3-packaging python3-six php8.4-mbstring

# 2. Install the GW1000 driver
sudo weectl extension install --yes \
  https://github.com/weewx-contrib/weewx-gw1000/archive/refs/heads/master.zip

# 3. Deploy the skin
sudo git clone https://github.com/meisnick/weewx-Weather34.git /var/www/html/weewx/weather34
sudo chown -R www-data:www-data /var/www/html/weewx/weather34

# 4. Create your local station config (gitignored — never committed)
cd /var/www/html/weewx/weather34
cp scripts/w34config.example.py scripts/w34config.py
# then edit scripts/w34config.py with your lat/lon, ICAO code, and NWS alert zones

Then configure /etc/weewx/weewx.conf (start from weewx5.conf.example) and set up the cron scripts that fetch forecast, METAR, alerts, cloud cover, and air quality. See INSTALLATION.md for the complete procedure and TROUBLESHOOTING.md if something looks off.

Already running WeeWX 4 or an older Weather34 fork? See MIGRATION.md.


Data Sources & Attribution

All supplemental data comes from free, officially maintained sources. Paid and deprecated APIs (AerisWeather, CheckWX, sat24, EU MeteoAlarm) were removed.

Source Purpose License
Open-Meteo Forecast, cloud cover, PM10/NO₂ estimates (CAMS model) CC BY 4.0 — attribution required
NOAA Aviation Weather Center METAR current conditions US Government / Public Domain
NOAA National Weather Service Weather alerts, AFD US Government / Public Domain
NOAA Space Weather Kp index / OVATION aurora US Government / Public Domain
IBM The Weather Company Optional extended forecast Requires API key
WAQI Air quality index Requires free API token
WeeWX Weather station daemon GPL v3
basmilius/weather-icons Animated forecast SVG icons MIT

Open-Meteo data is used under CC BY 4.0 per their terms. The air-quality estimates contain modified Copernicus Atmosphere Monitoring Service information. NOAA data is US government work and not subject to copyright within the United States.


Repository Layout

PHP naming conventions & directory map

All PHP modules are served directly from the web root — subdirectories would break the relative include() paths and cross-file links the skin relies on. The flat layout is intentional; file naming conventions provide the grouping.

Prefix / pattern Role
index.php Main dashboard — assembles all position modules
w34*.php Core skin files (data aggregation, realtime, highcharts search)
common.php, shared*.php Included by almost every page — settings, shared functions
settings1.php, initial_settings1.php Live station config written by templateSetup.php
*module.php Slot modules (indoor temp, AQI, radar, space weather, etc.)
pop_*.php Lightbox popup panels — opened via data-lity links
forecast*.php Forecast display modules (3-period, large, hourly)
top_*.php Top-bar advisory/alert strip modules
templateSetup.php Browser-based settings + drag-and-drop layout editor
metar34*.php METAR / current conditions display
*_lookup.php AJAX endpoints (zone/ICAO auto-detection)
Directory Contents
scripts/ Python cron scripts (forecast, METAR, NWS alerts, cloud cover)
css/ Stylesheets — framework.* + scoped css/modules/*.css
js/ Vendor JS libraries (jQuery, gauge, lightbox, SortableJS)
w34highcharts/ Highcharts subsystem — PHP data endpoints, JS, theme CSS
metar/, daylightmap/, languages/ METAR helper, daylight map popup, translations
skins/Weather34/ WeeWX Cheetah templates (skin.conf, archivedata.php.tmpl)
user/ WeeWX Python extensions (weather34.py, gw1000.py)
jsondata/, serverdata/ Runtime data written by cron / WeeWX — gitignored

What's Different From Upstream

Modernization, API migration & the modular rebuild

Compatibility — WeeWX 5 + Python 3.13 (distutils → packaging.version), PHP 8.4 (ob_start(), {$var} interpolation, mbstring), WeeWX-5 GW1000 driver.

Free-source API migration — forecast → Open-Meteo (CC BY 4.0); METAR → NOAA AWC; alerts → api.weather.gov; cloud cover → Open-Meteo archive. Deprecated-service filenames renamed (forecast3aw.php → forecast3om.php, pop_aeris_* → pop_forecast_*, darksky* CSS → forecast*, etc.).

Modular rebuild (the main branch) — CSS-Grid page layout; drag-and-drop dashboard editor (SortableJS) with instant save and column controls; theme-aware framework.* stylesheets plus scoped css/modules/*.css; a dynamic loader that pulls only the CSS for active modules; and redesigned Air Quality, Lightning (v2), Space Weather, NWS Radar, Forecast Discussion, and Local Nowcast modules. Legacy runtime class names were folded into the scoped .mod-* system with render-parity gates.

Hardening & cleanup — dead earthquake module removed; restored dashboard toast notifications; i18n of titles and Beaufort strings; numerous unit-conversion fixes; all credentials, API keys, and coordinates removed from committed files (station config lives only in gitignored files).

See CHANGELOG.md for the complete, dated history and WEATHER34_MODULE_GUIDE.md for the module design system.


Documentation

Document Purpose
INSTALLATION.md Fresh installation from a bare Pi
MIGRATION.md Upgrading from WeeWX 4 or an older Weather34 fork
TROUBLESHOOTING.md Common configuration issues and fixes
SENSOR_HEALTH.md Sensor battery/signal health monitoring
WEATHER34_MODULE_GUIDE.md Module design system & developer reference
CHANGELOG.md Full change history

Credits

  • Original template: Brian Underdown — weather34.com
  • Original WeeWX skin port: Ian Millard (Steepleian) — steepleian/weewx-Weather34. Ian ported Weather34 to WeeWX and maintained it through v4.3.0 (August 2023). This fork builds directly on his work; his repo remains the authoritative reference for WeeWX 4 installations.
  • This fork: meisnick/weewx-Weather34 — continued maintenance after upstream EOL: WeeWX 5.x, PHP 8.4 / Python 3.13, free-source API migration, and the modular dashboard rebuild.

License

Copyright © 2016–2019 Brian Underdown (weather34.com).

Permission is granted to use and modify for personal use. Redistribution or resale requires prior permission from the original author; see the original license at weather34.com/homeweatherstation. This fork adds its modifications under the same non-commercial terms.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages