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::Point
s. 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.