Nissan’s App#
Nissan’s official NissanConnect® EV & Services iPhone app:
lets you manage the unique features of your LEAF like charging the battery, adjusting climate controls and checking the battery status, all from your mobile device
Here is a screenshot of what it looks like for my car:
The app is…fine. Here is one representative review from the Apple App Store:
My main issue with the app is that it lacks a home screen widget I could use to quickly check my car’s battery status, unlike apps for other electric car brands like Rivian, Ford, and Lucid.
Third-Party Apps#
Meanwhile, others have developed their own Nissan LEAF apps with a custom user interface and additional features (some with a home screen widget!):
Unfortunately, I understand that none of these apps are still available to use where I live in North America. 😞
The developer of “My Leaf” shared his frustration in a blog post, explaining how Nissan’s deliberate changes to their North American API forced him to discontinue support for users in the region:
I simply won’t support it any longer because of Nissan of North America’s persistant work on blocking third party clients. I continued to try and support the API during the last 12 months. Playing cat and mouse with Nissan. I simply don’t have the time and honestly the drive to continue when I know Nissan are consistently trying to break third party clients on purpose. It’s a sad and foolishness reality indeed.
Project Goals#
Nevertheless, I decided to take on the challenge of developing an iPhone home screen widget that could show me the battery charge status of my Nissan LEAF car.
I added one more constraint to the project: no spending money. I believe Nissan’s app should already provide a home screen widget, so it didn’t seem fair to have to spend any money on this project. However, using tools/devices I already had access to was fair game.
Notably, that ruled out using something like Sidecar which appears to provide a home screen widget. I think it looks very slick, but it requires the purchase of a wireless On-board Diagnostics (OBD) scanner plus a $6.99 USD/month subscription. 😓
It also ruled out using the popular LeafSpyPro app which similarly requires the purchase of a wireless OBD scanner and costs $19.99 USD. To my knowledge, it doesn’t provide a home screen widget itself, but I think you could probably develop one using its data syncing feature.
Results#
I am happy to report I was successful and spent no money! Here is a screenshot of the widget:
And if you tap the widget, it opens the NissanConnect app. You’ll notice in the following video that there are a few extra non-ideal screen transitions (more on that below), but hey, you get what you pay for!
How it Works#
To reduce the risk of any API-breaking changes, I’m just using the official NissanConnect app without any modifications:
- I created a GitHub repo containing a GitHub Action that:
- uses
apkeep
to download the NissanConnect app - uses Appium to:
- install and launch the app on an Android device connected to the host via the Android Debugger (ADB)
- automate tapping through the app’s screen to sign into the app using provided account credentials
- scrape and output the text of the vehicle’s status after it refreshes
kevincon/nissan-connect-scraper
GitHub Action that scrapes the NissanConnect® Android app for info about a Nissan LEAF vehicle.
- uses
- I created a separate GitHub repo containing a GitHub Actions workflow scheduled to run a job multiple times throughout the day that:
- uses Tailscale to ephemerally connect the job
14 Comments
MBCook
Ford will flat out lock your account so even the official app won’t work for you if they notice you using a 3rd party app.
light_hue_1
I wish that US car manufacturers would finally realize that they're software companies with a hardware device, and pivot accordingly.
The differentiating factor between car models is not the hardware in the world of EVs. It's the software. And right now, if you aren't either on Tesla, Rivian, or Polestar the software experience is horrific.
liamwire
I love the commitment to getting this to work at no cost, on principle. Many of my favourite personal projects have followed similar paths, and have often been fun challenges for that reason alone. Great article, thanks for sharing.
STELLANOVA
Great work! I love commitment to make it at no cost as @liamwire mentioned. Still not sure why on Earth car manufacturers would not just release APIs open to all owners (basically issue API key based on VIN) and let them use it. For developers to build apps that will only require API key to be entered would be win/win for everyone….
63
That's pretty cool! It's extremely frustrating that they go through so much effort to block third party apps, but the solution of just downloading and emulating the android app is simoultaneously very clever and very straightforward. A nice reminder not to overthink simple things. Cheers on a project well done!
magicalhippo
Had a 2017 LEAF, and could never get that app working.
Like once in a while it would show correct status, or sometimes it would start heating.
But mostly it just lied. Like I could stand next to the car, issue the heating command, wait a minute, force it to check the car's status and it would tell me the car was heating while nothing had changed with the car.
So yea, gave up on the app, didn't use it the last years I owned it.
That said, enjoyed the writeup, looks like a nice project and as a bonus I learned about some new tools.
vincekerrazzi
I had the same situation with my Polestar app up until recently. My solution was perhaps fewer moving parts? Worked well for nearly a year before I didn’t need it anymore.
-my backup phone connected to my NAS, running a signed in polestar app
– a homebridge plugin that called a shell script that used adb to unlock the phone, open the app, grab the screen contents and parse it.
Boom, lock and battery status in homebridge and access to dozens of other tools for creating widgets and shortcuts.
featherless
Oh hey that's my startup's app, Sidecar, mentioned! Cool to see :D
jdminhbg
Nobody wants to hear it in 2025 but this is one of the reasons Tesla is still a much better experience than most of the legacy car manufacturers. Car People like to think of apps as a weird Tech People affectation, but in actual day-to-day usage, they're invaluable.
bihan
who use nissan leaf's?
aprilthird2021
Cool! I like that it just works ™ and is a lot more resilient to the hostile first party than other approaches.
How often does the scraping of the app running on the RaspPi run and how much is the lag between that job running and the data appearing on your phone?
wizerno
Does anyone else miss the functionality of the Android WhatsApp widget [1] on iOS? Being able to read messages without sending read receipts via the widget is a great feature. The iOS notification 'peek' is a clumsy substitute.
Is this a fundamental limitation of iOS widgets/APIs, or just something WhatsApp hasn't implemented? Curious if others have found better ways to handle this on iPhone.
[1] https://www.tomsguide.com/how-to/how-to-use-the-WhatsApp-wid…
djaychela
Just like OBD, I think api access to data like this should be open to the car user. If the manufacturer is taking the data ( as they do with my renault zoe) then it should be available to the end user at a standard API which is available across all manufacturers, so if you change car you can just point your setup at a new endpoint with new credentials and all the endpoints and responses are standard, just like OBD2 is
(yes I know manufacturer tools go deeper but that's another issue)
mxmilkiib
I love the modern GitHub Actions composition process the project uses
I've seen Actions that create a usable Arch etc repos where other software that has been build can be listed
What's the most creative set-up using a number of Actions that anyone has seen? On GitHub or elsewhere
P.S. Could that computational paradigm somehow be extended to a Yahoo! Pipes form of visual [data]flow? For some kind of personal orchestrations