Skip to content

System Overview

Complete overview of the S-MA-C-H system, components, and the artwork monitoring workflow.

Components

Web Application (Angular)

Users: All roles Purpose: Central management and monitoring platform

Key Functions:

  • Manage artworks (categorized with tags)
  • Configure environmental monitoring thresholds per artwork
  • View active monitorings (stationary + transport)
  • Monitor real-time alerts and events
  • View historical monitoring data
  • Analyze sensor data
  • Generate artwork passports (v1.0.0)

StaRT Mobile Application (React Native)

Users: Administrators and Super-Admins (on-site) Developer: Jay Purpose: On-site monitoring execution

Key Functions:

  • View Ready artworks
  • Setup monitoring: Select type (stationary/transport), auto-detect dataloggers, configure thresholds
  • Start monitoring: Begin recording with GPS + timestamp
  • Stop monitoring: End recording with GPS + timestamp
  • Push events to backend (start, alerts, stop)
  • Capture photos during monitoring

Backend API (Spring Boot)

Technology: Java, Spring Boot, MongoDB Purpose: Central data and business logic

Key Functions:

  • RESTful API for web and mobile apps
  • Data management (MongoDB)
  • File storage (MinIO/S3)
  • Authentication (Keycloak integration)
  • Alert processing
  • Event-based workflow
  • Artwork passport generation (v1.0.0)

IoT Dataloggers

Manufacturer: AES Techno Purpose: Environmental monitoring

Hardware Setup:

  • 1 Logger (box) connects via plug to 1 Sensor
  • 1 Sensor contains 1-3 captors depending on model:
    • Temperature (°C)
    • Humidity (% RH)
    • Accelerometer (3-axis, raw int16 stored / m/s² displayed) - indicates transport monitoring
  • Datalogger = Logger + Sensor (connected pair)

Data Flow:

  1. Configuration: Administrator/Super-Admin (StaRT) → Bluetooth → Datalogger
  2. Recording: Datalogger collects data locally
  3. Alerts: Datalogger → Bluetooth → StaRT → Backend API → Web App
  4. Upload: Datalogger → USB → Computer → S3

IoT Gateways (v0.4.0)

Purpose: Cellular relay for transport monitoring

Hardware Setup:

  • Installed in transport vehicle (cabin or trailer)
  • Collects data from nearby Dataloggers via Bluetooth
  • Relays data to Backend API via cellular network

Gateway Assignment:

  • During monitoring Setup, gateways are assigned with a position (cabin or trailer)
  • Each datalogger can optionally reference a gateway it connects through
  • Gateways are managed in the Inventory alongside loggers, sensors, and packaging

Artwork Model

An Artwork is the central resource in the system. Each artwork can have multiple monitoring sessions over time.

Artwork Structure

Organization > Artwork (with tags)

Artwork:
  status: draft > ready > standby > monitoring > analysing > archived
  ├── inclosure (static protection in museum/storage)
  ├── crate (transport protection)
  ├── Checklist (common monitoring tasks)
  ├── Base Configuration (thresholds + frequency for all devices)
  ├── Monitorings [0-N] (history of all monitoring sessions)
  │   ├── Monitoring 1 (completed) - stationary
  │   ├── Monitoring 2 (completed) - transport
  │   └── Monitoring 3 (in_progress) - Active monitoring
  ├── (v1.0.0) S3 Data Space (photos, uploads, analysis, documents)
  └── (v1.0.0) Passport (synthesis of all analyses)

Key Concepts:

  • 1 Artwork can have multiple Monitorings over time (history)
  • Only 1 active Monitoring per Artwork at any time
  • Monitoring types:
    • stationary: Museum/storage monitoring (uses inclosure)
    • transport: Movement monitoring (uses crate, optionally inclosure inside depending on artwork)
  • Auto-detection: If accelerometer sensor detected → suggests transport type

API Path Parameter: Reference vs ID

The API uses the artwork reference (URL-safe slug like bayeux-tapestry-replica) in path parameters, not the MongoDB ObjectId. This makes URLs more readable and stable:

  • GET /artworks/bayeux-tapestry-replica
  • GET /artworks/674ebf66cf6f5c456e1e27a8

The reference field is unique per organization and serves as the primary identifier in API paths.

Inventory Items

