דלגו לתוכן

הורדת נתונים היסטוריים

הנתונים ההיסטוריים של כל מכשיר נמצאים בקובצי טקסט (datalogs) בשרת המכשירים שלו. כל קובץ מכסה יום אחד, חודש אחד או את כל ההיסטוריה. אתם צריכים הרשאת קריאה על המכשיר.

לייצוא בלי קוד, השתמשו בדוחות של האפליקציה. ראו הנתונים שלכם.

  1. מצאו את השרת של המכשיר. קראו ל-get_device_info.php וקראו את השדה device_server. ראו REST API.
  2. מצאו את סדר העמודות. קראו ל-get_device_definitions.php?family_id=<family> וקראו את readings ואת output_names.
  3. חשבו את הרמה ואת מספר הקובץ (bin) עבור התקופה שאתם רוצים.
  4. הורידו כל קובץ מהשרת של המכשיר.
  5. חברו את השורות, מיינו אותן לפי חותמת הזמן ומלאו את השדות הריקים.
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 בערך של השדה device_server של המכשיר.

פרמטר ערך
serialno המספר הסידורי של המכשיר
id <level>.<bin>, לדוגמה 0.20740
ver 2

לאימות, שלחו את הכותרת Authorization: Bearer-API YOUR_API_KEY או Authorization: Bearer YOUR_ACCESS_TOKEN.

השרת יכול לשלוח את הקובץ דחוס (gzip או br). האפשרות --compressed של curl פותחת את הדחיסה.

קוד HTTP משמעות
200 הקובץ, בתור text/plain
400 serialno או id שגויים
403 אין לכם הרשאת קריאה על המכשיר
404 אין נתונים לקובץ הזה

כל החישובים משתמשים ב-UTC.

רמה קובץ אחד לכל חישוב ה-bin דוגמה
0 יום floor(unix_seconds / 86400) 14 באוקטובר 2026 = 0.20740
1 חודש (year - 1970) * 12 + (month - 1) אוקטובר 2026 = 1.681
2 כל ההיסטוריה תמיד m 2.m

ברמה 0 יש את כל השורות של היום. ברמה 1 יש בערך שורה אחת לכל יום. ברמה 2 יש בערך שורה אחת לכל חודש.

האפליקציה משתמשת ברמה 0 לתקופות של עד 7 ימים וברמה 1 לתקופות של עד 5 חודשים. לתקופות ארוכות יותר היא משתמשת ב-2.m.

כל שורה היא מדידה אחת. השדות מופרדים ב-;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • ה-timestamp הוא שניות unix ‏(UTC). יכולות להיות לו ספרות אחרי הנקודה העשרונית.
  • אחריו באות המדידות, לפי הסדר של readings של המשפחה.
  • אחריהן באים הפלטים, לפי הסדר של output_names.
  • שדה ריק אומר שהערך לא השתנה. השתמשו בערך האחרון משורה קודמת.
  • הערך 2147483648 אומר שהמדידה חסרה.
  • השורות לא תמיד ממוינות. מיינו אותן לפי timestamp.

למכשיר מהמשפחה e11 יש readings = ["T", "GI", "GIC", "GI2", "GI2C"] ואין פלטים.

1791936198.977;2120;1;0;1;0
שדה ערך משמעות
timestamp 1791936198.977 זמן המדידה
T 2120 21.20 °C, כי ההמרה של T היא divide_by_100
GI 1 המצב של הכניסה הראשונה
GIC 0 המונה של הכניסה הראשונה
GI2 1 המצב של הכניסה השנייה
GI2C 0 המונה של הכניסה השנייה

את ההמרות ואת היחידות אתם מוצאים במילון readings של ההגדרות. ראו REST API.

הדוגמה הזו מורידה את 3 הימים האחרונים של מכשיר.

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 יש את הכלי get_device_history. הוא מקבל את אותן רמות ואת אותם bins.

צ'אט עם התמיכה