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.
Procedura
Dział zatytułowany „Procedura”- Znajdź serwer urządzenia. Wywołaj
get_device_info.phpi odczytaj poledevice_server. Zobacz REST API. - Znajdź kolejność kolumn. Wywołaj
get_device_definitions.php?family_id=<rodzina>i odczytajreadingsioutput_names. - Oblicz poziom i numer pliku (bin) dla wybranego okresu.
- Pobierz każdy plik z serwera urządzenia.
- Połącz wiersze, posortuj je według znacznika czasu i uzupełnij puste pola.
Żądanie
Dział zatytułowany „Żądanie”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 |
Poziomy i numery plików
Dział zatytułowany „Poziomy i numery plików”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.
Format wiersza
Dział zatytułowany „Format wiersza”Każdy wiersz to jeden pomiar. Pola są rozdzielone znakiem ;.
timestamp;reading1;reading2;...;readingN;output1;...;outputMtimestampto sekundy unix (UTC). Może mieć ułamki.- Potem są odczyty, w kolejności
readingsrodziny. - 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ść
2147483648oznacza, że odczyt jest brakujący. - Wiersze nie zawsze są posortowane. Posortuj je według
timestamp.
Przykład
Dział zatytułowany „Przykład”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.
Przykład w powłoce
Dział zatytułowany „Przykład w powłoce”Ten przykład pobiera ostatnie 3 dni urządzenia.
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,1nInna metoda
Dział zatytułowany „Inna metoda”Serwer MCP ma narzędzie get_device_history. Przyjmuje te same poziomy i biny.

