A clean, config-first weather dashboard for weewx.
The entire dashboard - pages, layout, tiles, charts, theme - is configured from skin.conf. No template or JavaScript edits are ever needed.
MIT · 62.2 KB of JavaScript, gzipped · Runs on your own hardware
The dashboard
Outside temperature
13.6°C
Feels like
12.1°C
Barometer
1012.4hPa
Wind speed
4.2m/s
Temperature · last 24 hours
9.5–15.5 °C
Humidity
Polar night
Outside temperature
13.6°C
Arctic daylight
Outside temperature
13.6°C
Both themes ship. The dashboard follows the visitor’s system preference, or you can pin one in skin.conf. The tiles above are rendered here from Nordlys’s own design tokens and its fixtures/today.json demo data - the real dashboard is live at weather.al199.no.
Configured, not coded
A page is a list of rows. A row is a list of tiles. A tile is a type plus a handful of options. That is the whole model, and it lives entirely in one file.
There are ten tile types and six chart types, so most changes are a line of config rather than a component. Sensors you do not have hide themselves. Bad config is skipped and logged rather than breaking the report.
Colours, spacing and type are design tokens, so re-theming means overriding a variable - not forking a stylesheet.
skin.conf
[[[[charts]]]]
title = Last 24 hours
columns = 2
[[[[[temperature]]]]]
type = chart
chart = line
span = 24h
obs = outTemp, dewpoint, appTemp
title = TemperatureThat block is the chart above.
The numbers
Core bundle
62.2KB
Stylesheet
4.9KB
MQTT client
109KB
Drop shadows
0
Measured at v0.4.2, under budgets enforced by a check in CI.
What ships
Pages
- Today, yesterday, week, month, year, climate, celestial and archive
- Generated per-week, per-month and per-year archive pages
- Every page is a real HTML file: bookmarkable, indexable, works without JavaScript
Tiles
- Ten tile types: gauge, stat, chart, table, climatology, celestial, forecast, reports, history and text
- Sensors you do not have hide themselves, with no configuration
- Thresholds colour a value when it crosses them
Charts
- Line, area, bar, scatter, wind rose and calendar heatmap
- Spans from 24 hours to a year, with a second axis for overlays like rain rate
- Drawn with uPlot and hand-rolled SVG, themed from the same tokens as everything else
Data
- Sixteen observations wired up by default
- NOAA monthly and yearly text reports
- A Zambretti forecast computed locally from your own barometer
- Nordic climatological days: frost, ice, summer and tropical days, tropical nights, precipitation, growing and storm days
Live and offline
- Live updates over MQTT, with the client downloaded only when you configure it
- Installable as a PWA, with a service worker and a web manifest
- Auto-refresh each time weewx writes a new report
Findable
- Sitemap, robots.txt and JSON-LD
- Per-station social cards rendered server-side, showing current conditions
Install
Terminal
weectl extension install weewx-nordlys-0.4.2.zip
weectl report runNordlys installs as a weewx extension. The report is written to HTML_ROOT/nordlys/ and regenerates on each archive interval.
pip install ephem is optional and unlocks the full Celestial page. Without it the celestial tiles still show sunrise, sunset, day length and moon phase.
Everything else is configuration: the configuration reference covers every option, and the theming guide covers the tokens.