Criação de Dashboard Telemétrico para Eurotuck Simulator 2
Hoje quero falar de um projeto que mistura duas coisas que eu gosto bastante: programação e jogos. Especificamente o Euro Truck Simulator 2, que pra quem não conhece é um simulador de caminhão incrivelmente detalhado — e que, por baixo dos panos, esconde uma arquitetura técnica surpreendentemente rica.
A ideia surgiu enquanto eu jogava e percebi que o jogo expõe uma quantidade absurda de dados em tempo real: velocidade, RPM, temperatura da água e do óleo, pressão de ar dos freios, nível de combustível, voltagem da bateria, marcha atual, odômetro, horário interno do jogo... tudo isso disponível, estruturado, esperando alguém fazer algo com ele.
E aí veio a pergunta natural: dá pra transformar isso num painel externo no celular?
A resposta é sim. E foi exatamente isso que eu fiz.
O middleware que conecta tudo
O ETS2 tem uma SDK oficial em C++ que permite criar plugins em DLL. Esses plugins são carregados pelo próprio motor do jogo e recebem os dados do veículo em tempo real. Mas trabalhar direto com DLL e estruturas binárias em memória é coisa de gente com paciência demais — e eu já tenho pouca.
Foi aí que entrou o Funbit ETS2 Telemetry Server, um projeto open source que já faz todo esse trabalho pesado. Ele instala o plugin, captura os dados da SDK e os expõe como um endpoint HTTP local em formato JSON, geralmente na porta 25555. Simples assim.
Com isso, qualquer dispositivo na mesma rede Wi-Fi consegue acessar http://ip-do-pc:25555/api/ets2/telemetry e receber um objeto JSON com tudo que o jogo está produzindo naquele instante. O celular, o tablet, um segundo monitor — qualquer coisa com navegador vira um painel em potencial.
Construindo o dashboard
A interface foi desenvolvida em HTML, CSS e JavaScript puro, com jQuery pra facilitar a manipulação do DOM. O frontend faz polling no endpoint a cada 100 a 250 milissegundos, lê o JSON e atualiza os elementos na tela.
Parece simples, e na prática é — mas tem uns detalhes que tornam o projeto interessante.
O primeiro deles é a normalização dos dados antes de exibir. A velocidade, por exemplo, vem como um número que pode ser negativo durante a marcha à ré. Antes de jogar na tela, arredondo e pego o valor absoluto. A marcha vem como um inteiro, então trato pra exibir "R" quando é negativa e "N" quando é zero. Esse tipo de pré-processamento é o que separa um dashboard funcional de um que confunde quem está usando.
O segundo detalhe é o sistema de alerta de pressão de ar. Quando a pressão cai abaixo de 80, o painel entra em modo de alerta: o valor começa a piscar em vermelho com uma animação CSS. Nada sofisticado tecnicamente, mas visualmente é exatamente o tipo de coisa que faz sentido num HUD real — chama atenção sem precisar de som.
A interface foi inspirada em painéis aeronáuticos: fundo escuro, fonte grande, contraste alto, leitura fácil mesmo com o canto do olho. A velocidade ocupa a maior parte da tela com uma unidade vh que se ajusta automaticamente ao tamanho do dispositivo. O restante dos dados fica numa grade central dividida em blocos temáticos — temperatura, elétrica, navegação e desgaste.
O que foi mais trabalhoso
Honestamente? A consistência. O jogo atualizou pra versão 1.58.1.4s durante o desenvolvimento e parte da estrutura interna da telemetria mudou. Como o Funbit reflete diretamente o schema da SDK, o frontend quebrou em vários pontos — acessar data.truck.airPressure quando data.truck ainda não tinha chegado gerava exceção e travava tudo.
Foram dezenas de hot-reloads, testes manuais injetando valores via console, e muita paciência até deixar o código resiliente a esse tipo de falha. No final, o dashboard simplesmente ignora ciclos com payload incompleto e continua rodando quando os dados chegam.
Por que esse projeto é interessante
Não é só porque é legal ter um painel de caminhão no celular — embora seja, de fato, muito legal. É porque o projeto cobre um ciclo completo e real: captura de dados binários, serialização, transporte HTTP, consumo em rede local e renderização reativa. Isso não é diferente do que acontece em sistemas de telemetria industriais, monitoramento de servidores ou dashboards de IoT.
Por hoje é isso pessoal, um abraço e até a próxima.

Comentários
Postar um comentário
Deixe sua mensagem a seguir: