Difference between revisions of "Help with Server FAQ"

From Wiki Knowledge Base | Teltonika GPS
 
(16 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Here are some tips for solving the most common issues setting up Server.
+
This page is dedicated to quickly find most commonly faced issues or questions when trying to create an IoT data platform which supports Teltonika Telematics devices.  
  
=='''Topic 1'''==
+
=='''Pre-Requisites for server implementation'''==
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
|<strong>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?</strong>
+
|<strong>What are the pre-requisites for deploying devices on my server?</strong>
 
|-
 
|-
|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]
+
|To develop the platform, below are the requirements:
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
+
{| class="wikitable"
# 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.
+
|+
 +
!Requirement
 +
!Comment
 +
|-
 +
|Hardware  
 +
|A high CPU count promotes better cloud tiering throughout because although object storage can be slow in I/O operations per thread, object storage can support many threads. Any standard x86 64-bit servers can be ideally used.
 +
|-
 +
|Memory Requirements
 +
|Cloud services demand a large amount of memory, which is why the minimum recommended memory size is 8GB.
 +
|-
 +
|Hard disk
 +
|For a medium-sized (up to a 1000 devices) server, 300GB RAID1 disks can be recommended.
 +
|-
 +
|Database
 +
|A database is required to store the records/messages incoming from multiple devices.
 +
Further, this data must be assigned to its appropriate device ( recognized by IMEI ). MySQL can be used for the database.
 +
|-
 +
|Security
 +
|Teltonika devices support TLS Encryption which can be implemented.  
 +
[[How to generate TLS certificates (Windows)?]]
 +
|-
 +
|Programming Skills
 +
|Knowledge about programming language is a must. Teltonika Telematics is a hardware production company, we do not provide software programming services and cannot help with writing code for the server. Only consult on the logic and algorithms of device features and possible issues in data interpretation from the server side.
 +
|-
 +
|Hardware Knowledge
 +
|It can be found on our Teltonika WIKI: https://wiki.teltonika-gps.com/view/Main_Page
 +
To understand the devices, their use cases and how they send data.
 +
|-
 +
|Protocol Implementation
 +
|Teltonika Telematics device protocols need to be implemented for the server to understand and parse the received data correctly.
 +
[[Teltonika Data Sending Protocols]]
 +
|-
 +
|Socket Programming
 +
|Sockets and the socket API are used to send messages across a network. For Teltonika devices to make connection to your server, the server needs to have an application socket programmed to accept these connection request.
 +
'''Note:'''
 +
 
 +
Each socket should be dedicated to one device, this will allow the server to differentiate the devices when more than 1 device is sending data at the same time.
 +
|-
 +
|Network Considerations
 +
|Cloud storage supports storing cold data on a public cloud object storage service,such as Amazon S3. When using a public cloud, the connection is over a WAN.
 +
|-
 +
|Bandwidth Requirements
 +
|Bandwidth speed requirements are based on the amount of data transfer per month. It can be calculated using some online tools such as: https://www.calculator.net/bandwidth-calculator.html.
 +
|-
 +
|IP Address Requirements
 +
|Static IP or a dedicated port and domain is required otherwise device configuration would need to be updated constantly with a new IP or a new Port.  
 +
|-
 +
|}
 +
 
 
|}
 
|}
  
=='''Topic 2'''==
 
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
|<strong>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?</strong>
+
|<strong>How to open ports in my computer for virtual testing?</strong>
 
|-
 
|-
|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]
+
|
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
+
The step by step instructions to open a TCP/UDP port can be found here: https://wiki.teltonika-gps.com/view/Opening_TCP/UDP_port
# 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.
 
 
|}
 
|}
  
=='''Topic 3'''==
 
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
|<strong>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?</strong>
+
|<strong>What ports should i use to keep connection with the server?</strong>
 
|-
 
|-
|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]
+
|
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
+
Any Non-reserved ports on the server side, which are not being blocked and used by server's firewall and services respectively.
# 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.
 
 
|}
 
|}
  
=='''Topic 4'''==
+
=='''Documentation'''==
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
|<strong>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?</strong>
+
|<strong>Does Teltonika offer any homologation or server implementation documents which we can use to see how the data is sent, received, and parsed?</strong>
 
