Перейти к основному содержимому

Загрузка заставки (Screensaver)

Загрузка пользовательского изображения заставки. Браузер сначала преобразует PNG / JPG / изображение в формат .ss устройства; это API принимает уже преобразованный файл.

Большинству пользователей следует использовать страницу Screensaver в NM Monitor — она выполняет преобразование автоматически. Эта страница предназначена для интеграторов, которые хотят программно отправлять собственные ресурсы.


Двухэтапный процесс


GET /api/update/screensaver/preflight

Запрашивает устройство, можно ли сохранить файл размером size байт. Устройство определяет, нужно ли сначала освободить место (путём перезаписи самой старой существующей заставки).

Параметры запроса

ИмяОбязательныйЗначение
sizeдаРазмер в байтах файла .ss, который вы собираетесь загрузить.

Ответ — файл помещается

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

Ответ — требуется перезапись

{
"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
}

Ответ — слишком большой

{
"fileSize": 1500000,
"fsFree": 60000,
"maxUploadable": 400000,
"action": "reject",
"overwriteCount": 0,
"overwriteFiles": [],
"existingCount": 4,
"spaceAfter": 0
}
ПолеТипЗначение
fileSizeintegerЭхо запрошенного размера загрузки.
fsFreeintegerТекущий объём свободного места на ФС устройства.
maxUploadableintegerСвободное место плюс все существующие байты заставок — абсолютный верхний предел.
actionstring"new", "overwrite" или "reject".
overwriteCountintegerСколько существующих заставок будет удалено для освобождения места.
overwriteFilesobject[]Список файлов, которые будут удалены (name + size).
existingCountintegerСуществующие файлы заставок, соответствующие текущему размеру экрана.
spaceAfterintegerПрогнозируемый объём свободного места после завершения загрузки.

POST /api/update/screensaver

Загружает фактический файл .ss как multipart/form-data.

Запрос

  • Тип содержимого: multipart/form-data
  • Расширение файла: должно заканчиваться на .ss.
  • Макс. размер: 200 КБ.
  • Первые 2 байта файла: магическая сигнатура 0x4E 0x53.

Ответ — успех

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

Ответ — ошибка

СтатусТелоПричина
400Only .ss files are accepted.Неверное расширение файла.
400Invalid .ss file header.Магические байты не совпадают.
413File too large (max 200 KB).Тело превысило 200 КБ.
500Failed to open file for writing.Ошибка файловой системы.
500Write error.Ошибка файловой системы при записи.

Пример

SIZE=$(stat -c%s saver_320_240_003.ss)
curl "http://192.168.1.42/api/update/screensaver/preflight?size=$SIZE"
# проверьте "action"; если "reject", прервите
curl -X POST -F "file=@saver_320_240_003.ss" \
http://192.168.1.42/api/update/screensaver
warning

Загрузка заставки ненадолго приостанавливает майнинг на время сброса файловой системы. Хэшрейт возвращается к норме в течение ~1 секунды.