ArduinoPlayground/server
2026-10-24 22:38:23 +02:00
..
public Migrate payload storage to SQLite 2026-10-24 22:38:23 +02:00
scripts Add DS18B20 payload sketch 2026-10-24 21:44:02 +02:00
src Migrate payload storage to SQLite 2026-10-24 22:38:23 +02:00
.dockerignore
Dockerfile
nginx.conf
package-lock.json
package.json
README.md Migrate payload storage to SQLite 2026-10-24 22:38:23 +02:00

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.