Zum Inhalt springen

Historische Daten herunterladen

Die historischen Daten jedes Geräts liegen in Textdateien (Datalogs) auf seinem Geräteserver. Jede Datei deckt einen Tag, einen Monat oder den gesamten Verlauf ab. Sie brauchen Leseberechtigung auf dem Gerät.

Für einen Export ohne Code verwenden Sie die Berichte der App. Siehe Ihre Daten.

  1. Suchen Sie den Server des Geräts. Rufen Sie get_device_info.php auf und lesen Sie das Feld device_server. Siehe die REST-API.
  2. Suchen Sie die Reihenfolge der Spalten. Rufen Sie get_device_definitions.php?family_id=<family> auf und lesen Sie readings und output_names.
  3. Berechnen Sie die Ebene und die Dateinummer (Bin) für den gewünschten Zeitraum.
  4. Laden Sie jede Datei vom Server des Geräts herunter.
  5. Fügen Sie die Zeilen zusammen, sortieren Sie sie nach Zeitstempel und füllen Sie die leeren Felder.
Terminal-Fenster
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Ersetzen Sie DEVICE_SERVER durch den Wert des Felds device_server des Geräts.

Parameter Wert
serialno Die Seriennummer des Geräts
id <level>.<bin>, zum Beispiel 0.20740
ver 2

Senden Sie zur Authentifizierung den Header Authorization: Bearer-API YOUR_API_KEY oder Authorization: Bearer YOUR_ACCESS_TOKEN.

Der Server kann die Datei komprimiert senden (gzip oder br). Die curl-Option --compressed dekomprimiert sie.

HTTP-Code Bedeutung
200 Die Datei, als text/plain
400 Falsche serialno oder id
403 Sie haben keine Leseberechtigung auf dem Gerät
404 Für diese Datei gibt es keine Daten

Alle Berechnungen verwenden UTC.

Ebene Eine Datei pro Berechnung des Bin Beispiel
0 Tag floor(unix_seconds / 86400) 14. Oktober 2026 = 0.20740
1 Monat (year - 1970) * 12 + (month - 1) Oktober 2026 = 1.681
2 Gesamter Verlauf Immer m 2.m

Ebene 0 hat alle Zeilen des Tages. Ebene 1 hat etwa eine Zeile pro Tag. Ebene 2 hat etwa eine Zeile pro Monat.

Die App verwendet Ebene 0 für Zeiträume bis 7 Tage und Ebene 1 für Zeiträume bis 5 Monate. Für längere Zeiträume verwendet sie 2.m.

Jede Zeile ist eine Messung. Die Felder sind durch ; getrennt.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • Der timestamp ist in Unix-Sekunden (UTC). Er kann Dezimalstellen haben.
  • Danach kommen die Messwerte, in der Reihenfolge der readings der Familie.
  • Danach kommen die Ausgänge, in der Reihenfolge von output_names.
  • Ein leeres Feld bedeutet, dass sich der Wert nicht geändert hat. Verwenden Sie den letzten Wert aus einer früheren Zeile.
  • Der Wert 2147483648 bedeutet, dass der Messwert fehlt.
  • Die Zeilen sind nicht immer sortiert. Sortieren Sie sie nach timestamp.

Ein Gerät der Familie e11 hat readings = ["T", "GI", "GIC", "GI2", "GI2C"] und keine Ausgänge.

1791936198.977;2120;1;0;1;0
Feld Wert Bedeutung
timestamp 1791936198.977 Zeitpunkt der Messung
T 2120 21,20 °C, weil die Umrechnung von T divide_by_100 ist
GI 1 Zustand des ersten Eingangs
GIC 0 Zähler des ersten Eingangs
GI2 1 Zustand des zweiten Eingangs
GI2C 0 Zähler des zweiten Eingangs

Die Umrechnungen und die Einheiten finden Sie im Wörterbuch readings der Definitionen. Siehe die REST-API.

Dieses Beispiel lädt die letzten 3 Tage eines Geräts herunter.

Terminal-Fenster
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

Der MCP-Server hat das Werkzeug get_device_history. Es akzeptiert dieselben Ebenen und Bins.

Chat mit dem Support