Przejdź do głównej zawartości

Pobieranie danych historycznych

Dane historyczne każdego urządzenia są w plikach tekstowych (datalogach) na jego serwerze urządzeń. Każdy plik obejmuje jeden dzień, jeden miesiąc lub całą historię. Potrzebujesz uprawnienia do odczytu urządzenia.

Eksport bez kodu wykonasz raportami w aplikacji. Zobacz twoje dane.

  1. Znajdź serwer urządzenia. Wywołaj get_device_info.php i odczytaj pole device_server. Zobacz REST API.
  2. Znajdź kolejność kolumn. Wywołaj get_device_definitions.php?family_id=<rodzina> i odczytaj readings i output_names.
  3. Oblicz poziom i numer pliku (bin) dla wybranego okresu.
  4. Pobierz każdy plik z serwera urządzenia.
  5. Połącz wiersze, posortuj je według znacznika czasu i uzupełnij puste pola.
Okno terminala
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Zastąp DEVICE_SERVER wartością pola device_server urządzenia.

Parametr Wartość
serialno Numer seryjny urządzenia
id <poziom>.<bin>, na przykład 0.20740
ver 2

Do uwierzytelnienia wyślij nagłówek Authorization: Bearer-API YOUR_API_KEY lub Authorization: Bearer YOUR_ACCESS_TOKEN.

Serwer może wysłać plik skompresowany (gzip lub br). Opcja curl --compressed dekompresuje go.

Kod HTTP Znaczenie
200 Plik, jako text/plain
400 Błędny serialno lub id
403 Nie masz uprawnienia do odczytu urządzenia
404 Brak danych dla tego pliku

Wszystkie obliczenia używają UTC.

Poziom Jeden plik na Obliczenie bin Przykład
0 Dzień floor(unix_seconds / 86400) 14 października 2026 = 0.20740
1 Miesiąc (year - 1970) * 12 + (month - 1) Październik 2026 = 1.681
2 Cała historia Zawsze m 2.m

Poziom 0 ma wszystkie wiersze dnia. Poziom 1 ma około jednego wiersza na dzień. Poziom 2 ma około jednego wiersza na miesiąc.

Aplikacja używa poziomu 0 dla okresów do 7 dni i poziomu 1 dla okresów do 5 miesięcy. Dla dłuższych okresów używa 2.m.

Każdy wiersz to jeden pomiar. Pola są rozdzielone znakiem ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • timestamp to sekundy unix (UTC). Może mieć ułamki.
  • Potem są odczyty, w kolejności readings rodziny.
  • Potem są wyjścia, w kolejności output_names.
  • Puste pole oznacza, że wartość się nie zmieniła. Użyj ostatniej wartości z wcześniejszego wiersza.
  • Wartość 2147483648 oznacza, że odczyt jest brakujący.
  • Wiersze nie zawsze są posortowane. Posortuj je według timestamp.

Urządzenie rodziny e11 ma readings = ["T", "GI", "GIC", "GI2", "GI2C"] i nie ma wyjść.

1791936198.977;2120;1;0;1;0
Pole Wartość Znaczenie
timestamp 1791936198.977 Czas pomiaru
T 2120 21.20 °C, bo przeliczenie T to divide_by_100
GI 1 Stan pierwszego wejścia
GIC 0 Licznik pierwszego wejścia
GI2 1 Stan drugiego wejścia
GI2C 0 Licznik drugiego wejścia

Przeliczenia i jednostki znajdziesz w słowniku readings w definicjach. Zobacz REST API.

Ten przykład pobiera ostatnie 3 dni urządzenia.

Okno terminala
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

Serwer MCP ma narzędzie get_device_history. Przyjmuje te same poziomy i biny.

Czat z pomocą techniczną