Zum Hauptinhalt springen

Bildschirmschoner-Upload

Laden Sie ein benutzerdefiniertes Bildschirmschoner-Bild hoch. Der Browser konvertiert ein PNG/JPG/Bild zuerst in das .ss-Format des Geräts; diese API empfängt diese vorkonvertierte Datei.

Die meisten Benutzer sollten die Bildschirmschoner-Seite im NM Monitor verwenden — sie übernimmt die Konvertierung automatisch. Diese Seite ist für Integratoren, die eigene Assets programmatisch bereitstellen möchten.


Zwei-Schritt-Ablauf


GET /api/update/screensaver/preflight

Fragt das Gerät, ob eine Datei mit size Bytes gespeichert werden kann. Das Gerät entscheidet, ob es zuerst Speicherplatz freigeben muss (durch Überschreiben des ältesten vorhandenen Bildschirmschoners).

Query-Parameter

NameErforderlichBedeutung
sizejaGröße in Bytes der .ss-Datei, die Sie hochladen möchten.

Response — Datei passt

{
"fileSize": 65536,
"fsFree": 262144,
"maxUploadable": 327680,
"action": "new",
"overwriteCount": 0,
"overwriteFiles": [],
"existingCount": 2,
"spaceAfter": 196608
}

Response — benötigt Überschreiben

{
"fileSize": 180000,
"fsFree": 60000,
"maxUploadable": 400000,
"action": "overwrite",
"overwriteCount": 2,
"overwriteFiles": [
{"name": "saver_320_240_001.ss", "size": 65536},
{"name": "saver_320_240_002.ss", "size": 72104}
],
"existingCount": 4,
"spaceAfter": 17640
}

Response — zu groß

{
"fileSize": 1500000,
"fsFree": 60000,
"maxUploadable": 400000,
"action": "reject",
"overwriteCount": 0,
"overwriteFiles": [],
"existingCount": 4,
"spaceAfter": 0
}
FeldTypBedeutung
fileSizeintegerEcho der angeforderten Upload-Größe.
fsFreeintegerAktuelle freie Bytes im Geräte-Dateisystem.
maxUploadableintegerFreie Bytes plus alle vorhandenen Bildschirmschoner-Bytes — die absolute Obergrenze.
actionstring"new", "overwrite" oder "reject".
overwriteCountintegerWie viele vorhandene Bildschirmschoner gelöscht werden, um Platz zu schaffen.
overwriteFilesobject[]Die Liste der zu entfernenden Dateien (name + size).
existingCountintegerVorhandene Bildschirmschoner-Dateien, die der aktuellen Bildschirmgröße entsprechen.
spaceAfterintegerVoraussichtliche freie Bytes nach dem Upload.

POST /api/update/screensaver

Lädt die eigentliche .ss-Datei als multipart/form-data hoch.

Request

  • Inhaltstyp: multipart/form-data
  • Dateierweiterung: muss auf .ss enden.
  • Maximale Größe: 200 KB.
  • Erste 2 Bytes der Datei: Magic 0x4E 0x53.

Response — Erfolg

{
"status": "ok",
"path": "/ss/saver_320_240_003.ss"
}

Response — Fehler

StatusBodyUrsache
400Only .ss files are accepted.Falsche Dateierweiterung.
400Invalid .ss file header.Magic-Bytes stimmen nicht überein.
413File too large (max 200 KB).Body überschreitet 200 KB.
500Failed to open file for writing.Dateisystemfehler.
500Write error.Dateisystemfehler beim Schreiben.

Beispiel

SIZE=$(stat -c%s saver_320_240_003.ss)
curl "http://192.168.1.42/api/update/screensaver/preflight?size=$SIZE"
# "action" prüfen; bei "reject" abbrechen
curl -X POST -F "file=@saver_320_240_003.ss" \
http://192.168.1.42/api/update/screensaver
warnung

Das Hochladen eines Bildschirmschoners pausiert kurz das Mining, während das Dateisystem flusht. Die Hashrate normalisiert sich innerhalb von ~1 Sekunde.