Never Alone, Always Safe
Programadores

API de integração

Queres integrar a tua app ou dispositivo com a nossa plataforma? Controlo de waypoints, STOPS, SPEED, regularidade e API de integração.

A. Uso de WP em eventos

Como controlar os STOPs, a velocidade em zonas de velocidade controlada, a passagem por WP de controlo, WP para eventos de regularidade e WP diversos.

1. Controlo de paragem nos STOPS

Para controlar que os pilotos fazem STOPs de pelo menos 1 segundo nos pontos desejados basta inserir no GPX anexado para a verificação da prova uns WP com a seguinte estrutura.

STOPX

O nome do WP deve ser STOP em maiúsculas seguido do número do STOP.

Exemplo:

STOP1 , STOP56 , etc.

2. Controlo de velocidade máxima em zonas concretas

Pode controlar-se que o piloto não excede a velocidade em zonas concretas: assim que a excede, nem que seja uma vez, num troço, esse troço considera-se penalizado, e o sistema indica quantas zonas de controlo de velocidade validou ou penalizou. Se houver, por exemplo, 6 zonas de velocidade controlada e o piloto exceder a velocidade em duas, marcará como corretas 4 de 6 zonas.

Para controlar que os pilotos não excedem a velocidade em zonas concretas é preciso inserir no GPX anexado para a verificação da prova uns WP com a seguinte estrutura.

SPEED_XXX_T_NN
  • XXX = Velocidade. Valor numérico, dígitos de 0 a 9; se forem dois dígitos, colocar um 0 à frente.
  • T = Tipo início ou fim de troço. Opções (I = início, F = fim)
  • N = Número do WP. Valor numérico, dígitos de 0 a 9; se for um só dígito, colocar um 0 à frente.

Exemplo:

SPEED_090_I_01  ( Início de troço de controlo de velocidade a 90 )
SPEED_090_F_01  ( Fim de troço de controlo de velocidade a 90 )

3. Controlo de passagem por WPs

Pode controlar-se que o piloto passa pelos WP desejados: o sistema indica por quais WP o piloto passou e valida-os. Se, por exemplo, o GPX tiver 256 WP e o piloto só registar a passagem por 232, o sistema marcará como validados 232 de 256.

Para isso basta inserir no GPX anexado para a verificação da prova uns WP com a seguinte estrutura.

CPXX

O nome do WP deve começar por CP em maiúsculas seguido do número do WP.

Exemplo:

CP1 , CP34 ,etc

4. Controlo de passagem por WP de eventos de regularidade

Pode controlar-se que o piloto passa pelos WP desejados à hora desejada: o sistema indica por quais WP passou dentro da margem estabelecida e penaliza a diferença de tempo.

O sistema permite uma margem de tempo em que o piloto não é penalizado, uma penalização por cada segundo de atraso ou adiantamento e uma penalização por não passar pelo WP

Imaginemos um WP com hora de passagem 1 h 45 min 21 s após a partida do piloto e uma margem de cortesia de 20 s.

Se o piloto passar 1 h 45 min 15 s após a partida, o sistema penaliza-o com 0 pontos.

Para isso basta inserir no GPX anexado para a verificação da prova uns WP com a seguinte estrutura.

CPRXXXXX

O nome do WP deve começar por CPR em maiúsculas seguido dos segundos após a partida em que o piloto deve passar pelo WP.

  • XXXXX = segundos. Valor numérico, dígitos de 0 a 9; se não chegar a cinco dígitos, colocar 0 à frente.

Exemplo:

CPR00034  = WP de controlo de regularidade, o piloto deve passar nele 34 segundos após a partida
CPR02421 = WP de controlo de regularidade, o piloto deve passar nele  2421  segundos após a partida

5. WP diversos

Inserem-se WP informativos no mapa do site de seguimento. Para isso basta inserir no GPX anexado para a verificação da prova uns WP com a seguinte estrutura.

Qualquer nome de WP que não comece pelos WP indicados acima, ou seja, que não comece por SPEED, STOP, CP ou CPR.


