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.
Vorgehen
Abschnitt betitelt „Vorgehen“- Suchen Sie den Server des Geräts. Rufen Sie
get_device_info.phpauf und lesen Sie das Felddevice_server. Siehe die REST-API. - Suchen Sie die Reihenfolge der Spalten. Rufen Sie
get_device_definitions.php?family_id=<family>auf und lesen Siereadingsundoutput_names. - Berechnen Sie die Ebene und die Dateinummer (Bin) für den gewünschten Zeitraum.
- Laden Sie jede Datei vom Server des Geräts herunter.
- Fügen Sie die Zeilen zusammen, sortieren Sie sie nach Zeitstempel und füllen Sie die leeren Felder.
Die Anfrage
Abschnitt betitelt „Die Anfrage“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 |
Ebenen und Dateinummern
Abschnitt betitelt „Ebenen und Dateinummern“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.
Zeilenformat
Abschnitt betitelt „Zeilenformat“Jede Zeile ist eine Messung. Die Felder sind durch ; getrennt.
timestamp;reading1;reading2;...;readingN;output1;...;outputM- Der
timestampist in Unix-Sekunden (UTC). Er kann Dezimalstellen haben. - Danach kommen die Messwerte, in der Reihenfolge der
readingsder 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
2147483648bedeutet, dass der Messwert fehlt. - Die Zeilen sind nicht immer sortiert. Sortieren Sie sie nach
timestamp.
Beispiel
Abschnitt betitelt „Beispiel“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.
Beispiel für die Shell
Abschnitt betitelt „Beispiel für die Shell“Dieses Beispiel lädt die letzten 3 Tage eines Geräts herunter.
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,1nAndere Methode
Abschnitt betitelt „Andere Methode“Der MCP-Server hat das Werkzeug get_device_history. Es akzeptiert dieselben Ebenen und Bins.

