Περιγραφή

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

Συνίσταται χρήση μορφής χρόνου ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) ή YYYY-MM-DD HH:MM:SS με tz για συνέπεια.

Base URL

GET [base_url]/api/device_history.php

Query Παράμετροι

ΠαράμετροςΤύποςΥποχρεωτικήΠεριγραφή
keyStringΝαιAPI key για εξουσιοδότηση
device_idIntegerΝαι*ID συσκευής (*ή εναλλακτικά external_id)
external_idStringΌχιΕξωτερικό αναγνωριστικό συσκευής (idempotent id)
metricStringΌχιΌνομα μετρικής (π.χ. temperature, humidity). Προεπιλογή: όλες.
fromString (datetime)ΌχιΈναρξη περιόδου (π.χ. 2025-08-01T00:00:00Z)
toString (datetime)ΌχιΛήξη περιόδου (π.χ. 2025-08-08T23:59:59Z)
intervalStringΌχιΔιάστημα ομαδοποίησης (π.χ. 5m, 15m, 1h, 1d)
aggStringΌχιΣυνάρτηση: avg, min, max, last. Προεπιλογή: avg
tzStringΌχιΖώνη ώρας για parsing/format (π.χ. Europe/Athens)
limitIntegerΌχιΌριο εγγραφών (προεπιλογή 500, μέγιστο 5000)
offsetIntegerΌχιΜετατόπιση για σελιδοποίηση

Παράδειγμα Απόκρισης

{
  "device_id": 5021,
  "metric": "temperature",
  "from": "2025-08-01T00:00:00Z",
  "to": "2025-08-08T23:59:59Z",
  "interval": "1h",
  "aggregation": "avg",
  "points": [
    {"ts": "2025-08-08T09:00:00Z", "value": 24.1},
    {"ts": "2025-08-08T10:00:00Z", "value": 24.5},
    {"ts": "2025-08-08T11:00:00Z", "value": 25.0}
  ],
  "stats": {"min": 22.8, "max": 26.4, "avg": 24.6, "count": 720}
}

Περιγραφή Πεδίων

ΠεδίοΤύποςΠεριγραφή
pointsArrayΧρονικά σημεία με τιμές (timestamp + value)
statsObjectΣτατιστικά περιόδου (min, max, avg, count)

Κωδικοί Σφαλμάτων

HTTP CodeΠεριγραφή
200Επιτυχία
401Μη εξουσιοδοτημένη πρόσβαση
400Μη έγκυρες παράμετροι
404Συσκευή ή μετρική δεν βρέθηκε
500Εσωτερικό σφάλμα συστήματος

Παράδειγμα curl

curl -G "[base_url]/api/device_history.php" \
  --data-urlencode "key=MY_SECRET_API_KEY" \
  --data-urlencode "device_id=5021" \
  --data-urlencode "metric=temperature" \
  --data-urlencode "from=2025-08-01T00:00:00Z" \
  --data-urlencode "to=2025-08-08T23:59:59Z" \
  --data-urlencode "interval=1h" \
  --data-urlencode "agg=avg" \
  --data-urlencode "tz=Europe/Athens" \
  --data-urlencode "limit=500"