EV TRIP PLANNER

SmartDrive App

Type any origin and destination. Real routing, hourly weather & traffic forecasts along the route, elevation, per-seat load and mileage-based battery health all feed a physics model comparing three driving strategies - fewest stops, fastest arrival, and country speed limits.

Route

OSRM routing

Vehicle & battery

Physics model
Est. battery health 100% - derived from mileage
Model specs
Trip charging
Charge in the pack when you leave - independent of the per-stop ceiling below
Upper limit only - fewer stops (including none) are used when possible

Occupants & cargo

Per seat
Total added mass: 95 kg · vehicle curb weight: 1900 kg

Conditions

Optional overrides
By default an hourly weather forecast along the route and a time-of-day traffic forecast for your departure are used - only check a box above to force specific conditions.

Fetches real routing, elevation, route weather & traffic forecasts and charging-station data - usually takes 10-20 seconds.

Enter a start and end point above, then calculate.

Weather along the route

Open-Meteo · forecast
🌡️
Condition-
Temp-
Wind-
Precip-
Net effect-

Map & charging stations

Live route
Auto-filled once a route is found - editable
Net ascent / descent along the route
Time-of-day traffic forecast along the route - weekday/weekend + rush-hour model at each leg's ETA.
Loading map…
Efficient stops Fastest-overall stops Speed-limit stops White ring = matched to a real charging station (click for details) Free-flowing Moderate traffic Heavy traffic 🚧 Road event Scroll/drag to zoom & pan · Rain & wind top-right

What actually drives these numbers

Five parameter groups feed the model. The ones marked live come from real API calls made by your browser when you click "Calculate trip" - everything recalculates instantly from there as you move any control.

Vehicle & battery

  • Brand & model catalog - specs listed from the selected vehicle
  • Mileage (km) → estimated state of health (usable capacity = nominal × SoH)
  • Consumption curve vs. speed (aero drag ∝ relative airspeed²), scaled by mass and wind vs heading
  • Peak charging power, derated by SoH and battery temperature
  • Regenerative braking on descents

Route & conditions

  • Live place search, full OSM coverage (Nominatim)
  • Live distance, duration & geometry (OSRM routing)
  • Live elevation profile → net climb/descent energy (Open-Meteo)
  • Per-segment speeds from OSRM + posted OSM limits (Speed-limit scenario)
  • Live temporary / digital speed limits - DE Autobahn, NL NDW, FI Digitraffic, OSM VMS corridors
  • Road events - construction, closures & roadworks (OSM + closures.osm.ch)
  • Traffic forecast (time-of-day + Europe-wide congestion corridors)
  • 2-3 alternative routes offered when OSRM finds them

Weather

  • Live rain radar on the map (RainViewer; overlay upscales past zoom 7) and animated wind flow (Open-Meteo)
  • Hourly weather forecast at sample points along the route (Open-Meteo)
  • Wind speed & direction vs local heading (Tesla-style): headwind raises aero drag with relative airspeed², tailwind helps less, crosswind still costs energy
  • Cold-weather range and charging-speed penalty

Occupants & load

  • Per-seat passenger weight (driver, front, 3× rear)
  • Cargo/luggage weight
  • Total mass scales rolling-resistance energy use

Charging network

  • Charge-curve taper (fast 10-50%, slow above ~80%)
  • Fixed overhead per stop (plug in/out, restroom)
  • Price per kWh
  • Real charger locations/uptime - out of scope, see below

Live data sources. Place search tries Nominatim first (full OpenStreetMap coverage, including small towns) and falls back to a baked-in list of ~5,700 European towns/cities if that fetch fails. Routing via the public OSRM demo server, weather & elevation via Open-Meteo - all free, keyless, called directly from your browser, so results depend on those services being reachable from wherever this file is opened (some in-chat sandboxes proxy or block cross-origin fetches to arbitrary domains; opening the downloaded file in a normal browser tab avoids that). The map itself is drawn locally as SVG from baked-in coordinates and country outlines - it never depends on a tile server, so it always renders, pans, and zooms even if every live service above is unreachable; it just won't show the real road-shaped route or find places outside the offline list in that case. Still simplified/out of scope: full pan-European live digital gantry (VMS) coverage in one feed - EU DATEX II National Access Points exist (Flanders RSS, NDW MSI, etc.) but most need registration or a backend proxy; commercial APIs (TomTom Unified Speed Restrictions, HERE) fuse permanent + temporary + live electronic limits. This demo pulls free CORS-friendly sources where available (DE Autobahn roadworks/warnings, NL NDW temporary max speeds when reachable, FI Digitraffic signs, OSM variable corridors) plus a Europe-wide congestion-hotspot model. Trip times follow OSRM freeflow segment speeds capped by posted/live limits, then a time-of-day + hotspot traffic model - not Google/TomTom live probes, so ETAs can still differ from Google Maps during unusual incidents. Real charging-network locations/availability/pricing (Open Charge Map, Ionity, Tesla), and stop placement is evenly spaced rather than snapped to actual charger sites. The offline search fallback only covers towns/cities with population ≥ 20,000 - genuine village-level search depends on the live Nominatim call succeeding. Nominatim's usage policy expects a backend proxy with a proper User-Agent for anything beyond light demo use.