OVMS Mate is a self-hosted (or cloud-hosted) visualization dashboard designed for EV owners using the OVMS hardware.
While the official OVMS App is great for control, OVMS Mate focuses on beautiful data visualization, historical analysis, and efficiency tracking. It draws heavy inspiration from the famous TeslaMate project but is built for the open ecosystem of OVMS.
It is specifically optimized for the BMW i3 (using specific PIDs/Metrics) but can be easily adapted for other OVMS-supported vehicles.
- TeslaMate-inspired UI: A clean, dark-mode interface that looks great on mobile and desktop.
- Passive Logging: The logger subscribes silently to MQTT topics (
v.b.*,v.p.*, etc.) without waking the car unnecessarily. It captures data only when the car pushes updates. - Drive Recording: Automatically logs trips with detailed stats:
- Efficiency (Wh/km)
- Elevation & Speed Charts
- Total Consumption
- GPS Path on Map
- Smart Cost Tracking: Define custom electricity tariffs for specific locations (e.g., "Home", "Work"). Supports Time-of-Use (TOU) pricing (Peak/Off-Peak rates) for accurate charging cost calculations.
- Charging Analytics: detailed charging sessions with power curves (kW), SoC gain, and precise cost breakdown.
- Real-time Dashboard: Live status of SoC, Range, Speed, Power, and Battery/Motor temperatures.
- AI Insights (Experimental): Integrated Google Gemini AI to analyze your drive efficiency and provide driving tips.
OVMS Mate modernizes the stack by separating data ingestion from visualization:
- Logger (Node.js): A lightweight Docker container. It connects to your OVMS MQTT broker, listens for metrics, detects state changes (Driving/Charging), and pushes clean data to the database.
- Database (Supabase): A PostgreSQL database that stores all telemetry, drives, and charging sessions.
- Frontend (React/Vite): A responsive web application (hosted on Vercel, Netlify, or locally) that visualizes the data.
graph LR
Car[OVMS Module] -- MQTT Push --> Broker[MQTT Broker]
Broker -- Subscribe --> Logger[OVMS Mate Logger]
Logger -- Insert --> DB[(Supabase PostgreSQL)]
Frontend[React Web App] -- Query --> DB
- OVMS Module: Installed and running in your vehicle.
- Supabase Account: Create a free project at supabase.com.
- Docker Environment: A VPS, NAS (Synology/QNAP), or Raspberry Pi to run the logger.
- Go to your Supabase Project -> SQL Editor.
- Copy the content of
supabase_schema.sqlfrom this repository and run it. This creates the necessary tables (telemetry,drives,charges).
Create a .env file in the root directory (copy from .env.example):
cp .env.example .envEdit .env with your credentials:
# OVMS MQTT Credentials
OVMS_ID=YourVehicleID
OVMS_USER=YourVehicleID
OVMS_PASS=YourSecretPassword
OVMS_SERVER=dexters-web.de (or your broker IP)
# Supabase Credentials (Found in Project Settings -> API)
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-supabase-anon-key-starts-with-ey...
# Optional: Google Gemini API for AI Analysis
API_KEY=AIzaSy...The logger needs to run continuously to collect data.
docker-compose up -d --buildYou can deploy the frontend to Vercel (recommended for free SSL/hosting) or run it locally.
Local Development:
npm install
npm run devVercel Deployment:
- Push your code to GitHub.
- Import project into Vercel.
- Add
VITE_SUPABASE_URL,VITE_SUPABASE_ANON_KEY, andAPI_KEYto Vercel Environment Variables.
This project is free and open-source. If you find it useful for monitoring your EV, consider buying me a coffee! It helps keep the updates coming.
PayPal: dicsonpan@gmail.com
Contributions are welcome! Please feel free to submit a Pull Request.
Distributed under the MIT License.



