Pular para o conteúdo principal

Rastreador MaxTrack MXT160

O rastreador do MXT160 é responsável por consumir uma fila RabbitMQ da MaxTrack (empresa que fornece o equipamento) e inserir no banco da IBOR com as devidas informações, assim como enviar comandos de bloqueio/desbloqueio do equipamento. O código foi feito em Python e está disponível em https://github.com/ibortransporte/tracker.

Os dados são salvos no banco SQL Server da IBOR no schema RASTREADOR nas tabelas DADO_LIDO e ULT_DADO_LIDO. E os comandos são lidos/atualizados na tabela Comandos.

NOTA: Atualmente o código está sendo executado no servidor com IP 192.168.2.227 e a sua configuração está na pasta ~/ibor_performance_app no mesmo docker-compose.yaml dos outros serviços.

Como executar

Para executar primeiro é necessário configurar as variáveis de ambiente no arquivo .env na raiz do projeto. As seguintes variáveis são necessárias

SQLSERVER_CONNECTION_STRING=
QUEUE_HOST=
QUEUE_PORT=
QUEUE_NAME=
QUEUE_USER=
QUEUE_PASSWORD=
COMMAND_APPLICATION_ID=
COMMAND_APPLICATION_TOKEN=

Após ter as variáveis configuradas é necessário apenas rodar o docker-compose para começar a consumir a fila.

docker-compose up -d

Calculo do ponto próximo

O cálculo do ponto próximo é feito com a função STDistance do SQLServer que compara dois geography::Points. Os pontos com latitude, longitude e nome são buscados de syn_cidades, e é feita a ordenação do mais próximo. O campo dist_ponto_proximo é salvo em km.

Envio do comando

O programa lista os últimos comandos para os equipamentos MXT160 da tabela Comandos que ainda não foram enviados (enviado = 0 and enviado_gw = 0) e os envia para a API da MaxTrack no link https://command.denox.com.br/cmd/max_pb/set_output. Os comandos dessa API são documentados no link https://command.denox.com.br/doc/, e afim de histórico o arquivo do swagger na data de criação do programa também está disponível na pasta https://github.com/ibortransporte/tracker/tree/main/docs/api_commands_swagger_doc.json.

Uma thread no programa fica responsável por buscar/enviar os comandos para os equipamentos. Em outra está a fila, nela ocorre o reconhecimento de que o caminhão recebeu o comando. O identificador utilizado é o ticket enviado pela API. Os tickets são salvos no arquivo data/tickets.pickle que fica "sincronizado" com o container que executa o programa (configuração no docker-compose).

Logs

Os logs de execução ficam no arquivo data/execution.log que ficam "sincronizados" com o container que executa o programa.

Possíveis problemas

Por causa da configuração da fila/banco/programa podem haver problemas com o fuso horário. Portanto problemas de horário com +/-3 horas podem ter sidos causados por:

  • Mudança no banco
  • Mudança na exibição do programa dos rastros
  • Mudança no fuso enviado pela fila da MaxTrack
  • Mudança no fuso horário do servidor que executa esse programa

Por falta de devida documentação, parte dos campos que são adicionados por esse programa foram inferidos por meio de códigos de programas antigos e dados do banco.