|-
 
|-
|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]
+
|Regarding the documents/sources, here's what we offer:
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
+
# The wiki link on data sending protocols: https://wiki.teltonika-gps.com/view/Teltonika_Data_Sending_Protocols
# 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.
+
# The parsing toolkit containing the TCP/UDP Listener, source code and other related documents. It can be downloaded from here: https://wiki.teltonika-gps.com/view/Universal_Device_Test_Guide#Protocols_implementation
 
|}
 
|}
  
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>What are the supported Network Protocols for Teltonika devices which I need to implement on my server</strong>
 +
|-
 +
|Currently, the Teltonika devices works with 03 different protocols for Data Sending; TCP, UDP, and MQTT. Please keep a note that MQTT is supported only via AWS server or a custom server which should be implemented based on the AWS protocols. More information on MQTT ( based on AWS ) can be found here: https://wiki.teltonika-gps.com/view/Getting_Started_with_AWS_IoT_Core.
 +
|}
  
=='''Topic 5'''==
 
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
|<strong>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?</strong>
+
|<strong>Is there any ID/Value available corresponding to the paramters that Teltonika devices offer? </strong>
 
|-
 
|-
|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]
+
|Yes, there are several parameters that you can get from our devices and the AVL IDs corresponding to each one of them can be found here: https://wiki.teltonika-gps.com/view/FMM130_Teltonika_Data_Sending_Parameters_ID.
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
 
# 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.
 
 
|}
 
|}
  
 +
=='''Communication with server'''==
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>How does device communicate with the server?
 +
</strong>
 +
|-
 +
|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.
  
{| class="wikitable"
+
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.
|+
+
|}
  
!QUESTION
+
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
!ANSWER
+
|<strong>How to setup records sorting from protocols Codec? </strong>
 
|-
 
|-
|'''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?'''
+
|Records can be sorted by using timestamp as a record sorting method, as it allows us to know what record was received early.
|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]
+
|}
  
# 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: [[Fleet Management platforms|https://wiki.teltonika-gps.com/view/Fleet_Management_platforms]]
+
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
# 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.
+
|<strong>How to setup the answer to the Codec protocols in C#, Java, C++ from the server side, while counting records?</strong>
 
|-
 
|-
|'''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.'''
+
|You can write script in your preferred language ( C#, JAVA or Python ) which can extract the number of records received from device and send it as a ACK packet to 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.
+
|}
 +
 
 +
=='''Troubleshooting Data'''==
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>How to know if the device is sending the data to server or not? And how to know if the server is accepting the data from device or not?
 +
</strong>
 
|-
 
