İçeriğe geç

Geçmiş verileri indirme

Her cihazın geçmiş verileri, cihaz sunucusundaki metin dosyalarındadır (datalog’lar). Her dosya bir günü, bir ayı veya tüm geçmişi kapsar. Cihaz üzerinde okuma iznine ihtiyacınız vardır.

Kod olmadan dışa aktarma için uygulamanın raporlarını kullanın. Bkz. verileriniz.

  1. Cihazın sunucusunu bulun. get_device_info.php çağrısını yapın ve device_server alanını okuyun. Bkz. REST API.
  2. Sütun sırasını bulun. get_device_definitions.php?family_id=<family> çağrısını yapın ve readings ile output_names alanlarını okuyun.
  3. İstediğiniz dönem için seviyeyi ve dosya numarasını (bin) hesaplayın.
  4. Her dosyayı cihazın sunucusundan indirin.
  5. Satırları birleştirin, zaman damgasına göre sıralayın ve boş alanları doldurun.
Terminal window
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

DEVICE_SERVER değerini cihazın device_server alanının değeriyle değiştirin.

Parametre Değer
serialno Cihazın seri numarası
id <level>.<bin>, örneğin 0.20740
ver 2

Kimlik doğrulama için Authorization: Bearer-API YOUR_API_KEY veya Authorization: Bearer YOUR_ACCESS_TOKEN başlığını gönderin.

Sunucu dosyayı sıkıştırılmış (gzip veya br) olarak gönderebilir. curl’ün --compressed seçeneği onu açar.

HTTP kodu Anlamı
200 text/plain olarak dosya
400 Yanlış serialno veya id
403 Cihaz üzerinde okuma izniniz yok
404 Bu dosya için veri yok

Tüm hesaplamalar UTC kullanır.

Seviye Her dosya için Bin hesaplaması Örnek
0 Gün floor(unix_seconds / 86400) 14 Ekim 2026 = 0.20740
1 Ay (year - 1970) * 12 + (month - 1) Ekim 2026 = 1.681
2 Tüm geçmiş Her zaman m 2.m

0 seviyesi günün tüm satırlarını içerir. 1 seviyesi gün başına yaklaşık bir satır içerir. 2 seviyesi ay başına yaklaşık bir satır içerir.

Uygulama 7 güne kadar olan dönemler için 0 seviyesini ve 5 aya kadar olan dönemler için 1 seviyesini kullanır. Daha uzun dönemler için 2.m kullanır.

Her satır bir ölçümdür. Alanlar ; ile ayrılır.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • timestamp unix saniyesidir (UTC). Ondalık basamakları olabilir.
  • Sonra ailenin readings sırasına göre ölçümler gelir.
  • Sonra output_names sırasına göre çıkışlar gelir.
  • Boş bir alan değerin değişmediği anlamına gelir. Daha önceki bir satırdaki son değeri kullanın.
  • 2147483648 değeri ölçümün eksik olduğu anlamına gelir.
  • Satırlar her zaman sıralı değildir. Onları timestamp değerine göre sıralayın.

e11 ailesinden bir cihazda readings = ["T", "GI", "GIC", "GI2", "GI2C"] vardır ve çıkış yoktur.

1791936198.977;2120;1;0;1;0
Alan Değer Anlamı
timestamp 1791936198.977 Ölçüm zamanı
T 2120 21.20 °C, çünkü T dönüşümü divide_by_100 şeklindedir
GI 1 Birinci girişin durumu
GIC 0 Birinci girişin sayacı
GI2 1 İkinci girişin durumu
GI2C 0 İkinci girişin sayacı

Dönüşümleri ve birimleri tanımların readings sözlüğünde bulursunuz. Bkz. REST API.

Bu örnek bir cihazın son 3 gününü indirir.

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

MCP sunucusunda get_device_history aracı vardır. Aynı seviyeleri ve bin’leri kabul eder.

Destekle sohbet