Hi everyone,
I’d like to share my Connect IQ project for Tesla and get feedback from other Garmin developers.
The project consists of two parts:
- an app for commands and detailed vehicle status;
- a watch face for showing key Tesla status directly on the main watch screen.
On the server side, it uses Tesla Fleet API for commands and Fleet Telemetry to get fresher vehicle status while reducing unnecessary wake-up requests.
What is already implemented in the app:
- battery level, charge limit, charging status, and remaining charging time;
- lock/unlock, sentry, and climate states;
- the wake up command;
- climate controls: climate on/off, set temperature, keeper mode;
- charging controls: charge limit, stop charging, open charge port;
- frunk/trunk, flash lights, as well as media and volume controls.
What the watch face shows:
- key Tesla states directly on the main watch screen;
- battery, vehicle state, climate, and other important metrics without opening the app.
For Garmin-side testing, there is also a separate demo mode.
To activate demo mode, you need to register at wristla.com and enter the code "promo_demo" during registration.
It uses simulated Tesla data and simulated command responses, so the app and watch face can be tested without connecting to a real vehicle.
In this mode:
- a demo Tesla is added automatically;
- the portal and paired Garmin devices show simulated vehicle data;
- commands sent from Garmin devices are handled as immediate successful test responses;
- real Tesla account linking, virtual key setup, telemetry setup, Tesla data refresh, and Tesla removal are disabled.
This mode is intended only for Garmin app/watch face testing and demo scenarios.
I’d especially appreciate feedback on:
- UI readability across different Garmin screens;
- whether the split between app and watch face makes sense;
- which Tesla actions are actually useful on the watch;
- behavior across different device families.
One practical limitation I ran into with Connect IQ is the lack of shared local storage between products from the same developer. The app may already have fresh data in its own sandbox, but it cannot pass that data to the watch face. As a result, the watch face has to wait at least 5 minutes for its background refresh to run, even though the data is already available locally on the watch. For an app + watch face setup, this feels like a noticeable platform limitation.