This Docker stack includes several WeeWX extensions that enhance functionality and provide modern interfaces for weather data.
Modern, responsive web skin that provides a mobile-friendly interface with real-time updates, weather maps, and customizable layouts.
Purpose: Replaces the default WeeWX web interface with a contemporary design
Version: 1.3.1 (stable release with Python 3.13 compatibility fixes)
Status: Enabled by default
Hardware driver for Ecowitt/Fine Offset weather stations that connects to GW1000-compatible gateways via LAN/Wi-Fi.
Purpose: Enables data collection from Ecowitt weather stations
Supported Hardware: WS3800/WS3900, GW1000/GW1100/GW2000, WH2650/WH2680
Status: Enabled by default
Data API extension that provides JSON endpoints for the weeWXWeatherApp Android application.
Purpose: Enables mobile app access to weather data
Android App: weeWXWeatherApp
Status: Enabled by default
| Variable | Description | Default | Required |
|---|---|---|---|
WEEWX_LOCATION |
Weather station location description | My Cosy Home Weather Station |
Yes |
WEEWX_VERBOSE_HARDWARE |
Verbose description of weather station hardware | Personal Weather Station |
No |
WEEWX_LATITUDE |
Station latitude in decimal degrees | 47.2626 |
Yes |
WEEWX_LONGITUDE |
Station longitude in decimal degrees | 11.3945 |
Yes |
WEEWX_ALTITUDE |
Station altitude with unit | 587, meter |
Yes |
WEEWX_STATION_URL |
Website URL for your station | (empty) | No |
WEEWX_RAIN_YEAR_START |
Month when rain year starts (1-12) | 1 |
No |
WEEWX_WEEK_START |
First day of week (0=Mon, 6=Sun) | 0 |
No |
WEEWX_UNIT_SYSTEM |
Unit system for web interface | metric |
No |
WEEWX_LANGUAGE |
Language code for interface | en |
No |
WEEWX_TIMEZONE |
Timezone for display in skins (IANA format) | (system default) | No |
WEEWX_SKIN |
Default WeeWX skin selection | Belchertown |
No |
| Variable | Description | Default | Required |
|---|---|---|---|
GW1000_IP |
IP address of weather station gateway | 192.168.1.10 |
Yes |
NGINX_PORT |
External port for web interface | 8080 |
Yes |
| Variable | Description | Default | Extension |
|---|---|---|---|
ENABLE_GW1000_DRIVER |
Enable GW1000 driver installation | true |
GW1000 |
GW1000_USE_PIEZO_RAIN |
Use piezo rain sensors (WS90/WS85) instead of traditional rain gauge | false |
GW1000 |
ENABLE_BELCHERTOWN_SKIN |
Enable Belchertown skin installation | true |
Belchertown |
BELCHERTOWN_VERSION |
Belchertown skin version to install | 1.3.1 |
Belchertown |
ENABLE_INIGO_EXTENSION |
Enable Inigo extension installation | true |
Inigo |
INIGO_VERSION |
Inigo extension version to install | 1.0.17 |
Inigo |
- Latitude/Longitude: Use decimal degrees format (negative values for south/west hemispheres)
- Altitude: Format must be "number, unit" where unit is "foot" or "meter"
- Example:
WEEWX_LATITUDE=47.2626(Seattle),WEEWX_ALTITUDE=587, meter
- us: Fahrenheit, inches, miles (US Imperial)
- metric: Celsius, millimeters, kilometers
- metricwx: Meteorological metric (Celsius, millimeters, knots)
Supported language codes: en (English), de (German), fr (French), es (Spanish), it (Italian), ca (Catalan)
Note: Language support varies by skin. Belchertown includes translation files for all supported languages.
Configure timezone display using the WEEWX_TIMEZONE environment variable:
- Format: IANA timezone format (e.g.,
Europe/Berlin,America/New_York) - Effect: Sets timezone for Belchertown skin display and includes timezone abbreviation in timestamps
- Example: Setting
WEEWX_TIMEZONE=Europe/Berlindisplays times as "21. September 2025, 16:45:00 CEST" - Default: Uses system timezone when not specified
Common European timezones:
Europe/Berlin- Germany (CEST/CET)Europe/Paris- France (CEST/CET)Europe/Zurich- Switzerland (CEST/CET)Europe/Vienna- Austria (CEST/CET)Europe/Rome- Italy (CEST/CET)
The Belchertown skin automatically configures itself based on the core WeeWX environment variables:
- Site title: Uses
WEEWX_LOCATION - Manifest settings: Generates progressive web app configuration
- Labels and footer: Customized with station information
- Language: Respects
WEEWX_LANGUAGEsetting - Timezone: Configures display timezone and moment.js formats with
WEEWX_TIMEZONE
The GW1000 driver automatically configures sensor mapping and accumulator settings:
- IP address: Configured from
GW1000_IP - Sensor support: Lightning detection, air quality, soil sensors, battery monitoring
- Data collection: 20-second polling interval for real-time updates
For weather stations with piezo rain sensors (WS90/WS85), set GW1000_USE_PIEZO_RAIN=true:
- Traditional rain gauges (default): Uses
t_rainandt_rainratefields from mechanical rain gauge - Piezo rain sensors: Maps WeeWX standard
rainandrainRatefields to piezo data (p_rain,p_rainrate) - Field mapping: When enabled, piezo rain data appears in standard WeeWX database fields
- Skin compatibility: Works with any WeeWX skin (Belchertown, Seasons, etc.) without modification
- Backward compatibility: Can be toggled between piezo and traditional modes
The Inigo extension creates API endpoints and settings file:
- Unit system: Automatically matches
WEEWX_UNIT_SYSTEMsetting - Station info: Uses location and coordinate variables
- Data format: Compatible with weeWXWeatherApp Android application
To add custom extensions to the stack, see the Extension Development Guide which provides:
- 3-phase architecture: Install → Patch → Configure
- Template scripts: Ready-to-use starting points
- Patch management: Industry-standard diff/patch system
- Common utilities: Shared logging and backup functions
New extensions should be added to the init/extensions.d/ directory following the established patterns.
- README.md - Project overview and quick start guide
- README-PORTAINER.md - Complete Portainer deployment instructions
- examples/README.md - Extension development guide and templates
- init/extensions.d/README.md - Technical extension architecture details