Teltonika TAT140 asset tracker

25.12.2023

I got my hands on this device a while ago. Device is build by Teltonika, a company from Lithuania with wide range of IoT devices, routers etc.

In this review, we are going to:

  • Have a look at hardware
  • Built simple backend for receiving, storing and displaying the tracking data

Device is meant to be used to give world wide coverage for tracking of high value assets, such as vehicles, goods or similar. Device can be simply attched with zip ties.

Dimensions are: 78 x 63 x 28 mm, weight 115 grams. Operating temperature is limited by battery, but device itself can handle -20 .. +60 °C. Casing is IP68 rated.

Device has Lithium Thionyl Chloride (Li-SOCI2) battery, 7.2V and 2200mAh. It is non-rechargeable, but can be swapped. Estimated battery life is 3 years (with many affecting factors such as signal strenght, position update rate etc.)

Under the battery, device has XTR xt26g01c SPI NAND FLASH -chip (128MB). Here. Also micro USB-port is mount this side of the board.

It has Quectel EG915U series communication module that is optimized for M2M and IoT applications. Here.

Main features are:

  • 4G LTE Cat 1 /GSM/GPRS is supported with 10 Mbps downlink and 5 Mpbs uplink.
  • GNSS: GPS, GLONASS, GALILEO, BEIDOU
  • Accelerometer, bluetooth, can be programmed to handle different tracking scenarios (periodic tracking, stop/on move).
  • All this is configured through Teltonika configurator software.

Configuration of module

Accessing the setting is done through Teltonika configurator. Our case, we want to enter our backend server address and correct port.

Teltonika has good support through their Wiki pages (https://wiki.teltonika-gps.com/view/TAT140). Data protocol is Codec8 / Codec8 extended. Here.

Data frame is 152 bytes long. Module sends IMEI code (text as hex -format) to server and then server must reply 1/0 to accept/refuse the connection. Before IMEI there is 2 byte identifying number (IMEI lenght)

Back end

My cloud server is currently running Influx database and Grafana so it offers good infrastructure to build on. Also tools are quite familiar.

I decided to use python to extract to the data from codec 8 -protocol. With simple function, data is extracted from AVL -data. Python script is called receiver.py.

After this data is stored to InfluxDB with timestamp, location, speed -variables.

Data is succesfully stored in InfluxDB. (location data decimals removed)

After this, Python receiver software is made to run background as a service. It automatically restarts on every reboot.

Create script:

sudo nano /etc/systemd/system/receiver.service:

[Unit]
Description=Receiver

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /root/receive.py

[Install]
WantedBy=multi-user.target

After editing the service, we need to enable it.

sudo systemctl enable receiver
sudo systemctl start receiver

and then check the status:
sudo systemctl status receiver

Service runs OK. We can move forward for visualization.

Visualizing data

Visualizing data with Grafana. Grafana has Geomap plugin, so you only need to configure is correctly.

Defining data source for visualization.

Geomap with black background. Difficult to read, but data is visible.

Changing to OpenStreetMap map layer offers better visibility.

Like always, this was educational project. It took me roughly 20 hours to figure all the parts out. Since I was only working in evenings, it took me 2 weeks to get here.

Future ideas

  • Store device IMEI to database (enables filtering of multiple asset trackers, not needed at the moment)
  • Creating custom firmware for TAT140 (with MQTT -support).