An interactive energy dashboard for Sweden that aggregates electricity prices, weather data, solar production estimates, and EV charging optimisation in a single interface.
Problem
Swedish electricity prices differ across four bidding zones and update every 15 minutes. For EV owners, this means manually tracking prices, weather forecasts, and grid tariffs to know when charging is cheapest — a tedious process that few have time for daily.
Approach
I built a full-stack application with Python FastAPI on the backend and Vue 3 + TypeScript on the frontend. The backend aggregates data from multiple sources: Nord Pool day-ahead prices via ENTSO-E, weather and solar irradiance from Open-Meteo, and historical prices for statistical calibration. An EV charger optimizer scores each time slot based on spot price, solar generation, grid tariff, and tax to find the cheapest charging window. The frontend presents everything on an interactive MapLibre map with colour-coded bidding zones and Chart.js graphs.
Features
- Price dashboard: Live Nord Pool prices with 24-hour curves and weekly history
- Map of Sweden: Interactive MapLibre map with zone-based price colouring (SE1–SE4)
- EV charging optimizer: Computes the cheapest charging schedule based on battery, charger, solar panels, and grid tariff
- Solar production estimation: Estimate solar panel output using Open-Meteo irradiance data
- Price forecast: Linear regression model trained on historical prices and weather
- Tomorrow heuristic: Estimates whether waiting for upcoming prices is worthwhile
- Async data fetching: SQLite caching with configurable TTL
What it offers
Energiöversikt makes it easy to make informed decisions about electricity consumption. For EV owners, the optimizer removes the guesswork around when charging is cheapest. For solar panel owners, the forecast provides insight into expected production. The dashboard consolidates data from multiple APIs that would otherwise require manual checking, and the open architecture makes it straightforward to add new data sources.
Tech Stack:
- Backend: Python, FastAPI, SQLite
- Frontend: Vue 3, TypeScript, MapLibre GL JS, Chart.js
- Data sources: Nord Pool (ENTSO-E), Open-Meteo
- Operations: Docker, Linux
Repository: git.jimmy-b.se/JimBer110/SpotCharge