All packaging and equipment are managed in the Inventory (4 types):

  • Logger (box) - IMEI unique identifier
  • Sensor - IMEI unique identifier
    • Contains 1-3 captors (temperature, humidity, accelerometer)
  • Gateway (v0.4.0) - Cellular relay device (identity unique identifier)
    • Installed in transport vehicle (cabin or trailer)
    • Relays datalogger data via cellular network
  • Packaging:
    • inclosure: Static protection (associated with artwork, optional in crate during transport)
    • crate: Transport protection (used only for transport monitoring)

Datalogger Association:

  • Datalogger = Logger + Sensor (connected pair)
  • NOT stored in inventory as separate entity
  • Extracted from active monitorings (auto-detected by StaRT during Setup)
  • Each datalogger can optionally have its own config that overrides the monitoring-level base configuration
  • Each datalogger can optionally reference a gateway it connects through (v0.4.0)
  • Loggers and Sensors can show "in use" status in lists (link to Monitoring → Artwork)

Gateway Assignment (v0.4.0):

  • Gateways are assigned to a monitoring with a position (cabin or trailer)
  • Stored in Monitoring.gateways[] as GatewayAssignment records
  • Dataloggers can reference their gateway via Datalogger.gateway field

Inventory is shared across artworks (not sub-resources). Items are sold by S-MA-C-H to organizations (v1.0.0).

Configuration Inheritance

Configuration follows a 3-level inheritance chain:

Artwork.configMonitoring.configDatalogger.config

  1. Artwork.config: Base configuration defined on the artwork (default thresholds)
  2. Monitoring.config: Copied from artwork at Setup, can be adjusted. Serves as base for all dataloggers in this monitoring.
  3. Datalogger.config (optional): Per-datalogger override. If null, inherits Monitoring.config. If set, completely overrides it for that specific datalogger.

Use case: Different sensor positions on an artwork may need different thresholds (e.g., stricter temperature range near fragile embroidery, more sensitive vibration thresholds at edges).


Artwork States

Artwork status is determined by its active monitoring:

StateDescriptionBased on MonitoringWhoCan Cancel?
draftBeing configuredNo monitoringAdministrator✅ Yes
readyConfigured, no active monitoringNo active monitoring OR last monitoring completedAdministrator✅ Yes (only when no active monitoring)
standbyMonitoring created, waiting for Start1 monitoring in pendingSystem (after Setup)❌ No (monitoring active)
monitoringRecording active1 monitoring in in_progressSystem (after Start)❌ No (monitoring active)
analysing (v1.0.0)Data uploaded, awaiting analysis1 monitoring in uploadedSystem (after data upload)❌ No
archivedArtwork no longer monitoredAll monitorings completedAdministrator/Super-Admin❌ No
cancelledArtwork cancelled-Administrator/Super-Admin-

Cancellation Restrictions

An artwork can only be cancelled when in draft or ready state. Once a monitoring is active (standby, monitoring, or analysing), the artwork cannot be cancelled to avoid disrupting active monitoring sessions. The monitoring must reach completed state first.

One Active Monitoring Per Artwork

An artwork can only have one active monitoring at a time (either pending or in_progress). Previous monitorings must reach ended or completed before creating a new one.


Monitoring States

Each monitoring session is auto-created by StaRT Setup and progresses through analysis:

v0.3.0 Scope

In v0.3.0, monitoring status stops at ended. The uploaded and completed statuses, along with the analysing artwork status, are planned for v1.0.0 with S3 data upload and expert analysis features.

StateDescriptionData CollectedWho
pendingMonitoring created, waiting for StartType (stationary/transport), dataloggers detected, config overriddenAdministrator/Super-Admin (StaRT Setup)
in_progressRecording active, collecting eventsstart event, alerts, positions (if transport)Administrator/Super-Admin (StaRT Start)
endedRecording stoppedstop eventAdministrator/Super-Admin (StaRT Stop)
uploaded (v1.0.0)Data uploaded to S3, awaiting analysisS3 data referenceSystem (USB upload)
completed (v1.0.0)Expert analysis completeAnalysis, comments, chartsAdministrator/Super-Admin (Web)

Monitoring Data Collection by State

pending (Phase 1 - Setup):

  • Type: stationary OR transport
  • Gateways: optional list of gateway assignments with position (v0.4.0)
  • Dataloggers: auto-detected list (Logger + Sensor pairs, optionally linked to a gateway)
  • Configuration: overridden or default from Artwork.baseConfig

in_progress (Phase 2 - Start → Events → Stop):

  • start event: timestamp + GPS location
  • alert events: threshold violations (temperature, humidity, accelerometer) with sensor type + values (v0.4.0)
  • position events: GPS tracking during journey (transport only), with optional telemetry (gyroscope, accelerometer, speed) (v0.4.0)
  • stop event: timestamp + GPS location

