The Open Vehicle Monitoring System (OVMS) integration for Home Assistant. Connect your electric vehicle with Home Assistant via MQTT, automatically creating sensors for all vehicle metrics.
| Section | Description |
|---|---|
| Overview | What this integration does |
| Features | Full feature list |
| Requirements | Prerequisites and firmware versions |
| Screenshots | Visual examples |
| Installation | HACS and manual install |
| MQTT Broker Configuration | MQTT broker setup and ACL |
| OVMS Configuration | OVMS module setup |
| Home Assistant Configuration | Integration setup in HA |
| Using the Integration | Entities and data formatting |
| Services Reference | All 8 available services with examples |
| Communication Flow | How data moves |
| Location Tracking & GPS | GPS and geofencing |
| Technical Details | MQTT topics, entity classification |
| Troubleshooting | Common issues and solutions |
| FAQ | Frequently asked questions |
The OVMS integration discovers and creates Home Assistant entities from MQTT topics published by your OVMS module. The integration automatically:
- Identifies vehicle data and creates appropriate entity types (sensors, binary sensors, device trackers, switches)
- Categorizes entities by data type (battery, climate, location, etc.)
- Maintains entity state based on real-time MQTT updates
- Processes data for comprehensive metrics including statistics
- Provides services to send commands to your vehicle
- Automatic Discovery: Detects all metrics published by your OVMS module without manual configuration
- Entity Creation: Creates appropriate Home Assistant entities based on data type with intelligent state parsing
- Smart Categorization: Organizes entities into logical groups (battery, climate, location, etc.)
- Real-time Updates: Entities update as new data is published through MQTT
- Command Interface: Send commands to your vehicle through services with proper rate limiting
- Vehicle Status: Track online/offline status of your vehicle automatically
- Secure Communication: Supports TLS/SSL connections to MQTT brokers with certificate verification
- Vehicle-Specific Metrics: Special support for VW e-UP!, Smart ForTwo, Nissan Leaf, Renault Twizy, and MG ZS-EV - with additional vehicle models planned
- Diagnostics Support: Provides detailed diagnostics for troubleshooting
- Flexible Topic Structure: Supports various MQTT topic structures including custom formats
- Multi-language Support: Includes translations for English, French, German, Spanish, and Swedish
- GPS Tracking: Advanced location tracking with accuracy estimation from signal quality
- Cell-level Battery Data: Processes and displays individual cell data with statistical analysis
- Command Rate Limiting: Prevents overwhelming the vehicle with too many commands
- Intelligent Attribute Enrichment: Automatically adds useful derived attributes to entities (battery level categorization, temperature comfort levels, etc.)
- Advanced Formatting: Intelligent formatting for duration values (minutes, hours, days) and timestamps
- Dynamic Topic Discovery: Sophisticated topic detection even with non-standard username patterns
- Combined Location Tracking: Automatically creates unified device tracker from separate latitude/longitude entities
- Tire Pressure: Keep track of your TPMS values
- Home Assistant (2025.2.5 or newer) according to HACS specification
- MQTT integration configured in Home Assistant
- MQTT broker supporting MQTT 3.1, 3.1.1, or 5.0 (client ID length limit: 23 characters for 3.1/3.1.1)
- OVMS module publishing to the same MQTT broker
- OVMS firmware 3.3.001 or newer required (edge firmware for fastest discovery)
- Python package: paho-mqtt>=1.6.1 (installed automatically)
| Version | Features |
|---|---|
| 3.3.001+ | Basic MQTT support |
| 3.3.003+ | GPS signal quality metric (v.p.gpssq) |
| 3.3.004+ | Improved stability |
| 3.3.005 | Current stable release |
| Edge | On-demand metric requests (faster setup) |
You can filter metrics at the OVMS side to reduce MQTT traffic:
# In OVMS shell - include only specific metrics
config set server.v3 metrics.include "v.b.*,v.c.*,v.p.*"
# Or exclude unwanted metrics
config set server.v3 metrics.exclude "v.e.*.log"
- If you have trouble with certain metrics not appearing, try the
server v3 update allcommand. Please see this section for more information. This command will update all of your metrics at once in the OVMS module, and in turn send the updated metrics over to the broker which is then picked up by the integration. - Some metrics may show as unavailable initially. This is normal until the vehicle provides data for these metrics.
- For best results, ensure your OVMS module firmware is updated to at least version 3.3.004 or higher.
Integration overview 1
Integration overview 2
The integration provides comprehensive analysis of cell-level battery data:
- Statistical Processing: Instead of creating dozens of individual sensors for each cell, the integration automatically calculates statistical measures (minimum, maximum, average, median) for cell voltages, temperatures, and health values
- Attribute-Based Storage: These statistics are stored as attributes on the main sensor, providing easy access while keeping your entities list clean
- Cell Deviation Tracking: The integration tracks and displays voltage and temperature deviations between cells, helping to identify potential battery pack issues
- Historical Tracking: Maximum deviation values are tracked over time to help identify battery degradation patterns
Example of cell statistics in entity attributes - these values are automatically calculated
Example of how the TPMS values are displayed
Compared to using the OVMS V2 server, this integration will use more data since it's using the V3 server over MQTT. If you are concerned about data usage, this integration might not be for you. Below are real-life cellular data usage from a car with both V2 and V3 OVMS server activated.
Specifications of the car in the example:
- While parked at home: WIFI
- While parked at work: 4G
- Traveled to work: 22 times
- Duration of travel to work: 40 minutes per trip
The grah above are showing the usage over one month.
-
In Home Assistant go to HACS -> Integrations. Click on "+ Explore & Download Repositories" and search for "OVMS Home Assistant".
-
In Home Assistant go to Settings -> Devices & Services -> Integrations. Click on "+ Add integration" and search for "OVMS".
- Download the repository as a ZIP file and extract it
- Copy the
custom_components/ovmsfolder to your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
Before using this integration, you need to configure your MQTT broker with the correct permissions:
The OVMS integration needs the following MQTT permissions:
Subscribe Permissions:
ovms/#- For all OVMS topics (replaceovmswith your chosen prefix if different)homeassistant/#- For testing connection during setup
Publish Permissions:
ovms/+/+/client/rr/command/#- For sending commands to the OVMS moduleovms/+/+/status- For publishing online/offline status
If you're using a broker with restrictive ACLs (like Mosquitto, EMQX, etc.), ensure your MQTT user has these permissions.
user ovms_user
topic read ovms/#
topic write ovms/+/+/client/rr/command/#
topic write ovms/+/+/status
When setting up your MQTT broker for OVMS:
- Use Strong Credentials: Create a dedicated user for OVMS with a strong password
- Apply Minimal Permissions: Follow the principle of least privilege with the ACL shown above
- Enable TLS/SSL: Use port 8883 with TLS encryption for all connections
- Certificate Verification: Enable certificate verification in production environments
- Network Segregation: If possible, keep your MQTT broker on a separate network segment
The integration supports secure connections with TLS, proper certificate validation, and username/password authentication to ensure your vehicle data remains protected.
Configure your OVMS module to publish data to your MQTT broker:
- In the OVMS web UI, go to Config → Server V3 (MQTT)
- Configure the following settings:
- Server: Your MQTT broker address
- Port:
- TCP Port: 1883 (mqtt://)
- WebSocket Port: 8083 (ws://)
- SSL/TLS Port: 8883 (mqtts://)
- Secure WebSocket Port: 8084 (wss://)
- Username/Password: If required by your broker
- Topic Prefix:
ovms(default, can be customized) - Enable Auto-Start: YES
- Go to Settings → Devices & Services → Add Integration
- Search for "OVMS" and select it
- Enter the MQTT broker details:
- MQTT Broker: Your broker address
- Port:
- TCP Port: 1883 (mqtt://)
- WebSocket Port: 8083 (ws://) - default
- SSL/TLS Port: 8883 (mqtts://)
- Secure WebSocket Port: 8084 (wss://)
- Username/Password: If required by your broker
- Configure topic structure:
- Topic Prefix: Should match your OVMS setting (default:
ovms) - MQTT Username: Username that OVMS uses in its topics
- Topic Prefix: Should match your OVMS setting (default:
- The integration will scan for available OVMS vehicles
- Select your vehicle ID when prompted
After initial setup, additional options can be configured via the integration options:
- Go to Settings → Devices & Services → OVMS → Configure
- Configure additional options:
- Topic Blacklist: A comma-separated list of topics to exclude from creating entities (e.g.,
.log,battery.log,power.log,gps.log) - Topic Structure: Choose or customize your topic structure format
- Quality of Service (QoS): Choose the MQTT QoS level (0, 1, or 2)
- Topic Blacklist: A comma-separated list of topics to exclude from creating entities (e.g.,
The Topic Blacklist feature is particularly useful to prevent high-frequency log topics from creating hundreds of unwanted entities. The integration comes with default filters for common log topics, but you may need to add additional patterns based on your specific OVMS module and vehicle.
Common patterns to blacklist:
.log- Blocks all log topics (matches any topic containing ".log")battery.log- Blocks battery log specific topicspower.log- Blocks power log specific topicsgps.log- Blocks GPS log specific topicsxrt.log- Blocks Renault Twizy specific log topics
For testing purposes, you can:
-
Enable debug logging by adding to your
configuration.yaml:logger: default: info logs: custom_components.ovms: debug
-
Monitor MQTT messages using an external tool like MQTT Explorer to verify what your OVMS is publishing
-
Check the Home Assistant logs for detailed information about discovered topics and created entities
⚠️ Warning: Debug logging produces substantial output. It may fill your disk if left enabled - don't forget to turn it off!
After setup, entities will be created for your vehicle metrics. These include:
- Battery: State of charge, range, power, voltage, etc.
- Climate: Temperature readings from various vehicle sensors
- Location: GPS position of the vehicle
- Status: Connection state, operational parameters
- Vehicle-specific: Other metrics specific to your vehicle model
Entities are grouped under a device representing your vehicle, identified by the vehicle ID.
The integration intelligently formats data to enhance usability:
- Duration Values: Time values are automatically formatted in the most appropriate units (minutes, hours, days) with both short form (5h 30m) and full text variants available as attributes
- Timestamps: Dates and times are displayed in a human-readable format
- Battery Levels: Battery entities include a "battery_level" attribute categorizing the state as low/medium/high
- Temperature Comfort: Temperature entities include a "temperature_level" attribute (freezing/cold/cool/comfortable/warm/hot)
- GPS Accuracy: Location entities automatically include accuracy estimates derived from GPS signal quality
The integration automatically detects your OVMS module's firmware version and displays it in the device info:
- The version is extracted from the MQTT messages
- Device info is updated in the Home Assistant device registry
- The integration recommends OVMS firmware 3.3.004 or higher for optimal operation
The integration provides several services to interact with your vehicle. All services now return responses that can be viewed in the Home Assistant UI or used in automations.
Starting with v1.5.1, all OVMS services return responses from your vehicle. This means you can:
- See responses in Developer Tools: When testing services, responses appear directly in the UI
- Use responses in automations: Capture command results using
response_variable - Debug commands easily: Immediately see if a command succeeded or failed
Example: The send_command service with metrics list showing the response panel
Example: Detailed response showing all available metrics from the vehicle
Example automation using service response:
automation:
- alias: "Check 12V battery status"
triggers:
- trigger: time
at: "08:00:00"
actions:
- action: ovms.aux_monitor
data:
vehicle_id: your_vehicle_id
action: status
response_variable: aux_status
- action: notify.mobile_app
data:
message: "12V Status: {{ aux_status }}"The integration provides 9 services for vehicle control and monitoring:
| Service | Description | Returns Response |
|---|---|---|
ovms.send_command |
Send any OVMS command | ✅ Yes |
ovms.set_feature |
Set OVMS configuration | ✅ Yes |
ovms.control_climate |
Control climate system | ✅ Yes |
ovms.control_charging |
Control charging | ✅ Yes |
ovms.homelink |
Trigger homelink buttons | ✅ Yes |
ovms.climate_schedule |
Manage climate schedules | ✅ Yes |
ovms.tpms_map |
TPMS sensor mapping | ✅ Yes |
ovms.aux_monitor |
12V battery monitoring | ✅ Yes |
ovms.refresh_metrics |
Request metrics refresh | ✅ Yes |
How commands work (MQTT protocol):
- Command is published to:
{prefix}/{username}/{vehicle_id}/client/rr/command/{command_id} - Response is received on:
{prefix}/{username}/{vehicle_id}/client/rr/response/{command_id} - Unique command IDs ensure responses are matched to requests
- Commands are rate limited to 5 per minute to prevent overwhelming the vehicle
Send any command to the OVMS module. This is the most flexible service - you can send any command your vehicle supports.
service: ovms.send_command
data:
vehicle_id: your_vehicle_id
command: stat
parameters: range
timeout: 10 # Optional timeout in seconds (default: 10, max: 60)Could be done as a button in HA:
show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: ovms.send_command
target: {}
data:
timeout: 10
vehicle_id: REG123
command: server v3 update all
entity: input_button.ovms_update_all
hold_action:
action: none
name: "REG123: update all"Example of how a command button could look like in the Lovelace UI
Here are some useful OVMS commands you can send through the send_command service:
| Command | Description | Example Parameters |
|---|---|---|
stat |
Get general vehicle status | range, charge |
server v3 update all |
Force update of all metrics | |
charge |
Control charging | start mode range, stop |
climate |
Control climate system | on temp 21, off |
lock |
Lock/unlock vehicle | on, off |
location |
Get current location | |
valet |
Control valet mode | on, off |
config list |
List configuration parameters | vehicle |
metrics list |
List available metrics | v.b.soc |
feature |
Toggle features | vehicle |
notify raise |
Trigger notification | alert.charge.stopped |
Set an OVMS configuration feature.
service: ovms.set_feature
data:
vehicle_id: your_vehicle_id
feature: feature_name
value: feature_valueControl the vehicle's climate system.
service: ovms.control_climate
data:
vehicle_id: your_vehicle_id
temperature: 21.5
hvac_mode: heat # Options: on, off, heat, cool, auto
duration: 30 # Duration in minutes (1-60)Parameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
temperature |
No | Target temperature (15-30°C) |
hvac_mode |
No | Mode: on, off, heat, cool, auto |
duration |
No | Duration in minutes (1-60) |
Control the vehicle's charging functions.
service: ovms.control_charging
data:
vehicle_id: your_vehicle_id
action: start # Options: start, stop, status
mode: range # Options: standard, storage, range, performance
limit: 80 # Percentage limit for chargingParameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
action |
Yes | Action: start, stop, status |
mode |
No | Mode: standard, storage, range, performance |
limit |
No | Charge limit percentage (1-100%) |
Activate a Homelink button on the OVMS module.
service: ovms.homelink
data:
vehicle_id: your_vehicle_id
button: 1 # Options: 1, 2, or 3Smart ForTwo-specific functionality: For Smart ForTwo vehicles, these buttons control climate functions:
- Button 1: 5 minute climate boost
- Button 2: 10 minute climate boost
- Button 3: 15 minute climate boost or 12V battery charging
This feature requires a battery State of Charge (SoC) greater than 30%.
Example Lovelace button configuration:
type: button
name: "5min Climate Boost"
icon: mdi:car-seat-heater
tap_action:
action: call-service
service: ovms.homelink
service_data:
vehicle_id: your_vehicle_id
button: 1Manage scheduled precondition times for the vehicle's climate system. Supports multiple times per day with individual durations.
# Set a schedule
service: ovms.climate_schedule
data:
vehicle_id: your_vehicle_id
action: set
day: mon
times: "07:30/10,17:45/15" # Format: HH:MM/duration_minutes
# List all schedules
service: ovms.climate_schedule
data:
vehicle_id: your_vehicle_id
action: list
# Copy schedule to other days
service: ovms.climate_schedule
data:
vehicle_id: your_vehicle_id
action: copy
day: mon
target_days: "tue-fri" # Supports ranges and listsParameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
action |
Yes | Action: set, list, clear, copy, enable, disable, status |
day |
For set/clear/copy | Day: mon, tue, wed, thu, fri, sat, sun, all |
times |
For set | Times: HH:MM/duration format, comma-separated |
target_days |
For copy | Target days: ranges like tue-fri or lists like sat,sun |
Manage TPMS sensor-to-wheel mapping for wheel rotation/swap scenarios.
# Show current mapping
service: ovms.tpms_map
data:
vehicle_id: your_vehicle_id
action: status
# Set new mapping after wheel rotation
service: ovms.tpms_map
data:
vehicle_id: your_vehicle_id
action: set
mapping: "fl=rr fr=fl rl=fr rr=rl"
# Reset to default
service: ovms.tpms_map
data:
vehicle_id: your_vehicle_id
action: resetParameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
action |
Yes | Action: status, get, set, reset |
mapping |
For set | Mapping using wheel positions: fl, fr, rl, rr |
Control the 12V auxiliary battery monitor for automatic shutdown/reboot based on voltage levels.
# Check status
service: ovms.aux_monitor
data:
vehicle_id: your_vehicle_id
action: status
# Enable with custom thresholds
service: ovms.aux_monitor
data:
vehicle_id: your_vehicle_id
action: enable
low_threshold: 11.5
charging_threshold: 14.0
# Disable monitoring
service: ovms.aux_monitor
data:
vehicle_id: your_vehicle_id
action: disableParameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
action |
Yes | Action: status, enable, disable |
low_threshold |
No | Low voltage threshold (10.0-14.0V) |
charging_threshold |
No | Charging voltage threshold (12.0-15.0V) |
Example response from status action:
low thresh=11.50
charge thresh=14.00
8s avg=15.58v
2s avg=15.59v
diff=0.01v
state=charging
Request a metrics refresh from the OVMS module. This service intelligently uses the best method based on your firmware version.
# Refresh all metrics
service: ovms.refresh_metrics
data:
vehicle_id: your_vehicle_id
# Refresh only battery metrics (edge firmware only)
service: ovms.refresh_metrics
data:
vehicle_id: your_vehicle_id
pattern: "v.b.*"
# Refresh position/GPS metrics (edge firmware only)
service: ovms.refresh_metrics
data:
vehicle_id: your_vehicle_id
pattern: "v.p.*"Parameters:
| Parameter | Required | Description |
|---|---|---|
vehicle_id |
Yes | Your vehicle ID |
pattern |
No | Metric pattern (default: * for all). Edge firmware supports patterns like v.b.*, v.p.*, v.c.* |
Firmware behavior:
| Firmware | Method | Pattern Support |
|---|---|---|
| Edge | Fast on-demand request | ✅ Yes |
| 3.3.005 and older | server v3 update all command |
❌ No (always refreshes all) |
Example response:
{
"success": true,
"method": "on-demand",
"pattern": "v.b.*",
"message": "Requested metrics with pattern 'v.b.*' (edge firmware)"
}The integration manages bidirectional communication between Home Assistant and your OVMS module:
- OVMS module publishes metrics to MQTT broker
- Integration subscribes to all topics under the configured prefix
- Messages are parsed to determine entity type and attributes
- Entities are created or updated with the incoming data
- Statistical processing is applied to relevant data (cell values, etc.)
- Attributes are enriched with additional contextual information
- Service call is received with command parameters
- Rate limiting is applied to prevent overwhelming the vehicle
- Command is published to the appropriate MQTT topic
- Integration subscribes to the corresponding response topic
- Response is received and returned to the caller
- Command state is updated based on the response
The integration implements mechanisms for connection management:
- Status Monitoring: Vehicle online/offline status is tracked
- Last Will and Testament: MQTT "LWT" messages detect unexpected disconnections
- Automatic Reconnection: Reconnection with exponential backoff (increasing delays between attempts)
- Connection Recovery: When connection is restored, subscriptions are re-established
- State Preservation: Entity states are preserved during connection interruptions
The integration provides comprehensive location tracking:
- Automatically creates a unified device tracker from separate latitude/longitude entities
- Maintains a single entity for location tracking that works with Home Assistant's map
- Updates latitude and longitude sensors when the tracker moves
- Calculates position accuracy based on GPS signal quality metrics
- Integrates HDOP (Horizontal Dilution of Precision) data when available
- Provides accuracy estimates in meters as an attribute
- Adjusts accuracy based on signal strength
Example of the combined device tracker with accuracy information
OVMS supports geofenced locations defined in your vehicle module (e.g., "home", "work"). When your vehicle enters or leaves a defined location, the v.p.location sensor updates to show the current location name.
Use state triggers on the v.p.location sensor:
automation:
- alias: "Car arrived home"
triggers:
- trigger: state
entity_id: sensor.ovms_v_p_location
to: "home"
actions:
- action: light.turn_on
target:
entity_id: light.garage
- alias: "Car left home"
triggers:
- trigger: state
entity_id: sensor.ovms_v_p_location
from: "home"
actions:
- action: notify.mobile_app
data:
message: "Your car has left home"In the OVMS web UI, go to Config → Locations and add locations with name, coordinates, and radius. Or use the shell command:
location set home 51.5074,-0.1278 100
If you want to use HA's zone triggers with the device tracker (instead of state triggers on the sensor), create matching zones in Home Assistant at Settings → Areas & Zones → Zones with the same coordinates as your OVMS locations.
Notification topics in Home Assistant are inherently transient, representing momentary events rather than persistent states. As a result, the associated sensors typically remain active for a limited period before transitioning to an unavailable status—this behavior is by design.
To maintain the state of notification topics and their corresponding sensors permanently, you can implement a template-based solution in Home Assistant. The following approach allows you to preserve the most recent state information:
template:
- sensor:
- name: "Preserved Notification State"
state: >
{% if is_state('sensor.original_notification_topic', 'unavailable') %}
{{ states('sensor.preserved_notification_state') }}
{% else %}
{{ states('sensor.original_notification_topic') }}
{% endif %}
availability: trueThis template creates a persistent sensor that:
- Retains the previous value when the original notification sensor becomes unavailable
- Updates with new information when the original notification sensor is active
- Remains continuously available regardless of the source sensor's status
When implementing this solution, you should:
- Replace
sensor.original_notification_topicwith the actual entity ID of your notification sensor - Consider adding appropriate attributes to preserve additional contextual information
- Potentially include timestamp information to track when the last valid notification occurred
This approach provides a robust mechanism for maintaining notification states beyond their typical lifecycle, enabling more consistent automation and reporting capabilities.
The integration supports these MQTT topic structures:
- Default:
ovms/username/vehicle_id/metric/... - Alternative:
ovms/client/vehicle_id/... - Simple:
ovms/vehicle_id/... - Custom: Define your own structure with placeholders
The integration implements sophisticated topic discovery:
- Wildcard Subscription: Uses MQTT wildcards to discover all relevant topics
- Pattern Recognition: Identifies topic structures even with different username patterns
- Vehicle ID Extraction: Automatically extracts vehicle IDs from discovered topics
- Structure Detection: Detects the actual topic structure being used by the OVMS module
- Adaptive Subscription: Subscribes to identified pattern for ongoing communication
This allows the integration to work even when the exact topic structure isn't known in advance.
The integration implements stable MQTT client ID management:
- Stable Client IDs: Generates unique, persistent client IDs based on broker host and vehicle ID
- Format:
ha_ovms_xxxxxxxxxxxx(20 characters total) - Compatibility: Works with all MQTT versions (3.1, 3.1.1, and 5.0)
- Collision Resistance: Uses SHA-256 hash with 281 trillion possible combinations
- Migration Support: Automatically migrates existing installations to stable client IDs
This ensures reliable MQTT connections and prevents authentication issues caused by rapidly changing client identifiers.
The integration uses pattern matching and metric definitions to determine entity types:
- Metrics with temperature data become temperature sensors
- Location data becomes device trackers
- Binary states (on/off, connected/disconnected) become binary sensors
- Numeric values become standard sensors
- Array data (like cell voltages) is processed with statistical analysis
The integration includes sophisticated data processing:
- Auto-detection of data types and units
- Extraction of statistics from array data (min, max, average, median)
- Conversion between different units based on user preferences
- JSON payload parsing for complex data structures
- GPS accuracy calculation from quality metrics
If your OVMS uses a non-standard topic structure, you can define a custom pattern during setup using these placeholders:
{prefix}: The base MQTT topic prefix{mqtt_username}: The username portion of the topic{vehicle_id}: The vehicle identifier
Here's an example card configuration for a vehicle dashboard:
type: vertical-stack
cards:
- type: entities
title: Vehicle Status
entities:
- entity: sensor.ovms_v_b_soc
name: Battery
- entity: sensor.ovms_v_b_range_est
name: Range
- entity: sensor.ovms_v_c_charging
name: Charging
- entity: sensor.ovms_v_p_odometer
name: Odometer
- type: map
entities:
- entity: device_tracker.ovms_locationThe OVMS integration follows these development principles:
- Modular Architecture: Separation of concerns with dedicated modules for specific functions
- Comprehensive Logging: Detailed logging for troubleshooting at various levels
- Consistent Formatting: Code formatted with Black and checked with Pylint
- Automated Testing: CI/CD pipeline with GitHub Actions for validation
- Release Management: Structured release process with semantic versioning
- Documentation: Extensive inline documentation and comments
This integration undergoes regular validation through:
- HACS compatibility checking
- Hassfest validation for Home Assistant standards
- Python code validation and linting
- Version checking and dependency management
⚠️ Warning: Debug logging produces substantial output. It may fill your disk if left enabled!
To enable debug logging, add to your configuration.yaml:
logger:
default: info
logs:
custom_components.ovms: debug| Pattern | Meaning |
|---|---|
Topic discovery completed |
Successful MQTT topic scanning |
Adding sensor/binary_sensor/device_tracker |
Entity creation |
MQTT connection test completed |
Broker connection results |
Command response for... |
Command execution results |
- Check if your OVMS module is publishing to the MQTT broker
- Verify the topic structure matches what's configured in the integration
- Enable debug logging and check for errors in the Home Assistant logs
- Ensure your MQTT broker allows wildcard subscriptions (#)
- Verify ACL permissions in your MQTT broker for the topics listed above
- Verify MQTT broker credentials are correct
- Check if TLS/SSL settings match between OVMS, Home Assistant, and the broker
- Test connection using an external MQTT client
- Check firewall rules if using different networks
- Ensure the OVMS module is online
- Check if the command syntax is correct for your vehicle
- Verify MQTT QoS settings allow reliable message delivery
- Look for command responses in the logs
- Check if the OVMS module is still publishing data for that metric
- Verify the topic hasn't changed
- Try sending
server v3 update allcommand to refresh all metrics - Check if there are any error messages in the logs
Q: Can I use multiple vehicles with this integration?
A: Yes, you can set up multiple instances of the integration, one for each vehicle.
Q: Does this work with all OVMS-supported vehicles?
A: Yes, the integration is vehicle-agnostic and works with any vehicle supported by OVMS. Vehicle-specific enhancements are provided for some models like VW e-UP!, Smart ForTwo, Nissan Leaf, Renault Twizy and MG ZS-EV.
Q: Can I use this without internet access?
A: Yes, as long as your OVMS module, MQTT broker, and Home Assistant can communicate on the same network.
Q: How frequent are the updates?
A: Updates happen in real-time as the OVMS module publishes new data, typically every few seconds while the vehicle is active.
Q: How does the integration handle connectivity issues?
A: The integration includes automatic reconnection with exponential backoff, online/offline status tracking, and will resume normal operation when connection is restored.
Q: Is my data secure?
A: Yes, the integration supports TLS/SSL encryption for MQTT connections and follows secure coding practices for handling sensitive data.
Q: What happens if I lose connection to my vehicle?
A: The integration maintains the last known state of all entities and marks the vehicle as offline. When connection is restored, all entity states are updated with the latest data.
Q: How can I see detailed information about cell voltages and temperatures?
A: This data is stored in entity attributes for the main battery sensors. Look at the attributes of your battery voltage and temperature entities to see detailed statistics.
Q: Does the integration create separate sensors for each battery cell?
A: No, by default the integration calculates statistics (min, max, average, median) for cell data and stores these as attributes on a single sensor. This prevents cluttering your entities list with dozens of individual cell sensors.
Contributions to the OVMS Home Assistant integration are welcome! Whether it's bug reports, feature requests, documentation improvements, or code contributions.
To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Please ensure your code follows the existing style conventions and includes appropriate tests and documentation.
MIT License - see LICENSE file








