Ir al contenido

Descargar datos históricos

Los datos históricos de cada dispositivo están en archivos de texto (datalogs) en su servidor de dispositivos. Cada archivo cubre un día, un mes o todo el historial. Necesita permiso de lectura en el dispositivo.

Para una exportación sin código, use los informes de la app. Consulte sus datos.

  1. Busque el servidor del dispositivo. Llame a get_device_info.php y lea el campo device_server. Consulte la API REST.
  2. Busque el orden de las columnas. Llame a get_device_definitions.php?family_id=<family> y lea readings y output_names.
  3. Calcule el nivel y el número de archivo (bin) para el periodo que desea.
  4. Descargue cada archivo del servidor del dispositivo.
  5. Una las filas, ordénelas por marca de tiempo y complete los campos vacíos.
Ventana de terminal
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Sustituya DEVICE_SERVER por el valor del campo device_server del dispositivo.

Parámetro Valor
serialno El número de serie del dispositivo
id <level>.<bin>, por ejemplo 0.20740
ver 2

Para la autenticación, envíe el encabezado Authorization: Bearer-API YOUR_API_KEY o Authorization: Bearer YOUR_ACCESS_TOKEN.

El servidor puede enviar el archivo comprimido (gzip o br). La opción --compressed de curl lo descomprime.

Código HTTP Significado
200 El archivo, como text/plain
400 serialno o id incorrectos
403 No tiene permiso de lectura en el dispositivo
404 No hay datos para este archivo

Todos los cálculos usan UTC.

Nivel Un archivo por Cálculo del bin Ejemplo
0 Día floor(unix_seconds / 86400) 14 de octubre de 2026 = 0.20740
1 Mes (year - 1970) * 12 + (month - 1) Octubre de 2026 = 1.681
2 Historial completo Siempre m 2.m

El nivel 0 tiene todas las filas del día. El nivel 1 tiene aproximadamente una fila por día. El nivel 2 tiene aproximadamente una fila por mes.

La app usa el nivel 0 para periodos de hasta 7 días y el nivel 1 para periodos de hasta 5 meses. Para periodos más largos usa 2.m.

Cada fila es una medición. Los campos están separados por ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • El timestamp son segundos unix (UTC). Puede tener decimales.
  • Después vienen las lecturas, en el orden de las readings de la familia.
  • Después vienen las salidas, en el orden de output_names.
  • Un campo vacío significa que el valor no cambió. Use el último valor de una fila anterior.
  • El valor 2147483648 significa que la lectura falta.
  • Las filas no siempre están ordenadas. Ordénelas por timestamp.

Un dispositivo de la familia e11 tiene readings = ["T", "GI", "GIC", "GI2", "GI2C"] y no tiene salidas.

1791936198.977;2120;1;0;1;0
Campo Valor Significado
timestamp 1791936198.977 Hora de la medición
T 2120 21.20 °C, porque la conversión de T es divide_by_100
GI 1 Estado de la primera entrada
GIC 0 Contador de la primera entrada
GI2 1 Estado de la segunda entrada
GI2C 0 Contador de la segunda entrada

Las conversiones y las unidades están en el diccionario readings de las definiciones. Consulte la API REST.

Este ejemplo descarga los últimos 3 días de un dispositivo.

Ventana de terminal
SERVER=DEVICE_SERVER
SN=e11:123
TODAY=$(( $(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,1n

El servidor MCP tiene la herramienta get_device_history. Acepta los mismos niveles y bins.

Chat con soporte