I'm adding basic VIN decoding of the 0902 message in Kia_Soul_EV_VIN_data.csv:
Code:
005_BaseTrim, Base Trim, 0902, ABS(val{005_PlusTrim} - 1), 0, 1, , 7E2
005_PlusTrim, Plus Trim, 0902, {F:3}, 0, 1, , 7E2
005_SequentialNumber, Seq No, 0902, ((M - 48) * 100000) + ((N - 48) * 10000) + ((O - 48) * 1000) + ((P - 48) *100) + ((Q - 48) * 10) + (R - 48), 0, 999999, , 7E2
005_Year, Year, 0902, K+1945, 2014, 2035, , 7E2
Example VIN 1 (mine, 2016 with sunroof): KNDJX3AEXG7004683
Example VIN 2 (from the web, base model); KNDJP3AE0F7003847
Base Trim and Plus Trim
I used the names as seen in the US, here we call them Base and Luxury. What about in our part of the world?
Trim is identified by the 5th letter, either X (luxury) or P (base).
P = 0x50
X = 0x58
Since Torque don't have an == operator, I identify the Plus model by checking the 4th bit status.
Since Torque don't have an ! operator, I use simple math to generate the logical negation.
(Note; Base model is actually untested but should work).
Sequential number
It is the last 6 digits of the VIN. Since it's actually ASCII numbers, I have to convert them to decimal.
Year
Year is the 10th character. F = 2015, G=2016, H=2017 and so on.
Other stuff (for documentation)
Text cannot be rendered in Torque directly, but here's the other meanings of the digits:
KNDJX3AEXG7004683 = World Manufacturer Identifier (WMI -- KND=Kia, can also be KNC and KNH, but not on Soul EV so far)
KND
JX3AEXG7004683 = Vehicle line (3 = Soul -- which is product code PS and PSEV)
KNDJX
3AEXG7004683 = Body/Cabin type, Gross vehicle weight rating
KNDJX3
AEXG7004683 = Restraint system, brake system
KNDJX3A
EXG7004683 = Motor type (Electric)
KNDJX3AE
XG7004683 = Check digit
KNDJX3AEXG
7004683 = Production plant (7=Gwangju)
Screenshot
Those information have no real use in the dashboard. However, they may be useful for the plugin, to choose the right OBC file for example!
Jeju : this is added to my last pull request!