ArduinoPlayground/server/README.md

1.7 KiB

Arduino Playground-server

Compose-stacken leverer:

  • webdashboard på /;
  • REST API på /api.

Start

Opret den lokale .env fra WiFi-status-sketchens secrets og start stacken:

npm --prefix server run configure
docker compose up -d --build

Med standardopsætningen åbnes dashboardet på http://localhost:8152.

API

Læsning er offentlig:

GET /api/health
GET /api/activity
GET /api/payloads?limit=100&offset=0
GET /api/payloads/count
GET /api/payloads/:id

Payloads gemmes i SQLite med WAL-mode. Liste-endpointet returnerer de nyeste 100 records som standard, understøtter limit (maks. 1000) og offset, og sender det samlede antal i X-Total-Count-headeren. En eksisterende /data/payloads.json migreres automatisk, når SQLite-databasen oprettes, og fjernes efter en vellykket migrering.

Skrivning kræver Authorization: Bearer <API_BEARER_TOKEN>:

POST   /api/payloads
PATCH  /api/payloads/:id
DELETE /api/payloads/:id

Eksempel på body til POST:

{
  "topic": "r4/status",
  "payload": {
    "temperature": 22.4,
    "online": true
  }
}

Boardet bør identificere sig på alle kald. Aktivitetsdashboardet prioriterer X-Device-ID, derefter X-Client-Name og til sidst klientens IP-adresse:

X-Device-ID: uno-r4-wifi-01
X-Client-Name: wifi-status-sketch

Dashboardets egne forespørgsler markeres internt og gemmes ikke i aktivitetsloggen. GET-kald uden X-Device-ID eller X-Client-Name udelades også, så anonyme dashboard- og overvågningskald ikke overdøver boardtrafikken.

WiFi-oplysningerne ligger kun i den lokale .env til brug for den kommende board-sketch. De sendes ikke til browseren eller API-klienter.