B. API de integração: enviar dados para o TeamTrack

Esquema: apps e dispositivos enviam dados por HTTP GET para a API TT da plataforma web TeamTrack

Queres integrar a tua app ou dispositivo com a nossa plataforma?

Pede-nos a documentação e explicamos-te como fazê-lo facilmente.

Podes enviar da tua app ou dispositivo os dados para a nossa plataforma para os localizar nos nossos mapas, com todas as nossas funções e gratuitamente.

Faz-se através de um pedido HTTP GET com a seguinte estrutura:

https://www.teamtrackonline.com/gestion/inputs/input.php?lat=latitud&lon=longitud&speed=velocidad&datetime=datetime&altitude=altitud&battery=bateria&usuario_tt=id_usuario_tt&key_api=key

Exemplos de valores:

latitud : 22.54596 (obrigatório)
longitud : 113.94389 (obrigatório)
velocidad : 23.56
datetime : 2018/12/04Z08:39:03 (obrigatório)
altitud:  128
bateria:  95
id_usuario_tt : 1285 (obrigatório)
key_api : TU_KEY_API (obrigatório)

Enviando a localização da tua app ou dispositivo para a nossa plataforma poderás usar como até agora os sites de seguimento do TeamTrack, bem como o histórico de movimentos, ver a localização enviada da app TeamTrack em dispositivos iOS e Android, etc.

Formato das consultas:

CampoTipoComentário
latitudDouble. Com ponto como separador decimalLatitude da localização. Exemplo: 22.54876. Admite negativos, p. ex. -3.345. Campo obrigatório.
longitudDouble. Com ponto como separador decimalLongitude da localização. Exemplo: 113.54876. Admite negativos, p. ex. -42.845. Campo obrigatório.
velocidadDouble. Com ponto como separador decimalVelocidade atual do utilizador em km/h. Exemplo: 23.56. Se não for usada, enviar 0.
datetimeDatetime. AAAA/MM/DDZHH:MM_SSUsar Z como separador entre a data e a hora. Exemplo: 2018/12/04Z08:39:03. Campo obrigatório.
altitudDouble. Com ponto como separador decimalAltitude do utilizador em metros. Exemplo: 128.32. Se não for usada, enviar 0.
bateriaDouble. Com ponto como separador decimalNível de bateria do dispositivo. Exemplo: 95. Se não for usado, enviar 0.
id_usuario_ttInteger.Número de ID de utilizador do TeamTrack. Exemplo: 1464. Campo obrigatório.
puntos_noDouble. Com ponto como separador decimalPontos Naviopen. Exemplo: 251.12. Admite negativos. Se não for usado, enviar 0.
key_apivarchar, 30 caracteresChave da API fornecida pelo TeamTrack que identifica a aplicação que envia os dados. Campo obrigatório.

Respostas:

  • OK – Informação recebida
  • Erro – Erro na informação enviada. Verificar os dados enviados.

C. API de integração: obter os dados do TeamTrack

Queres tirar os dados da nossa plataforma para os gerir ou mostrar?

Pede-nos a documentação e explicamos-te como fazê-lo facilmente.

Existem várias consultas:

1. Consulta de dados dos participantes inscritos num evento

Faz-se através de um pedido HTTP GET com a seguinte estrutura:

https://www.teamtrackonline.com/dka/existe.php?action=participants&race_id=race_id&api_key=key_api

Exemplos de valores:

race_id : 365 (obrigatório) – ID do evento
key_api :  TU_KEY_API  (obrigatório)

Exemplo de consulta:

https://www.teamtrackonline.com/dka/existe.php?action=participants&race_id=365&api_key=TU_KEY_API

Ao fazer a consulta o sistema responde com a informação dos participantes do evento com os seguintes dados:

[
{"nombre_usuario":"Piloto 1 ","num_dorsal":"1","ultima_actualizacion":"2021-03-17 09:14:46","lat":"37.425678","lon":"-2.972899","vel":"43.1","alt":"1206.6","bateria":"63 %"},
{"nombre_usuario":"Piloto 2 ","num_dorsal":"2","ultima_actualizacion":"2021-03-17 09:14:36","lat":"37.423009","lon":"-2.970436","vel":"55.4","alt":"1226.5","bateria":"58 %"},
{"nombre_usuario":"Piloto 3 ","num_dorsal":"3","ultima_actualizacion":"2021-03-17 09:14:47","lat":"37.422543","lon":"-2.980097","vel":"28.7","alt":"1182.5","bateria":"96 %"},
{"nombre_usuario":"Piloto 4 ","num_dorsal":"4","ultima_actualizacion":"2021-03-17 09:14:26","lat":"37.434076","lon":"-2.999814","vel":"82.3","alt":"1115.1","bateria":"55 %"},
{"nombre_usuario":"Piloto 5 ","num_dorsal":"5","ultima_actualizacion":"2021-03-17 09:14:45","lat":"37.425076","lon":"-2.994982","vel":"39.1","alt":"1113.0","bateria":"62 %"},
{"nombre_usuario":"Piloto 5 ","num_dorsal":"R","ultima_actualizacion":"2021-03-17 09:14:47","lat":"37.485225","lon":"-3.032848","vel":"27.0","alt":"1000.5","bateria":"100 %"}
]

2. Consulta do percurso de um participante num intervalo de tempo

Faz-se através de um pedido HTTP GET com a seguinte estrutura:

https://www.teamtrackonline.com/dka/existe.php?action=participant_route&race_id=race_id&num_dorsal=num_dorsal&date_time_ini=date_time_ini&date_time_fin=date_time_fin&api_key=key_api

Exemplos de valores:

race_id : 365 (obrigatório) ID do evento
num_dorsal : 1 (obrigatório) Número de dorsal do piloto
date_time_ini : 2020/12/04Z08:30:00 (obrigatório) Data e hora a partir das quais se mostram os registos do piloto
date_time_fin : 2020/12/04Z19:30:00 (obrigatório) Data e hora até às quais se mostram os registos do piloto
backup_gps : 1 ou 0 (opcional) 1 envia os dados da baliza de reserva, 0 os da baliza principal; por defeito envia os da baliza principal
key_api : TU_KEY_API (obrigatório)

Exemplo de consulta:

https://www.teamtrackonline.com/dka/existe.php?action=participant_route&race_id=365&num_dorsal=3&date_time_ini=2021-03-17Z08:04:00&date_time_fin=2021-03-17Z08:04:55&api_key=TU_KEY_API

Ao fazer a consulta o sistema responde com a informação dos participantes do evento com os seguintes dados:

[
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.2","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:01"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:03"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:05"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:07"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:09"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:11"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:13"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:15"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:17"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:19"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:21"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:23"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:25"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:27"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:29"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:31"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:33"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:35"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:37"},
{"usuario":"3901","lat":"37.294017","lon":"-3.167673","alt":"985.0","vel":"0.0","bearing":"27","GNSS_AC":"1","fecha":"2021-03-17 08:04:39"},
{"usuario":"3901","lat":"37.294038","lon":"-3.167659","alt":"985.2","vel":"8.7","bearing":"18","GNSS_AC":"1","fecha":"2021-03-17 08:04:41"},
{"usuario":"3901","lat":"37.294060","lon":"-3.167653","alt":"985.0","vel":"3.4","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:43"},
{"usuario":"3901","lat":"37.294066","lon":"-3.167652","alt":"984.6","vel":"0.5","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:45"},
{"usuario":"3901","lat":"37.294066","lon":"-3.167652","alt":"984.7","vel":"0.0","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:47"},
{"usuario":"3901","lat":"37.294066","lon":"-3.167652","alt":"984.7","vel":"0.0","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:49"},
{"usuario":"3901","lat":"37.294066","lon":"-3.167652","alt":"984.7","vel":"0.0","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:53"},
{"usuario":"3901","lat":"37.294066","lon":"-3.167652","alt":"984.7","vel":"0.0","bearing":"10","GNSS_AC":"1","fecha":"2021-03-17 08:04:55"}
]

Tens dúvidas? Contacta-nos