Documentation link?
Yes, both from Teltonika's own wiki:
The frame in the PR (Creating it now) is from an FTC880 and carries external voltage only on ID 800, so KEY_POWER is currently never set for these devices.
Documentation links are in the PR I just opened: https://github.com/traccar/traccar/pull/6016
Summary:
The PR registers ID 800 as KEY_POWER for all models (it does not exist on the FMB table, so no collision) and adds a real FTC880 test frame — network identifiers and odometer zeroed, CRC recomputed — asserting KEY_POWER == 12.873. Verified with ./gradlew checkstyle test --tests '*TeltonikaProtocolDecoderTest' on Temurin JDK 25.
I've expanded this PR to cover the FT platform more completely, since the same
gap affects more than just voltage. It now also decodes battery level, sleep
mode, battery current and the towing / jamming / idling / unplug / auto-geofence
alarms for FT devices — all IDs that the "AVL ID differences between FMB and FT
platforms" page confirms are unchanged between platforms. External voltage (800)
is included here too, so this supersedes the voltage-only version. Accident (247)
is intentionally left out, as it does not exist on FT.
Teltonika FT platform: external voltage (AVL 800) is never decoded
TeltonikaProtocolDecoderreads external voltage from AVL ID 66, registered forevery model:
register(66, any, (p, b) -> p.set(Position.KEY_POWER, b.readUnsignedShort() / 1000.0));The newer FT platform (FTC880, TFT100…) does not use ID 66. Per Teltonika's
own documentation, FT and TFT100 devices accept 10–90 V, which does not fit
the two-byte range of ID 66, so external voltage was moved to ID 800, four
bytes, in millivolts.
ID 800 is not registered anywhere in the decoder, so it lands as a generic
io800attribute andPosition.KEY_POWERis never set for these devices.Frame from an FTC880 on 6.15.3, Codec 8E, single record. No GPS fix; network
identifiers and odometer zeroed and the CRC recomputed:
Decoded IO element:
239 = 0,240 = 067 = 4052,68 = 0800 = 12873Resulting attributes:
{"io800":12873,"battery":4.052,…}— nopower.The consequence is that
poweris absent across the whole FT family, solow-voltage alarms, power-cut logic, charging state and voltage reports are all
blind there.
ID 800 does not appear in the FMB parameter table, so registering it for all
models cannot collide:
register(800, any, (p, b) -> p.set(Position.KEY_POWER, b.readUnsignedInt() / 1000.0));Related: AVL 68 (battery current) is registered for
fmbXXXonly, but it is apermanent element on FT as well.
Thank you!!!