|-
|'''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: [[Teltonika Data Sending Protocols|https://wiki.teltonika-gps.com/view/Teltonika_Data_Sending_Protocols]]
+
#We can always check the Device Status->GSM info page on the Teltonika Configurator. If device' GPRS status is "Activated" and  Sent Records count is above zero and the Sent Records count is increasing that means device is sending data to the server. Thereafter, the server has to accept the data and send back response.
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: [[FMB920 Teltonika Data Sending Parameters ID|https://wiki.teltonika-gps.com/view/FMB920_Teltonika_Data_Sending_Parameters_ID]]
+
#If the server has the Codec 8 protocol integerated properly, it will send the response in HEX as number of records received by server. On Teltonika Configurator under Status->GSM info, we can check the "Received Data", Socket and Last server Response time to confirm when was the last connection happened with server and its response hour.
 +
|}
 +
 
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>How to make multiple session separation from the server side from different devices?</strong>
 
|-
 
|-
|'''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?'''
+
|Multiple devices can be separated by recognizing the IMEIs of the devices on the server side. The very first step by the device is to send the IMEI on the server and server receives IMEI and sends ACK packet back to the module. All the modules have different IMEI which can be used as a point of differenciation.
|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 (<nowiki>https://www.canyouseeme.org</nowiki>), port checker (<nowiki>https://portchecker.co/</nowiki>) and others. If you’re unable to open ports, you can use external tools such as ngrok (<nowiki>https://ngrok.com/</nowiki>) to virtually route the ports.
+
|}
 +
 
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>How can we know if the acknowledgment is required on the server or not? Can we change this setting?</strong>
 
|-
 
|-
|'''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?'''
+
|Acknowledgment is made depending upon the "Record Settings":
|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).  
+
#If ACK Type, TCP/IP is selected then Server Acknowledgement is not required
For example, IMEI <code>356307042441013</code> would be sent as <code>000F333536333037303432343431303133</code>.
+
#If ACK Type, AVL is selected then the Server must respond with the Acknowledgement.
First two bytes denote IMEI length. In this case <code>0x000F</code> 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 <code>01</code>, if not - <code>00</code>. Note that confirmation should be sent as binary packet. I.e. 1 byte <code>0x01</code> or <code>0x00</code>.
+
=='''Common Mistakes'''==
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).
+
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
If sent data number and reported by server doesn’t match module resends sent data.
+
|<strong>I am getting the error on the server side saying"Protocol Mismatch". What could possible be wrong in this case?</strong>
 
|-
 
|-
|'''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?'''
+
|This is because of mismatch in the selection of Network Protocol on the device and server side. It is possible that on the Device, TCP is selected and on the server side its UDP or vice-versa. Since the structure for both the protocols is different, this mismatch can restrict establishing a connection on the server.
|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:
+
=='''Communication over GPRS '''==
 +
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
 +
|<strong>How can my device communicate over GPRS messages?</strong>
 +
|-
 +
|We have few CODEC protocols supporting GPRS communication: Codec 12,13,14,15. However the functionality basics remains the same and is explained below for Codec 12.
 +
#First, the Teltonika device opens the GPRS session and sends AVL data to the server (refer to device protocols).
 +
#Once all records are sent and the correct sent data array acknowledgment is received by the device then GPRS commands in Hex can be sent to the device.
 +
#The ACK (acknowledgment of IMEI from server) is a one-byte constant 0x01. The acknowledgment of each data array sent from the device is four bytes integer – a number of received records.
 +
Detailed information on the protocol can be found here: https://wiki.teltonika-gps.com/view/Teltonika_Data_Sending_Protocols#Codec_12
 +
|}
  
1)    RAW with 01 record:
+
=='''RAW Data Example'''==
 
+
{| class="wikitable mw-collapsible mw-collapsed" role="presentation"
Received data in the hexadecimal stream:
+
|<strong>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?</strong>
 
 
<code>000000000000003608010000016B40D8EA30010000000000000000000000000000000</code>
 
 
 
<code>105021503010101425E0F01F10000601A014E0000000000000000010000C7CF</code>
 
 
 
As the Number of Data 1 and 2 shows the value 1, the server should respond:
 
 
 
<code>00000001</code>
 
 
 
2)    RAW with 02 records
 
 
 
Received data in the hexadecimal stream:
 
 
 
<code>000000000000004308020000016B40D57B48010000000000000000000000000000000</code>
 
 
 
<code>1010101000000000000016B40D5C198010000000000000000000000000000000 101010101000000020000252C</code>
 
 
 
As the Number of Data 1 and 2 shows the value 2, the server should respond:
 
 
 
<code>00000002</code>
 
 
|-
 
|-
|'''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?'''
+
|Here's an example of the Data Received in the HEX Format and how to parse 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:  [[Universal Device Test Guide#Protocols%20implementation|https://wiki.teltonika-gps.com/view/Universal_Device_Test_Guide#Protocols_implementation]]
+
Received data in the hexadecimal stream:
|-
+
000000000000003608010000016B40D8EA30010000000000000000000000000000000105021503010101425E0F01F10000601A014E0000000000000000010000C7CF.
|'''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.
+
The detailed parsing can be found in the wiki page, under the category Communication with server: https://wiki.teltonika-gps.com/view/Teltonika_Data_Sending_Protocols#Codec_8
 
|}
 
|}

Latest revision as of 10:03, 14 February 2024

This page is dedicated to quickly find most commonly faced issues or questions when trying to create an IoT data platform which supports Teltonika Telematics devices.

Pre-Requisites for server implementation

Documentation

Communication with server

Troubleshooting Data

Common Mistakes

Communication over GPRS

RAW Data Example