User Tools

Site Tools


timi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
timi [2026/04/26 18:21] – Replaced ASCII architecture diagram with drawio SVG; updated dashboard description to sync server timitimi [2026/04/27 15:49] (current) – Update main page: top changelog, v1.5 sidecars, inline gopro timi
Line 6: Line 6:
  
 TIMI is the combined weekend-hackathon brainchild of TAMI folks building an **audio-visual inventory dataset** for the space — and eventually a **space-aware inventory tagging, logging and querying system**. It is critical infrastructure. It is also complete and utter bullshit. This is a hackerspace. TIMI is the combined weekend-hackathon brainchild of TAMI folks building an **audio-visual inventory dataset** for the space — and eventually a **space-aware inventory tagging, logging and querying system**. It is critical infrastructure. It is also complete and utter bullshit. This is a hackerspace.
 +
 +===== Recent Changes =====
 +
 +  * **2026-04-27** — Rerun-based **dataset viewer** for browsing local and remote captures; agent tmux workflow for dashboard, viewer, and GoPro services.
 +  * **2026-04-27** — **gopro-scicam merged inline** from submodule to simplify builds and eliminate sync friction.
 +  * **2026-04-26** — **Unified sidecar schema v1.5** across Android and GoPro: ''qr_item_id'', ''capture_id'', ''device_name'', and ''device_id'' now present everywhere.
 +  * **2026-04-26** — **Dashboard enhancements**: gallery and sidecar preview, ''capture_alert'' feedback, beacon-based auto-discovery sync.
 +  * **2026-04-25** — **GoPro station mode**: split-screen live preview + last capture; QR debounce (2× consecutive); real camera settings (ISO, shutter, aperture, AE/AWB) queried for sidecars.
 +
 +Full history: [[timi:changelog|TIMI Changelog]]
  
 ===== What is TIMI? ===== ===== What is TIMI? =====
Line 39: Line 49:
   * **Photo capture** with CameraX, saved to ''Pictures/SciCam/''.   * **Photo capture** with CameraX, saved to ''Pictures/SciCam/''.
   * **Video recording** — toggle with ''POST /record'', saved to ''Movies/SciCam/''.   * **Video recording** — toggle with ''POST /record'', saved to ''Movies/SciCam/''.
-  * **JSON sidecars** — every capture gets a ''.json'' buddy with EXIF, camera settings, item ID, tags, and timestamp. Stored in ''Documents/SciCam/''.+  * **JSON sidecars v1.5** — every capture gets a ''.json'' buddy with EXIF, camera settings, ''qr_item_id'', ''capture_id'', ''device_name'', ''device_id'', tags, and timestamp. Stored in ''Documents/SciCam/''.
   * **QR auto-capture** — point the camera at a QR code, the app snaps automatically. Great for rapid inventory sweeps.   * **QR auto-capture** — point the camera at a QR code, the app snaps automatically. Great for rapid inventory sweeps.
   * **SSE stream** — live events at ''/events'' so the dashboard sees captures in real-time.   * **SSE stream** — live events at ''/events'' so the dashboard sees captures in real-time.
Line 49: Line 59:
   * **Motion-based auto-capture** — monitors the live preview stream for structural change inside a masked region. Only fires when something actually stays on the table (ignores hands passing through). Adjustable motion and structural thresholds.   * **Motion-based auto-capture** — monitors the live preview stream for structural change inside a masked region. Only fires when something actually stays on the table (ignores hands passing through). Adjustable motion and structural thresholds.
   * **Background sync** — on startup, pulls every photo/video from the GoPro SD card that hasn't been downloaded yet. Persists sync history so clearing local files doesn't cause re-downloads.   * **Background sync** — on startup, pulls every photo/video from the GoPro SD card that hasn't been downloaded yet. Persists sync history so clearing local files doesn't cause re-downloads.
-  * **SciCam-compatible sidecars** — writes the same ''*.json'' format as the Android app (item_id, tags, timestamp, camera settings, origin, source="gopro"). Includes a background QR-retry hunter that tries ZBar, CLAHE, adaptive threshold, and morphological close to read tricky codes.+  * **SciCam-compatible sidecars** — writes the same ''*.json'' format as the Android app (qr_item_id, capture_id, tags, timestamp, camera settings, origin, source="gopro", device_name, device_id). Includes a background QR-retry hunter that tries ZBar, CLAHE, adaptive threshold, and morphological close to read tricky codes.
   * **Live QR detection** — scans preview frames and downloaded images; updates ''item_id'' automatically when a code is found.   * **Live QR detection** — scans preview frames and downloaded images; updates ''item_id'' automatically when a code is found.
   * **Multicast beacons** — broadcasts UDP presence just like SciCam, so the Rust dashboard can discover it.   * **Multicast beacons** — broadcasts UDP presence just like SciCam, so the Rust dashboard can discover it.
Line 95: Line 105:
 | POST | /capture | Trigger photo | | POST | /capture | Trigger photo |
 | POST | /record | Toggle video recording | | POST | /record | Toggle video recording |
-| POST | /settings | Set item_id, tags, lock, debug, capture_alert |+| POST | /settings | Set qr_item_id, tags, lock, debug, capture_alert |
 | POST | /auto-capture | Enable/disable QR auto-capture | | POST | /auto-capture | Enable/disable QR auto-capture |
-| GET | /status | Current state (item_id, tags, locked, last_qr, ...) |+| GET | /status | Current state (qr_item_id, tags, locked, last_qr, ...) |
 | GET | /captures | List all images/videos with sidecar status | | GET | /captures | List all images/videos with sidecar status |
 | GET | /photo/last | Download latest JPEG | | GET | /photo/last | Download latest JPEG |
Line 122: Line 132:
 │   ├── go-scicam/    # Go CLI (submodule) │   ├── go-scicam/    # Go CLI (submodule)
 │   ├── web-scicam/   # Vanilla JS static client (submodule) │   ├── web-scicam/   # Vanilla JS static client (submodule)
-│   ── gopro-scicam/ # Flask GoPro bridge (submodule) — KEY PLAYER+│   ── gopro-scicam/ # Flask GoPro bridge (inline, was submodule) — KEY PLAYER
 ├── api_spec.yaml     # OpenAPI 3 source of truth ├── api_spec.yaml     # OpenAPI 3 source of truth
 ├── timi.conf         # Dashboard registry & config ├── timi.conf         # Dashboard registry & config
timi.1777227697.txt.gz · Last modified: by timi