Files

4.8 KiB

counter_dashboard.py — API Documentation

Page

GET /

Renders the main dashboard HTML page (dashboard.html).


API Endpoints

GET /api/live-video

MJPEG streaming endpoint. Serves live frames from the path configured in LIVE_STREAM_FRAME_PATH (default /dev/shm/jetson-counter/live_frame.jpg) as multipart/x-mixed-replace.

Response: JPEG stream with --frame boundary delimiters.


GET /api/current-batch

Returns the currently active batch's data read from current_batch.json.

Success response:

{
  "success": true,
  "counting_date": "2024-01-01",
  "batch_number": 12,
  "count": 342,
  "start_time": "2024-01-01T14:30:00",
  "last_detection_time": "2024-01-01T14:35:00"
}

Error response (no active batch, 200):

{
  "success": false,
  "error": "No active batch",
  "count": 0,
  "batch_number": null,
  "counting_date": null
}

GET /api/previous-batch

Returns the most recently completed batch from the batches database table, with computed duration_minutes.

Success response:

{
  "success": true,
  "date": "2024-01-01",
  "batch_number": 11,
  "count": 287,
  "start_time": "2024-01-01T14:00:00",
  "end_time": "2024-01-01T14:27:00",
  "duration_minutes": 27.0
}

GET /api/summary

Returns today, yesterday, and all-time aggregate statistics plus average per day and best day.

Success response:

{
  "today": {
    "date": "2024-01-01",
    "total_count": 1500,
    "total_batches": 8
  },
  "yesterday": {
    "date": "2023-12-31",
    "total_count": 1342,
    "total_batches": 7
  },
  "all_time": {
    "grand_total": 50000,
    "grand_batches": 260,
    "total_days": 45
  },
  "average_per_day": 1111.1,
  "best_day": {
    "date": "2023-12-15",
    "count": 2100
  }
}

GET /api/daily-data

Returns daily summary rows for charting.

Query params:

Param Type Default Description
days int 30 Number of days to look back

Response:

[
  {
    "date": "2024-01-01",
    "total_count": 1500,
    "total_batches": 8,
    "avg_per_batch": 187.5
  }
]

GET /api/day-detail/<date>

Returns all batch records for a specific counting_date along with summary totals.

Path params:

Param Type Description
date string Date in YYYY-MM-DD

Success response:

{
  "date": "2024-01-01",
  "total_count": 1500,
  "total_batches": 8,
  "total_duration_minutes": 216.0,
  "avg_duration_minutes": 27.0,
  "batches": [
    {
      "batch_number": 1,
      "count": 187,
      "start_time": "2024-01-01T08:00:00",
      "end_time": "2024-01-01T08:27:00",
      "duration_minutes": 27.0
    }
  ]
}

GET /api/recent-batches

Returns the most recent batches with computed durations.

Query params:

Param Type Default Description
limit int 10 Max number of batches to return

Response:

[
  {
    "date": "2024-01-01",
    "batch_number": 8,
    "count": 213,
    "start_time": "2024-01-01T16:30:00",
    "end_time": "2024-01-01T16:58:00",
    "duration_minutes": 28.0
  }
]

GET /api/available-dates

Returns all dates with data from the daily_summaries table, ordered by date descending.

Response:

[
  {
    "date": "2024-01-01",
    "total_count": 1500,
    "total_batches": 8
  }
]

Export Endpoints (XLSX)

GET /api/export-daily-csv

Exports batch detail records for the last N days as an .xlsx file.

Query params:

Param Type Default Description
days int 30 Number of days to look back

Response: XLSX file download with columns: Date, Batch #, Count, Start Time, End Time, Duration (min).

Filename format: {SITE_NAME}_daily_records_{timestamp}.xlsx


GET /api/export-day-csv/<date>

Exports all batch records for a single date as an .xlsx file.

Path params:

Param Type Description
date string Date in YYYY-MM-DD

Response: XLSX file download with columns: Batch Number, Count, Start Time, End Time, Duration (min).

Filename format: {SITE_NAME}_day_detail_{date}.xlsx


Error Handling

All endpoints return {"success": false, "error": "<message>"} with HTTP 500 on unexpected errors. Database-unavailable errors (sqlite3.OperationalError) return HTTP 200 with an empty/default data structure. The /api/live-video endpoint returns HTTP 503 if the frame file is not found.