Hyundai Kona / Ionic EV

Hi Malte, it seems good intervals , to have multimedia system connect and updated about traffic, also to see battery monitor, but at now I not see my Kona EV sms , any news for ev update ?
It’s important to us monitor charging and status of battery as we can see also yet in EV notify

1 Like

hi, i will test you config soon. thank’s.
Please tell me if you do any change :slight_smile:

I was more thinking to find a trigger from the EV that the Autopi now the car is on.
Now it is power down after a little while when drive ,
I think you say before that autopi trigger from RPM on a combustion engine so thats problem for EV?

1 Like

Ask to me Jorgeli? I not understand subject

1 Like

@jorgeli @plord and other
You can find the pids there ;).
Enjoy !
It is from ev notify :smile:

import eventBus from './../modules/event.vue'; import storage from './../modules/storage.vue'; export default { data() { return { initCMD: [ 'ATD', 'ATZ', 'ATE0', 'ATL0', 'ATS0', 'ATH1', 'ATSTFF', 'ATFE', 'ATSP6', 'ATCRA7EC' ], offset: 0, inStandbyMode: false, emptyResponses: 0, command: '220105' }; }, methods: { init() { var self = this; // listener to wakeup after standby mode eventBus.$off('wakeup'); eventBus.$on('wakeup', () => self.inStandbyMode = false); // unsubscribe from prior existing listener bluetoothSerial.unsubscribe(); // subscribe to data bluetoothSerial.subscribe('>', data => { if (self.inStandbyMode) return; // remove spaces data = data.trim().replace(/\s/g, ''); console.log({ data }); // send debug data to backend if debug mode enabled if (DEBUG) + 'debug', { data, akey: storage.getValue('akey') }); // error and empty response detection to start re-initialization // TODO: we need to find out the error detection and empty responses for KONA EV if (data.indexOf('CANERROR') !== -1 || data.indexOf('UNABLETOCONNECT') !== -1 || data.indexOf('BUFFERFULL') !== -1) { // there was an error - reset offset, to start with first command afterwards self.offset = -1; self.emptyResponses = 0; // emit obd2 error eventBus.$emit('obd2Error', data); } if (self.offset + 1 === self.initCMD.length) { // init of dongle finished, parse data and just send the OBD2 command eventBus.$emit('obd2Data', self.parseData(data)); // toggle between commands each time self.command = ((self.command === '220105') ? '220101' : '220105'); if (data.indexOf('NODATA') !== -1) bluetoothSerial.write('ATPC\r'); else { setTimeout(() => bluetoothSerial.write(self.command + '\r'), 2000); } } else bluetoothSerial.write(self.initCMD[++self.offset] + '\r'); }, err => console.error(err)); // initialize the dongle by sending the first command bluetoothSerial.write(self.initCMD[self.offset] + '\r'); }, parseData(data) { var self = this, parsedData = {}, baseData = self.getBaseData(); try { if (self.command === '220105') { var fourthBlock = '7EC24', fifthBlock = '7EC25', extractedFourthBlock = data.substring(data.indexOf(fourthBlock), data.indexOf(fifthBlock)), extractedFourthData = extractedFourthBlock.replace(fourthBlock, ''), sixthBlock = '7EC26', extractedFifthBlock = data.substring(data.indexOf(fifthBlock), data.indexOf(sixthBlock)), extractedFifthData = extractedFifthBlock.replace(fifthBlock, ''); if (extractedFourthData && extractedFifthData) { parsedData = { SOC_DISPLAY: parseInt( extractedFifthData.substr(0, 2), 16 ) / 2, // first byte within 5th block SOH: (( parseInt( extractedFourthData.slice(2, 4), 16 // second byte within 4th block ) << 8) + parseInt( extractedFourthData.slice(4, 6), 16 // third byte within 4th block ) ) / 10 }; } } else if (self.command === '220101') { var firstBlock = '7EC21', secondBlock = '7EC22', extractedFirstBlock = data.substring(data.indexOf(firstBlock), data.indexOf(secondBlock)), extractedFirstData = extractedFirstBlock.replace(firstBlock, ''), thirdBlock = '7EC23', extractedSecondBlock = data.substring(data.indexOf(secondBlock), data.indexOf(thirdBlock)), extractedSecondData = extractedSecondBlock.replace(secondBlock, ''), chargingByte = extractedSecondData.slice(0, 2), notChargingIndicators = ['00', '01', '02', '03', '05', '07'], rapidPortIndicators = ['FB', 'FD', 'FE'], normalPortIndicators = ['FF'], fourthBlock = '7EC24', fifthBlock = '7EC25', extractedFourthBlock = data.substring(data.indexOf(fourthBlock), data.indexOf(fifthBlock)), extractedFourthData = extractedFourthBlock.replace(fourthBlock, ''); if (extractedFirstData && extractedSecondData && extractedFourthData) { parsedData = { SOC_BMS: parseInt( extractedFirstData.slice(2, 4), 16 ) / 2, // second byte within 1st block DC_BATTERY_VOLTAGE: (( parseInt( extractedSecondData.slice(4, 6), 16 // third byte within 2nd block ) < parsedData[key] = baseData[key]); console.log({ parsedData }); return parsedData; }, getBaseData() { return { CAPACITY: 64, SLOW_SPEED: 2.3, NORMAL_SPEED: 4.6, FAST_SPEED: 50 }; }, standbyMode() { var self = this; self.inStandbyMode = true; // unsubscribe, and emit low power mode command bluetoothSerial.unsubscribe(); bluetoothSerial.write('ATLP\r', () => { eventBus.$emit('standby'); }, err => eventBus.$emit('standby', err)); } } } Enjoy !!!

How can I use this ?

1 Like

i think, we should do same as @plord :sweat_smile:
he find this pids:
Pids: 220 101 / I think with block 7EC21 and 7EC22 and 7EC23 and 7EC24 and 7EC25
and I found on evnotify app this pids:
Pids: 220 105 / I think with block 7EC24 and 7EC25 and 7EC26

So maybe put like he had do it, but, at this time, we can’t put 3 digit number. only 2 and second line 3. we need 3 and and 3 so, we need to write
for exemple …
so we need an update to put 3 digit, and also widget…
they work on it ( team) :sunny:
but, it will work only like that ?
how about block ?
I don’t know
My job is print news paper , not informaticien, lol…
so I try to understand …
if someone know how to do… you are welcome :wink:



1 Like

I don’t think the autopi cloud is really ready yet. We’ll need something like :

  • Allow mode 220 in OBD logger
  • Add a more general purpose decoder/converter ( eg allow Torque pro style calculations )
  • Add publishing a variable to OBD logger
  • Add using this custom variable in a widget
  • Add a button widget that can do a playback ( eg press to remotely pre-heat car ) or run a custom code
  • Probably more EV features ( stay on when charging springs to mind )
  • Some simple end-to-end example of using custom PID ( from OBD logger to graphing )

So personally, I’m not spending much time with Autopi until its a bit further along.


Hi all,

Just wanted to let you know that this is something we are actively working on.

The OBD logger section is currently mostly aimed at conventional vehicles. But we will implement some of the features listed by @plord, plus a lot of cool new features for you EV’s. My guestimate is that we will have something ready for you during January, hopefully already for the next release.

Happy New Year to you all.



@Peter :star_struck: Thank’s a lot’s !! :sunglasses:
And happy new year autopi team ! And all other :sunny:

1 Like

Thanks a lot !
Consider if you can do good bases for Hyundai Kona and Ioniq, every client in these years … until next generation (>2y) buy Autopi …
Therefore … go go go … we can help if we ve tools to do … as @plord says

Happy new year guys ! Hope this project Jump !


As say @plord I’m wait how help, but we need right tools !


1 Like

Many thanks :slight_smile: Happy new year as well !


About widget button for preaheating or active function …
I don’t know if is possible to operate on car heating function or other … I think it’s unique read function no ?

I think’s so too
Maybe only read fonction

Peter please consider a customization for settings panel about power.
At now my autopi every 3 min wake up , this is good for use on recharging of Kona or monitoring when it is off, but when it’s on , is useful use hotspot to give all working traffic and other functions to nav, but must be set a “always on” ( when car is on and in use)
Do you can add it please ? (is useful option for user with hotspot wifi services )

1 Like

Hi @asetyde,

The power settings can already be customized. You do that under settings->dongles->advanced->power:


The issue with your EV cars is that the device usually stays awake during a trip by checking for RPM on the CAN bus. This is not possible on EV’s and we are currently working on an alternative solution for you.

More on that subject soon.



Ok , now I understand it ! Thanks very much
Do you ve a Kona or Ioniq to do test ? If necessary you can use my autopi to do test, remotely … ask if need !


Hi @asetyde

Thank you for the offer. We will open a new thread where you can help us test the EV setup. This will be done when the sofware is released. I’ll link to it in this thread when its ready.



Hi Peter,

That’s great news.