Largue o CSV do log e leia o que o motor fez. Até seis canais no mesmo gráfico, cada um com a sua escala, e uma linha do tempo embaixo para recortar o trecho que interessa. O arquivo é lido dentro do navegador — não sobe para servidor nenhum.
TIME/valor).Nada sai do aparelho sem você mandar. O arquivo é lido pelo próprio navegador, com FileReader.
Para quem não está logado não existe servidor nesta página, e nenhum byte do log viaja para lugar nenhum. Log de
cliente pode ficar onde está.
“Na conta” é o único caminho para o servidor, e só existe para quem está logado na Minha área. Ele leva exatamente o log em que você clicou “Salvar na conta” (ou a seta ↑ de um log salvo no aparelho), comprimido, para a sua conta — e mais nada.
“Meus logs” também é local. O que você salva vai para o IndexedDB do navegador, guardado como
os bytes do arquivo original comprimidos em gzip — um CSV de números encolhe umas quatro a cinco vezes. Guardar
o arquivo, e não os canais já lidos, é de propósito: o leitor continua sendo a única fonte de verdade, então
melhorar a leitura melhora junto tudo o que já estava salvo.
O limite é baixo de propósito — dez arquivos, 25 MB — porque isto é atalho para o que você está acompanhando esta
semana, não arquivo morto. E vale repetir o que está escrito no cartão: não é backup. Fica em um navegador de
um aparelho, some se você limpar os dados do site, e o navegador pode despejar sob pressão de espaço. A página pede
navigator.storage.persist() para reduzir essa chance, mas é um pedido, não uma garantia. O arquivo
original continua sendo o backup.
Codificação. O arquivo é lido como UTF-8; se aparecer o caractere de substituição, é relido como
windows-1252. É o que salva log com °C e Δ exportado por ferramenta antiga.
Separador e decimal. Testa ponto e vírgula, tabulação e vírgula, e fica com o que faz as linhas de dados
darem mais campos numéricos, e de forma constante — partido pelo separador errado, um número com vírgula decimal vira
dois pedaços que não são número. O decimal é decidido depois, campo a campo, em centenas de linhas espalhadas pelo
arquivo: com ponto e vírgula no mesmo número, o último dos dois é o decimal (1.013,50). Sem pista
nenhuma — log só de inteiros —, ponto e vírgula traz vírgula decimal, que é como exportador em português escreve.
Campo entre aspas é lido como um campo só, mesmo com o separador dentro.
Onde começam os dados. Em vez de supor um número de linhas de cabeçalho, procura a primeira linha em que a maioria dos campos é número. As linhas acima dela que tiverem a mesma contagem de campos são o cabeçalho — é isso que faz o bloco de metadados do VCDS, que tem contagem diferente, ser descartado sozinho.
Nome, descrição e unidade. Com três linhas de cabeçalho, são nome curto, descrição e unidade, nessa ordem
— o formato das ferramentas Bosch, onde a coluna se chama nmot_w e a descrição diz
Engine speed. Com duas, a segunda é unidade se os campos forem curtos, senão é descrição. Com uma, são
só nomes.
Colunas em pares. O VCDS escreve TIME,valor,TIME,valor…, um carimbo de tempo por canal. Quando
aparecem dois ou mais campos chamados TIME ou STAMP alternando, a leitura entende o padrão:
o primeiro vira o eixo do tempo e os outros são descartados, ficando só as colunas de valor.
Célula com dois valores. Ainda no VCDS, o sensor de oxigênio sai como
0,994 Lambda / -0,027 mA — duas grandezas num campo só. Quando a coluna inteira tem dois números por
célula, ela é partida em dois canais, cada um com a unidade que vem escrita ao lado do seu número. É o dado
que mais interessa num log de acerto; perder metade dele por causa da formatação seria bobagem.
A unidade do tempo. Vem da linha de unidades quando ela existe. Quando não vem — o TIME do
VCDS não traz unidade — decide pelo passo entre amostras: passo de dezenas é milissegundo, passo abaixo de cinco é
segundo. Carimbo em hora do relógio (14:02:33.250) vira segundos. O seletor no cartão do arquivo existe
para o caso de ela errar, e a duração detectada fica à vista para você conferir de relance. Se a coluna de tempo não
anda, o eixo vira o número da amostra, e o cartão do arquivo avisa.
Amostragem irregular. Log de ferramenta raramente tem passo constante — o mesmo arquivo alterna 46 e 64 ms entre amostras. Por isso o eixo é o tempo, não o número da amostra, e a posição de cada ponto sai do carimbo dele. Índice como eixo esticaria e encolheria trechos do log conforme a ferramenta engasgasse.
Por que canvas, e não SVG como o resto do site. Dez minutos a 50 Hz são 30 mil amostras por canal; com seis canais são 180 mil elementos no DOM, e a página trava. Em canvas o custo é o número de pixels, não o de amostras.
Decimação por mínimo e máximo. Quando há mais amostras que pixels, cada coluna de pixel desenha um traço vertical do menor ao maior valor daquele intervalo — e não a média, nem uma amostra escolhida. A diferença importa: média e amostragem somem com o pico isolado, que num datalog costuma ser exatamente o que se procura, o espeto de detonação ou a queda de pressão de meio segundo. Cada coluna ainda estica até o último valor da coluna anterior, senão sinal muito rápido apareceria picotado.