← Back to API Reference
API: Sensor History
Access historical sensor data from your Annaboto — temperature, humidity, and water levels over time. Use raw readings for detailed recent data, or the summary endpoint for efficient full-grow charting.
GET /sensor_history
Returns raw sensor readings from the device's SQLite database. Best for recent, high-resolution data (last 24 hours).
Endpoint:
GET http://<device-ip>:8080/annaboto/api/sensor_history
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
integer | 500 | Number of readings to return (most recent first). Keep under 2000 to avoid timeouts. |
grow_id |
string | current grow | Filter by grow. Use a specific ID, "current" for active grow, or "all" for unfiltered. |
start |
ISO 8601 | — | Start of time window (e.g., 2026-05-01T00:00:00Z) |
end |
ISO 8601 | — | End of time window |
Example Request
# Last 288 readings (~24 hours at 5-min intervals)
curl "http://192.168.0.103:8080/annaboto/api/sensor_history?limit=288"
# Readings for the active grow only
curl "http://192.168.0.103:8080/annaboto/api/sensor_history?grow_id=current&limit=500"
Response Format
Array of reading objects, most recent first:
[
{
"time": "2026-05-16T14:30:00Z",
"temperature": 23.1,
"humidity": 48.5,
"fresh_water": 1.0,
"grow_water": 0.85,
"waste_water": 0.02
},
...
]
Performance note: Response times can vary (1–10 seconds) depending on device CPU load. For charting full-grow data, use the
/sensor_history/summary endpoint instead.
GET /sensor_history/summary
Returns pre-computed hourly averages for the entire grow period. Designed for fast chart rendering — responds in under 500ms regardless of grow length.
Endpoint:
GET http://<device-ip>:8080/annaboto/api/sensor_history/summary
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
grow_id |
string | current grow | Filter by grow. Accepts specific ID or "current". |
start |
ISO 8601 | — | Optional start of time window |
end |
ISO 8601 | — | Optional end of time window |
Example Request
curl "http://192.168.0.103:8080/annaboto/api/sensor_history/summary"
Response Format
{
"total_hours": 1800,
"grow_start": "2026-03-01T00:00:00Z",
"hourly": [
{
"hour": "2026-03-01T00:00:00Z",
"avg_temperature": 22.5,
"min_temperature": 21.8,
"max_temperature": 23.1,
"avg_humidity": 45.2,
"min_humidity": 43.0,
"max_humidity": 47.5,
"avg_fresh_water": 1.0,
"avg_grow_water": 0.9,
"avg_waste_water": 0.0,
"sample_count": 12
},
...
]
}
How It Works
- The device maintains a
hourly_summarySQLite table that is updated every hour via a background timer. - On first startup after the feature was added, existing sensor data is backfilled into the summary table.
- The endpoint reads directly from this pre-computed table — no aggregation at request time.
- A 75-day grow produces ~1800 rows (~200KB JSON), transferring in under 1 second.
No Active Grow
If no grow is active and no grow_id is specified, the response returns:
{
"total_hours": 0,
"grow_start": null,
"hourly": []
}
Recommended Usage Pattern
For a complete chart experience, make two parallel requests:
GET /sensor_history/summary— full grow at hourly resolution (fast, pre-computed)GET /sensor_history?limit=288— last 24 hours at full resolution (5-minute intervals)