uploaded (Phase 3 - Data Upload):

  • S3 data reference (uploaded via USB)
  • Full sensor data available in S3

completed (Phase 4 - Expert Analysis):

  • Expert comments
  • Data analysis charts
  • Artwork passport updates (v1.0.0)
  • Reports

Monitoring Cannot Be Restarted

Once Stop is pressed, the monitoring enters ended state and CANNOT be restarted. To create a new monitoring session, use Setup again in StaRT to create a new monitoring.


Monitoring Workflow

Complete lifecycle from creation to analysis.

Phase 1: Setup (Administrator/Super-Admin using StaRT)

On-Site - Using StaRT Mobile App

Two paths to Start:

Path 1 - New Monitoring (Setup first):

Auth → Org → GET /artworks?status=ready → Select Artwork → Setup → Start

Path 2 - Resume Monitoring (Start later):

Auth → Org → GET /artworks?status=standby → Select Artwork → Start

Setup Actions (Path 1 only):

  1. Authenticate in StaRT app
  2. Select organization (if multiple in JWT)
  3. GET /artworks?status=ready → List artworks ready for setup
  4. Select Artwork
  5. Press "Setup" button:
    • Select monitoring type: stationary (museum) OR transport (movement)
      • Auto-suggest transport if accelerometer sensor detected
    • Auto-detect dataloggers via Bluetooth
      • Displays list of detected Logger+Sensor pairs (dataloggers)
    • Review/adjust configuration from Artwork.baseConfig:
      • Temperature thresholds
      • Humidity thresholds
      • Vibration thresholds
      • Recording frequency
    • Push configuration to dataloggers (via Bluetooth)
  6. POST /artworks/{reference}/monitorings → Creates monitoring
    • Response: { "id": "monitoring-uuid", "status": "pending", "type": "transport", ... }

Result (both paths):

  • Monitoring object displayed (dataloggers, config)
  • StaRT stores monitoring-uuid in session
  • Ready for Start button
  • Artwork status: ready → standby (Path 1 only)

Monitoring Type Selection

  • stationary: Museum/storage monitoring (uses inclosure protection)
  • transport: Movement monitoring (uses crate, optionally inclosure inside depending on artwork)
  • Auto-suggestion: If accelerometer sensor detected, StaRT suggests transport type

Phase 2: Start (Administrator/Super-Admin using StaRT)

On-Site - Monitoring Location

Common for both paths:

Display Monitoring → Press "Start" Button

Date/Time Format: Epoch Milliseconds

All date/time fields in the API (date, created, updated) are serialized as epoch milliseconds (Unix timestamp in ms), not ISO 8601 strings. Example: 2025-01-08T10:00:00Z1736330400000

  1. Press "Start" button:
    • Start dataloggers recording (Bluetooth command)
    • Push start event to API:
      json
      POST /artworks/{reference}/monitorings/events
      {
        "type": "start",
        "severity": "info",
        "date": 1736330400000,
        "location": { "latitude": 49.276, "longitude": -0.702 },
        "sourceType": "monitoring",
        "source": "monitoring-uuid"
      }

Result:

  • Monitoring status: pending → in_progress
  • Artwork status: standby → monitoring
  • StaRT opens session with selected monitoring
  • Dataloggers actively recording

Phase 3: During Monitoring (Real-time Events)

During monitoring, StaRT app pushes events to backend:

All events use unified endpoint:

POST /artworks/{reference}/monitorings/events

Source-Based Routing:

  • Backend uses sourceType + source to find the correct monitoring
  • No need for monitoringId in payload

Event Types:

  1. Alert Events (threshold violations from sensor):
json
{
  "type": "alert",
  "severity": "warning",
  "date": 1736350200000,
  "location": { "latitude": 48.856, "longitude": 2.352 },
  "sourceType": "sensor",
  "source": "IMEI-sensor-123456789",
  "value": 25.5,
  "message": "25.5 > 22"
}

Backend finds active monitoring using this sensor IMEI

  1. Position Events (GPS tracking from logger, transport only):
json
{
  "type": "position",
  "severity": "info",
  "date": 1736350500000,
  "location": { "latitude": 48.856, "longitude": 2.352 },
  "sourceType": "logger",
  "source": "IMEI-logger-987654321"
}

Backend finds active monitoring using this logger IMEI

  1. Notification Events (v1.0.0) (user annotations):
