Your all-in-one, web-based toolkit for viewing TeslaCam clips, estimating charging time, calculating phantom drain, and more.
This app is a single, self-contained HTML file that runs entirely in your browser for maximum privacy and portability.
- Multi-Camera Viewer: Simultaneously view clips from all available cameras (Front, Back, Left/Right Repeaters, Left/Right Pillars) in a synchronized grid.
- Seamless Event Playback: Automatically groups 1-minute video files into a single, continuous event timeline and plays them back seamlessly without manual intervention.
- Interactive Playback Controls: Full playback controls including play/pause, a master scrubber, 5-second skips, and variable playback speed (0.25x to 4x).
- Single-View Zoom: Double-click any camera feed to expand it to full view. Double-click again to return to the grid layout.
- Camera Toggling: Customize your view by toggling individual camera feeds on or off.
- Jump to Event: If a Sentry or Dashcam event is detected, a button appears to jump directly to the moment of the trigger within the timeline.
- In-App Map Viewer: If an event contains GPS data, click the "Event Map" button to see the location on an embedded Google Map without leaving the page.
- Enhanced Screenshots: Capture a high-quality composite image of all visible camera feeds with a single click.
- Charging Time Estimator: Calculate how long a charging session will take based on your vehicle's battery capacity, current/target State of Charge (SoC), and charger type (including custom inputs).
- Phantom Drain Estimator:
- Time to Drain: Estimate how long your battery will last while parked by setting a target drain percentage.
- Percentage Lost: Calculate the expected battery percentage loss over a specific date and time range.
- Refined Calculations: Both drain modes can be refined with inputs for battery health, outside temperature, and active auxiliary features (Sentry Mode, Summon Standby, etc.).
- Light & Dark Modes: A sleek, modern interface with automatic theme detection and manual toggling.
- Fully Responsive & Keyboard Accessible: Works beautifully on desktop, tablet, and mobile browsers, with full keyboard shortcuts for core playback functions.
- Privacy Focused: No data ever leaves your computer. All file processing and calculations happen locally in your browser.
Try a live version of Tesla Companion hosted on GitHub Pages:
👉 https://jleshnick.github.io/TeslaCompanion/
- Get Your Clips: Plug your Tesla's USB drive into your computer.
- Launch the App: Open the
index.html
file in a modern web browser (Chrome, Firefox, Edge recommended). - Load Clips:
- Navigate to the Camera Viewer tab.
- Click the "Select Directory" button.
- Choose the main
TeslaCam
folder from your drive. The app will automatically find and sort all event folders.
- View Events: Use the event dropdown menu or the previous/next navigation buttons to switch between recordings.
Key | Action |
---|---|
Spacebar | Play / Pause |
Left Arrow | Rewind 5 seconds |
Right Arrow | Forward 5 seconds |
Up Arrow | Go to the previous event |
Down Arrow | Go to the next event |
Escape | Exit fullscreen view or close the map |
The event.json
file references cameras by a number. Mapping:
Index | Camera View |
---|---|
0 | Front |
3 | Left Pillar |
4 | Right Pillar |
5 | Left Repeater |
6 | Right Repeater |
7 | Back |
The reason
field in the event.json
file indicates what triggered the recording. Here are common and community-reported reasons:
Reason Code | Description |
---|---|
sentry_aware_object_detection |
Sentry Mode detected an object or movement nearby. |
sentry_enter_aware_object_detection |
Sentry Mode detected something entering the vicinity. |
sentry_exit_aware_object_detection |
Sentry Mode detected something leaving the vicinity. |
sentry_locked_handle_pulled |
Someone pulled a door handle while the car was locked (Sentry Mode). |
sentry_alert_raised |
Sentry escalated from monitoring to alert state. |
sentry_lock_down |
Severe alert like a break-in or triggered alarm. |
user_interaction_dashcam_icon_tapped |
Dashcam recording manually triggered by tapping the icon. |
user_interaction_manual_save |
Dashcam recording manually saved via user interaction (non-icon, e.g. screen). |
user_interaction_honk |
Dashcam recording triggered by honking the horn. |
- HTML5 – Core structure
- CSS3 – Modern styling with theming support via custom properties
- Vanilla JavaScript (ES6+) – Logic, video handling, and DOM manipulation
- Google Fonts – For the Inter typeface
- Feather Icons – For simple, clean UI icons
- 📷 Camera Viewer
- Core camera viewer functionality based on Lythinari's TeslaCamViewer.
- Enhanced UI, additional tools, and numerous refinements by Joshua Leshnick.
This project is licensed under the MIT License.
See the LICENSE file for full details.