Help with Server FAQ

From Wiki Knowledge Base | Teltonika GPS

Here are some tips for solving the most common issues setting up Server.

Firmware

I want to receive the data generated by the Teltonika device, does Teltonika have any server or service for this purpose? In case not, Are there any recommendations on how to proceed to receive the data?
As we are a Hardware manufacturer we don’t count on a server or service that you can use to see the data generated by your device. So we can offer different solutions for you to reach your goals. [SP1]
  1. You can use an existing Fleet Management platform, a Telematics API Platform, or a Cloud Computing platform. There are a lot of options, but you can find a list with some of the compatible platforms/services here: https://wiki.teltonika-gps.com/view/Fleet_Management_platforms
  2. You can develop your platform to receive and parse the data generated by the device. To develop your platform you should have some knowledge about programming and networks.
QUESTION ANSWER
I want to receive the data generated by the Teltonika device, does Teltonika have any server or service for this purpose? In case not, Are there any recommendations on how to proceed to receive the data? As we are a Hardware manufacturer we don’t count on a server or service that you can use to see the data generated by your device. So we can offer different solutions for you to reach your goals. [SP1]
  1. You can use an existing Fleet Management platform, a Telematics API Platform, or a Cloud Computing platform. There are a lot of options, but you can find a list with some of the compatible platforms/services here: https://wiki.teltonika-gps.com/view/Fleet_Management_platforms
  2. You can develop your platform to receive and parse the data generated by the device. To develop your platform you should have some knowledge about programming and networks.
I want to develop a Vehicle Tracking System using your GPS Tracker. So, my question is what are the required knowledge/skills to set up my server for sending/receiving data to the Teltonika tracker? I am confused about how to set up my server to send and receive the data from the device. To develop your platform first you must be aware of some sort of information/tech skills, such as device Data Sending Protocols, device data sending parameters, basic concepts of network communications, such as communication protocols, open and test IP and ports and how to parse the data received using source codes or the provide protocols.
Where can I find a simple and understandable description of the data sent from the device to the server, along with an explanation? I need to understand what the server sees, how it is written, and what the specific values mean. In the link below you can find a full explanation of the Teltonika protocols with details about Codec 8 and Codec 8 extended protocols, used for data sending, and Codec 12 for sending GPRS commands: https://wiki.teltonika-gps.com/view/Teltonika_Data_Sending_Protocols

Each device I/O parameter has its unique ID, which is called AVL ID. If you want to decode the data easily you can try to use the device Data Sending Parameters ID page to learn about the AVL parameters and how to decode it: https://wiki.teltonika-gps.com/view/FMB920_Teltonika_Data_Sending_Parameters_ID

I want to create my own program to listen to what the device sends, what are the network protocols used by the Teltonika devices? What I need to configure on my PC to receive the data? How should I know it’s working as expected? Currently, the Teltonika devices works with 03 different protocols for Data Sending; TCP, UDP, and MQTT. You can open a TCP or a UDP port on your PC to receive the data sent by your device. You can make sure that the port is open using external websites like canyouseeme (https://www.canyouseeme.org), port checker (https://portchecker.co/) and others. If you’re unable to open ports, you can use external tools such as ngrok (https://ngrok.com/) to virtually route the ports.
After creating my server, I started to receive the same message from the device for multiple times. Should I respond to it? If yes, whats the format of the response? First, when module connects to server, module sends its IMEI. First comes short identifying number of bytes written and then goes IMEI as text (bytes).

For example, IMEI 356307042441013 would be sent as 000F333536333037303432343431303133. First two bytes denote IMEI length. In this case 0x000F means, that IMEI is 15 bytes long.

After receiving IMEI, server should determine if it would accept data from this module. If yes, server will reply to module 01, if not - 00. Note that confirmation should be sent as binary packet. I.e. 1 byte 0x01 or 0x00. Then module starts to send first AVL data packet. After server receives packet and parses it, server must report to module number of data received as integer (four bytes). If sent data number and reported by server doesn’t match module resends sent data.

I have done the IMEI acknowledgment part by sending 01 to the device upon reception of IMEI. Now, having a bit of difficulty in sending the number of data packets received on the server from the FMX device. What exactly should I do to properly respond to the device? After receiving the AVL packet from the device you should respond with the number of records is in the packet, which is present in the payload and presented as Number of Data 1 and/ or Number of Data 2.

Below we have a couple of examples of packets send using the Codec8 and TCP protocols with the proper response:

1)    RAW with 01 record:

Received data in the hexadecimal stream:

000000000000003608010000016B40D8EA30010000000000000000000000000000000

105021503010101425E0F01F10000601A014E0000000000000000010000C7CF

As the Number of Data 1 and 2 shows the value 1, the server should respond:

00000001

2)    RAW with 02 records

Received data in the hexadecimal stream:

000000000000004308020000016B40D57B48010000000000000000000000000000000

1010101000000000000016B40D5C198010000000000000000000000000000000 101010101000000020000252C

As the Number of Data 1 and 2 shows the value 2, the server should respond:

00000002

I tried to implement my server but I couldn’t create a tool to listen to the data sent by the device. Does Teltonika have any tools to help in receiving the packets? And to parse the data received? If yes, where I can find it? Yes, Teltonika has a TCP and UDP listeners that makes part of the Teltonika Parser Pack. In the Parser Pack you can also find the Teltonika Parser to decode the data received by the listeners. You can find the download link of the parser pack here:  https://wiki.teltonika-gps.com/view/Universal_Device_Test_Guide#Protocols_implementation
I’m using the Parser tools to decode the records sent by the device to my server but the Parser says “ Corrupted Data Inserted”. What should I’m doing wrong? First, be sure that you're trying to decode using the proper protocol. I mean, if you configured the device to send messages using UDP to your server you must select UDP in the Parser, if you set the device to send the records using the TCP Protocol you must select the TCP in Parser.
After implement my own server I started to receive a packet with multiple records, how can I know which record was generated first? When you receive a packet with multiple records in the same Data Packet you can use the Timestamp to know when the record was generated.
I need to parse the data received on my end. Do you have any piece of code or examples that you can provide that I can use to develop my parser? The Teltonika parser pack also counts with a folder with the source code(we used C# to develop our tolls) that could be used as a template for developing your server, and can help implement protocols[SP1] .
[SP1]There should be question and answer regarding what needs to be evaluated first before starting to develop server

Answer:

Hardware specifications and network specifications should depend on how many devices client wants to support on his platform + future scaling and also what is the use case. For example, live tracking needs a quick network as well as fast processing of data.