json
{
  "type": "notification",
  "severity": "info",
  "date": 1736350800000,
  "location": { "latitude": 48.856, "longitude": 2.352 },
  "sourceType": "user",
  "source": "admin@bayeux.test",
  "message": "Rest stop",
  "tag": "Road damaged"
}

Backend broadcasts notification to all users in the organization

Web App Monitoring:

  • Administrator/Super-Admin: View real-time alerts, respond if needed
  • Viewers: View real-time alerts (read-only)

Alert Flow:

Datalogger detects threshold breach
    ↓ Bluetooth
StaRT Mobile receives alert
    ↓ API
Backend processes event
    ↓ SSE
Web App displays notification
Administrator/Viewers notified

Phase 4: Stop (Administrator/Super-Admin using StaRT)

On-Site - End of Monitoring

Administrator/Super-Admin:

  1. During active session → Press "Stop" button:
    • Stop dataloggers recording (Bluetooth command)
    • Push stop event to API:
      json
      POST /artworks/{reference}/monitorings/events
      {
        "type": "stop",
        "severity": "info",
        "date": 1736373600000,
        "location": { "latitude": 51.507, "longitude": -0.127 },
        "sourceType": "monitoring",
        "source": "monitoring-uuid"
      }

Result:

  • Monitoring status: in_progress → ended
  • Artwork status: monitoring → ready
  • StaRT closes session
  • ⚠️ Monitoring CANNOT be restarted

Monitoring Cannot Be Restarted

Once Stop is pressed, the monitoring is finalized and CANNOT be restarted. To create a new monitoring session for the same artwork, return to Phase 1 (Setup) to create a new monitoring.


Phase 5: Data Upload (USB → S3)

Later - Via Computer

Administrator/Super-Admin:

  1. Connect datalogger to computer via USB
  2. Small routing tool uploads data to S3:
    • Path: organization/artwork/monitoring/datalogger-IMEI/
    • Data includes: sensor readings, timestamps, raw data
  3. S3 reference stored in monitoring

Result:

  • Monitoring status: ended → uploaded
  • Artwork status: ready → analysing

Phase 6: Analysis (Administrator/Super-Admin via Web App)

Web Application

Administrator (own org) or Super-Admin (all orgs):

  1. View artwork with monitoring in Uploaded status
  2. Download sensor data from S3 (using reference in monitoring)
  3. Analyze:
    • Temperature, humidity, vibration charts
    • Threshold breaches
    • Statistics (min, max, average)
    • GPS route visualization (if transport)
    • Photos during monitoring
  4. Add expert comments to monitoring
  5. Update artwork passport (v1.0.0):
    • Risk score
    • Monitoring history
  6. Mark monitoring as Completed
  7. Generate reports (v1.0.0)

Result:

  • Monitoring status: uploaded → completed
  • Artwork status: analysing → ready

Same Analysis Permissions

Both Administrator and Super-Admin can perform analysis. The only difference is scope:

  • Administrator: Can analyze their organization's artworks
  • Super-Admin: Can analyze any organization's artworks

Creating Additional Monitorings

An artwork can have multiple monitoring sessions over time (history).

To create a new monitoring:

  1. Ensure artwork is in ready status (no active monitoring)
  2. Return to Phase 1 (Setup)
  3. Press "Setup" in StaRT app
  4. This creates a NEW monitoring for the same artwork

Example: Bayeux Tapestry Artwork

Artwork: "Bayeux Tapestry"

  • inclosure: Custom climate-controlled protection
  • crate: Large transport crate
  • Base Configuration: Temp 15-25°C, Humidity 40-60%, Accelerometer ±16384 raw (≈±10 m/s² at ±2g), 5-min interval

Monitorings (created over time for same artwork):

  1. Stationary Monitoring (Museum storage, December 2024):
    • Type: stationary
    • Status: completed
    • Duration: 30 days
  2. Transport Monitoring - Way Out (January 8, 2025):
    • Type: transport
    • Status: completed
    • Route: Bayeux → London
  3. Transport Monitoring - Way Back (later date):
    • Type: transport
    • Status: in_progress
    • Route: London → Bayeux

Result: 1 Artwork with 3 separate Monitoring sessions over time

Artwork Reusability

The Artwork object (with configuration and equipment references) can be reused for multiple monitoring sessions. Once a monitoring is completed, create a new monitoring session by using Setup again.


Next Steps

Science & Mechanics in Conservation of Heritage