Transferir dados históricos
Os dados históricos de cada dispositivo estão em ficheiros de texto (datalogs) no servidor do dispositivo. Cada ficheiro cobre um dia, um mês ou o histórico completo. Precisa de permissão de leitura no dispositivo.
Para uma exportação sem código, utilize os relatórios da aplicação. Consulte os seus dados.
Procedimento
Seção intitulada “Procedimento”- Encontre o servidor do dispositivo. Chame
get_device_info.phpe leia o campodevice_server. Consulte a API REST. - Encontre a ordem das colunas. Chame
get_device_definitions.php?family_id=<família>e leiareadingseoutput_names. - Calcule o nível e o número do ficheiro (bin) para o período que quer.
- Transfira cada ficheiro do servidor do dispositivo.
- Junte as linhas, ordene-as pelo timestamp e preencha os campos vazios.
O pedido
Seção intitulada “O pedido”curl --compressed \ -H "Authorization: Bearer-API YOUR_API_KEY" \ "https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"Substitua DEVICE_SERVER pelo valor do campo device_server do dispositivo.
| Parâmetro | Valor |
|---|---|
serialno |
O número de série do dispositivo |
id |
<nível>.<bin>, por exemplo 0.20740 |
ver |
2 |
Para a autenticação, envie o cabeçalho Authorization: Bearer-API YOUR_API_KEY ou Authorization: Bearer YOUR_ACCESS_TOKEN.
O servidor pode enviar o ficheiro comprimido (gzip ou br). A opção --compressed do curl descomprime-o.
| Código HTTP | Significado |
|---|---|
| 200 | O ficheiro, como text/plain |
| 400 | serialno ou id errado |
| 403 | Não tem permissão de leitura no dispositivo |
| 404 | Não existem dados para este ficheiro |
Níveis e números de ficheiro
Seção intitulada “Níveis e números de ficheiro”Todos os cálculos utilizam UTC.
| Nível | Um ficheiro por | Cálculo do bin | Exemplo |
|---|---|---|---|
0 |
Dia | floor(unix_seconds / 86400) |
14 de outubro de 2026 = 0.20740 |
1 |
Mês | (ano - 1970) * 12 + (mês - 1) |
Outubro de 2026 = 1.681 |
2 |
Histórico completo | Sempre m |
2.m |
O nível 0 tem todas as linhas do dia. O nível 1 tem cerca de uma linha por dia. O nível 2 tem cerca de uma linha por mês.
A aplicação utiliza o nível 0 para períodos até 7 dias e o nível 1 para períodos até 5 meses. Para períodos mais longos, utiliza 2.m.
Formato das linhas
Seção intitulada “Formato das linhas”Cada linha é uma medição. Os campos são separados por ;.
timestamp;reading1;reading2;...;readingN;output1;...;outputM- O
timestampé em segundos unix (UTC). Pode ter decimais. - Depois vêm as leituras, pela ordem de
readingsda família. - Depois vêm as saídas, pela ordem de
output_names. - Um campo vazio significa que o valor não mudou. Utilize o último valor de uma linha anterior.
- O valor
2147483648significa que a leitura está em falta. - As linhas nem sempre estão ordenadas. Ordene-as pelo
timestamp.
Exemplo
Seção intitulada “Exemplo”Um dispositivo da família e11 tem readings = ["T", "GI", "GIC", "GI2", "GI2C"] e não tem saídas.
1791936198.977;2120;1;0;1;0| Campo | Valor | Significado |
|---|---|---|
| timestamp | 1791936198.977 |
Hora da medição |
T |
2120 |
21.20 °C, porque a conversão de T é divide_by_100 |
GI |
1 |
Estado da primeira entrada |
GIC |
0 |
Contador da primeira entrada |
GI2 |
1 |
Estado da segunda entrada |
GI2C |
0 |
Contador da segunda entrada |
Encontra as conversões e as unidades no dicionário readings das definições. Consulte a API REST.
Exemplo em shell
Seção intitulada “Exemplo em shell”Este exemplo transfere os últimos 3 dias de um dispositivo.
SERVER=DEVICE_SERVERSN=e11:123TODAY=$(( $(date -u +%s) / 86400 ))for BIN in $(seq $((TODAY - 2)) $TODAY); do curl -s --compressed \ -H "Authorization: Bearer-API YOUR_API_KEY" \ "https://$SERVER/datalogs.php?serialno=$SN&id=0.$BIN&ver=2"done | sort -t';' -k1,1nOutro método
Seção intitulada “Outro método”O servidor MCP tem a ferramenta get_device_history. Ela aceita os mesmos níveis e bins.

