1. How Car 2 Home works
Car 2 Home reads data from your vehicle through a small adapter that plugs into the OBD-II port, the same port a mechanic uses for diagnostics. The adapter talks to your phone wirelessly over Bluetooth or Wi-Fi, the app interprets what your ECU says, and from there everything else flows: the live dashboard, the trip history, the smart-home integration.
The OBD-II port has been mandatory on virtually every gasoline car sold in the US since 1996, in the EU since 2001 (2004 for diesel), and on most modern vehicles in other markets. So the first thing you need is a good wireless ELM327 adapter.
Choosing the right adapter matters more than people think, the market is full of cheap clones that look identical on the outside but behave very differently on the inside. We wrote a separate guide that explains exactly what to look for.
Read the OBD adapters guide →2. Getting started: first run
First-time setup takes a few minutes and is mostly about giving the app the permissions it needs to do its job in the background, while you're actually driving.
Register your vehicle
On first launch the app asks you to add a vehicle. This isn't a formality, the brand and model determine which manufacturer-specific (enhanced) sensors are available, which calculated metrics make sense for your engine, and how trip history, driving score and parking are tied together. If you have more than one car in the household, add each one and switch between them; everything is kept separate.
Connect to the OBD adapter
Plug the adapter into the OBD-II port (usually under the steering wheel) and turn the key to ignition. Either way, open Car 2 Home and use the connection screen to discover and select the adapter. What changes by adapter type is what you need to do beforehand: Bluetooth LE: just select and tap the device in the list; Classic Bluetooth (<4.0): select and pair the adapter from the connection screen. Classic Bluetooth only works on iOS with MFi certification (Made For iPhone); Wi-Fi: connect the phone to the adapter's own Wi-Fi network before opening the app.
Grant the right permissions, and understand why
The app will ask for a few permissions. Each of them maps to a feature you almost certainly want to use:
- Location, set to "Always Allow". This is the most important one. Car 2 Home needs background location to record trip routes, detect when a trip ends, save your parking spot with a real address, and trigger geofence-based events for your smart home ("I'm pulling into the driveway"). Without "Always Allow", the OS suspends location whenever you leave the app, which on a phone in your pocket while driving is essentially always.
- Bluetooth. Required to discover and connect to the adapter.
- Notifications. Used to keep the app running in the background with the screen off during a trip, plus connection status and event alerts.
- Background activity vs. battery saver (Android). Many Android phones, Samsung, Xiaomi, Huawei in particular, kill background apps aggressively. Disable battery optimization for Car 2 Home so the OS doesn't drop the connection mid-trip.
Make the app open automatically when you drive
This is the trick that turns Car 2 Home from "a thing I open" into "a thing that just works". You want the app to launch every time you connect to the car, so telemetry and events are captured on every drive without you remembering to tap an icon.
On iOS
Use the Shortcuts app. Create a Personal Automation → "When Bluetooth connects to [your car]" → action "Open App" → Car 2 Home. Repeat for CarPlay if your car supports it ("When CarPlay connects"). Make sure to disable "Ask Before Running" so the automation runs silently.
On Android
Use the Routines / Modes feature in your launcher (Samsung Modes and Routines, Google Pixel Routines, or Tasker for power users). Trigger: "Bluetooth device connected = [your car]" or "Android Auto connected". Action: "Launch app: Car 2 Home".
From this point on, every drive is recorded, live data, trip history, driving score, smart-home events, without you doing anything.
3. Exporting telemetry and events to Home Assistant
Home Assistant is where Car 2 Home really shines. We ship a native integration (installed via HACS) that goes beyond exposing sensors, your car publishes events on the Home Assistant event bus, so your automations can react to discrete moments like "a trip just started" or "a new fault code appeared".
Setup takes about a minute:
- Install Car 2 Home from HACS, restart Home Assistant.
- Settings → Devices & Services → Add Integration → "Car 2 Home". If your phone is on the same network and the app is open, Zeroconf discovery will offer to set it up automatically.
- Enter the 6-digit code that appears in the app and you're done.
Pick a sync mode based on whether your Home Assistant is reachable while you drive. Online mode streams telemetry in real time (1–4 Hz), best when you have a tunnel like Nabu Casa, Tailscale or Cloudflare Tunnel set up. Home mode buffers everything while you're away and flushes the moment your phone joins WiFi at home, perfect if you'd rather not keep an external tunnel running.
What you get: a device per vehicle, dozens of entities (standard sensors, enhanced PIDs, calculated metrics, GPS, TPMS, driving score, diagnostic state), and the four event types that make automations interesting: car2home_trip_started, car2home_trip_ended, car2home_dtc_found, car2home_harsh_event. Plus car2home_ecu_online / car2home_ecu_offline for connection lifecycle.
4. Exporting via MQTT
If you already run an MQTT broker, Mosquitto, EMQX, HiveMQ, or you want telemetry to flow into other tools alongside Home Assistant (Node-RED, openHAB, ioBroker, Grafana), use the MQTT integration. Car 2 Home publishes the same sensors with full Home Assistant MQTT auto-discovery, so they show up automatically in any subscriber that understands that format.
Setup is just three fields: host, port, credentials. Optional TLS if your broker requires it. The app validates the connection and shows status live.
Important difference vs. the native integration
The MQTT path carries continuous state: every sensor value, updated as it changes. It does not carry events. trip_started, trip_ended, dtc_found, harsh_event only exist on the Home Assistant event bus through the native integration. If those moments are what you want to automate against, use the native integration (or use both, they're complementary).
5. Example automations
A few ideas, written as user stories. Each of them is a concrete Home Assistant or Node-RED flow you can build on top of the events and sensors above.
Low fuel warning
When the car's fuel level drops below 30%, send a push notification to your phone when you leave home, or an Alexa announcement when you're at home, so you remember to refuel before the next trip.
Welcome home
When car2home_trip_ended fires and the parking location is within 100 m of home, open the garage door, turn on the porch and entryway lights, and disarm the alarm. If it's after sunset, also turn on the kitchen lights at 30%.
Family check-in
When a trip ends, send a Telegram message to the family group with the format "Maria parked at Rua da Consolação 1234 after a 22-minute trip". Include a static map image and a link to open the location in Google Maps.
Maintenance heads-up
When car2home_dtc_found fires, log the code, description and severity to a Home Assistant input_text, send a notification to your phone, and, if the severity is high, send an email with the freeze frame attached.
Pre-condition the house
When car2home_trip_started fires and the start location is at your office and it's a weekday after 5pm, set the home thermostat to your evening preset and start the kettle's pre-heat sequence. By the time you get home, the house is the right temperature and the water's ready.
All of these become Lovelace cards or Node-RED flows that take a few minutes each to build, once the events are flowing.
6. Custom sensors with expressions and accumulators
Car 2 Home includes a small expression engine that lets you create new sensors derived from existing ones. The engine supports the obvious arithmetic and comparisons (+ - * / % ==), boolean operators, bitwise operators, and a library of math functions (min, max, abs, sqrt, round, etc.). Sensors can reference each other by id, so as soon as RPM updates, anything derived from it updates too.
The interesting capability is the accumulator: a stateful operator that maintains a rolling window over a base sensor. You can ask for "average fuel rate over the last 50 km", "maximum RPM in the last 30 seconds", or "distance covered since the engine started". The window can be measured in time, in distance, in samples, or by a custom condition.
Worked example: rolling 50 km fuel economy
Suppose you want a sensor that shows your fuel consumption averaged over the last 50 km of driving, useful for ignoring noise from a single hill or traffic light. You'd combine an instantaneous Fuel Rate sensor (L/h) with a Speed sensor (km/h) into a derived L/100km value, then wrap that in an accumulator with a 50 km rolling window. The result is a sensor that responds slowly enough to be meaningful and quickly enough to react when your driving style changes.
Common patterns: rolling fuel economy at multiple horizons (10/50/100 km), wheel horsepower derived from RPM and torque, distance-since-last-event counters, time-since-engine-on, harsh-event tallies. Once you have a custom sensor defined, you can put it on any dashboard widget and, if MQTT or the Home Assistant integration is on, it gets published just like a stock sensor.
7. Driving Style: Safe Score and Eco Score
Every trip is graded on two axes. Safe Score reflects how aggressively you drove, hard accelerations, hard brakings, hard cornering events, sustained high speeds. Eco Score reflects how efficiently you drove, average fuel rate, time spent in the engine's economical RPM band, idle time, anticipation of stops, smoothness of throttle input.
Both scores update live during a trip and are summarised at the end with a per-trip breakdown of every event that affected them. The monthly history view shows your trend over time and lets you compare current performance against past weeks.
Driving more safely
- Look further ahead. Most hard-braking events come from reacting late to traffic lights or stopping vehicles. The earlier you start to slow, the gentler the brake.
- Take turns at speeds that don't trigger the cornering threshold. The cornering metric is sensitive, if it's flagging you regularly, you're cornering hard enough that a passenger would feel it.
- Watch the harsh-acceleration counter. Aggressive starts double fuel use over the first 100 m and contribute to brake and tyre wear far more than steady acceleration.
Driving more economically
- Anticipate stops. Lift off the throttle early and let engine braking and momentum carry you to the stop instead of riding the brake.
- Keep RPM in the engine's sweet spot, for most modern petrol engines, 1500–2500 RPM in a steady cruise. The Eco Score rewards time spent there.
- Reduce idle. Long idles (waiting in the car, drive-throughs) are pure waste; the score reflects this.
- Smoothness wins. Two trips covering the same route at the same average speed can have wildly different fuel use depending on how steady the throttle was. The Eco Score is largely a smoothness score.
Used together over a few weeks, the two scores are a fairly honest mirror of how you drive. They're more useful as a trend line than as a daily verdict, what you want to see is the monthly average climbing.
8. Beyond the basics
A handful of features that don't fit neatly above but are worth knowing about:
- Acceleration tests: measure 0–100 km/h, 100–200 km/h, quarter-mile, etc. Results are saved with conditions (gradient, GPS lock quality) so you can compare runs honestly.
- Freeze frame: when a fault code is set, the ECU snapshots the sensor values at that moment. The app reads and stores the snapshot alongside the DTC, which is often more useful for diagnosis than the code itself.
- Tunnel estimation (IMU dead reckoning): when GPS drops (tunnels, parking garages), the app uses the phone's accelerometer and gyroscope to estimate position so the trip route stays continuous.
- Adaptive polling: sensors are queried at different rates based on priority. RPM and speed at high frequency, fuel level at low. Statics like VIN are queried once per session. The app figures this out automatically; you can override per-sensor if you want.
- Custom dashboards: six widget types (gauge, semi-gauge, sparkline, bar, horizontal bar, multi-series line). Build one per use case: track-day, road-trip, daily commute. Each widget can show any sensor.
- Multi-language and unit systems: six languages (EN, PT, ES, FR, DE, IT). Metric, Imperial US and Imperial UK with one-tap switching.