konapod

Hyundai Bluelink AU — Flutter App

Flutter Dart

GitHub GitHub License Flutter Version Last Updated GitHub commit activity (dev) GitHub Issues

KonaPod is a tool to collect your Hyundai vehicle data together in one secure and private place. You can selectively share any parts of your data with others. The app itself presents the data and analyses of the data. It is being developed by Togaware and pair programmed by Graham Williams and Claude Code.

We make this project available for free so if you appreciate the app then please show some ❤️ and tap on the star at GitHub to support our work.

The latest version of the app can be run online at konapod.solidcommunity.au with no installation required though requiring a Bluelink login, or downloaded and installed for your platform from the Solid Community AU repository:

Installation details are available for all platforms.

Contributions are welcome. Visit github to submit an issue or, even better, fork the repository yourself, update the code, and submit a Pull Request. The app is implemented in Flutter using solidui. Thanks.


Introduction

A Flutter app to view your Hyundai Bluelink vehicle data (currently for Australia / NZ but please send in PRs for other regions).


Features


🔌🚗 Showcase 🌳🌞

Under settings you can specify your username, password and pin to access your Bluelink account. This is necessary to be able to use this app. Currently only AU/NZ are supported but we welcome pull requests to extend to other jurisdications.

Login Screen - Here you can connect to your historic data you have stored securely and privately on your Solid Pod.

Login Screen

Changelog Screen - Tap the Version string to get the latest changes for the app.

Change Log

Status Page - The basic home page reports some of the key information of interest to the driver.

Status Page

Status Page - Here we see some doors are open as well as the boot.

Status Page Unlocked with Open Doors

Energy Page - The status of the battery and other energy related statistics are presented here.

Energy Page

Energy Page while Charging - Here we see a charger is plugged in and the vehicle is charging at 2.2kW (plugged into the normal home 240V supply) with 9 hours and 40 minutes to go to 100%. Currently at 75% charge and 333km range.

Energy Page while Charging

Energy Page Plugged In - The plugged status remains Plugged In and and the Charging status disapers after charging has reached its set target (100% here though recommended up to 80% day-to-day as set with the Target SOC) and so the vehicle is no longer charging.

Energy Page while Plugged In But Not Charging

Visuals Page - Here we explore visually some of the vehicle performace stats. The tooltip shows on this particular day the car regenerated about half of the used power through braking, using iPedal that day.

Visuals Page

Stats Page - Various statistics about your vehicle’s performance.

Stats Page

History Page - This data is stored securely and privately on your Solid Pod. Tap the down arrow to load any dataset into the app as the analysed/displayed dataset (replacing the data downloaded from your vehicle).

History Page


Setup to Build for Yourself

Prerequisites

Install

git clone git@github.com:gjwgit/konapod.git
cd konapod
flutter pub get
flutter run

⚠️ Important Notes

Unofficial API

The Bluelink Australia API is not officially published by Hyundai. This app uses endpoints reverse-engineered by the community:

bluelink --region Australia --brand Hyundai \
         --username FOO --password BAR --pin 1234 \
         info --json infos.json

Timezone Issue

Note that the API returns a “driving date” as a string like “20260403”, and the code uses strptime() to create a naive datetime at midnight with no timezone info. The Bluelink server aggregates daily statistics by UTC day boundaries. So driving done before 11am AEDT or 10am AEST (= midnight UTC) on April 4th, for example, gets bucketed into April 3rd’s stats, and the date label says 20260403. This as a known Bluelink API limitation. The root cause is server-side and not something the client library can fully fix.

Stamp Mechanism

Hyundai’s AU API requires a rotating “stamp” header. This app fetches stamps from the community stamp server: https://raw.githubusercontent.com/neoPix/bluelinky-stamps/master/hyundai-{appId}.v2.json

If the stamp server is unavailable, some API calls may fail.

Rate Limits

Avoid refreshing too frequently — over-polling can drain your car’s 12V battery. The app uses cached status (latest known state) by default, which is safe. Force-refresh directly queries the car’s modem.

Android Network Config

Add to android/app/src/main/AndroidManifest.xml inside <application>:

android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"

And create android/app/src/main/res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">au-apigw.ccs.hyundai.com.au</domain>
    </domain-config>
</network-security-config>

iOS

Add to ios/Runner/Info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>