Μετάβαση στο περιεχόμενο

Λήψη ιστορικών δεδομένων

Τα ιστορικά δεδομένα κάθε συσκευής είναι σε αρχεία κειμένου (datalogs) στον διακομιστή συσκευών της. Κάθε αρχείο καλύπτει μία ημέρα, έναν μήνα ή όλο το ιστορικό. Χρειάζεστε δικαίωμα ανάγνωσης στη συσκευή.

Για εξαγωγή χωρίς κώδικα, χρησιμοποιήστε τις αναφορές της εφαρμογής. Δείτε τα δεδομένα σας.

  1. Βρείτε τον διακομιστή της συσκευής. Καλέστε το get_device_info.php και διαβάστε το πεδίο device_server. Δείτε το REST API.
  2. Βρείτε τη σειρά των στηλών. Καλέστε το get_device_definitions.php?family_id=<οικογένεια> και διαβάστε τα 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 <επίπεδο>.<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 Μήνα (έτος - 1970) * 12 + (μήνας - 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. Δέχεται τα ίδια επίπεδα και bin.

Chat με την υποστήριξη