From b601ddeb9bdccfa0f0e6096be7693908108ca3ed Mon Sep 17 00:00:00 2001 From: Michael Sauer Date: Sat, 12 Sep 2026 02:51:08 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Fix-Runde=201=20f=C3=BCr=20Task=207=20-?= =?UTF-8?q?=20busy-Beschreibung=20korrigieren,=20fw=5Fupdate-Fehlerantwort?= =?UTF-8?q?=20dokumentieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++-- bruno/ninlight.yml | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 11874ef..ddfe0b0 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,10 @@ Netz-Update über die REST-API: -d '{"command":{"type":"fw_update","url":"http://:8000/pfad/zur/ninlight_evk_ota.img"}}' Antwort `202 {"status":"updating"}` startet den Download im Hintergrund; ein per HTTP-Server bereitgestelltes -`_ota.img` reicht (z.B. `python3 -m http.server 8000`). Läuft der Trailer- bzw. Hash-Check durch, resettet die +`_ota.img` reicht (z.B. `python3 -m http.server 8000`). Eine ungültige URL (kein `http://`-Präfix, oder zu +kurz/lang) beantwortet die API sofort mit `400`, ohne dass ein Download versucht wird. Läuft bereits ein +Update, oder scheitert der Start aus einem anderen Grund, antwortet sie mit `409` und dem Grund im Body +(gleicher Wert wie `last_ota_error`). Läuft der Trailer- bzw. Hash-Check durch, resettet die Lampe und bootet mit der neuen Version. Wird das Image abgelehnt, gibt es **keinen** Reset — die Lampe läuft mit der alten Firmware weiter und trägt den Grund in `last_ota_error` (`GET system/info`) ein. Ein Verbindungsabbruch mitten im Download löst dagegen einen Wiederaufnahmeversuch per HTTP-Range aus (begrenzte @@ -103,7 +106,7 @@ Werte von `last_ota_error` (`null`, solange nichts fehlgeschlagen ist): | `trailer` | Trailer fehlt, ist zu kurz oder hat eine falsche Magic/Version | | `device_mismatch` | Trailer nennt einen anderen Gerätetyp | | `hash` | SHA256 im Trailer stimmt nicht mit dem übertragenen Image überein | -| `busy` | es läuft bereits ein Update, oder die übergebene URL war ungültig | +| `busy` | es läuft bereits ein Update | Ein erneuter `fw_update`-Aufruf mit einem gültigen Image funktioniert nach einer Ablehnung sofort, ohne manuellen Reboot. diff --git a/bruno/ninlight.yml b/bruno/ninlight.yml index 1ffd180..8412270 100644 --- a/bruno/ninlight.yml +++ b/bruno/ninlight.yml @@ -211,7 +211,8 @@ items: maxRedirects: 5 docs: |- Enthält `last_ota_error`: `null`, solange kein Update fehlgeschlagen ist, sonst einer von - `download`, `crc`, `trailer`, `device_mismatch`, `hash`, `busy`. Kein `reset_reason` mehr im Feld-Satz. + `download`, `crc`, `trailer`, `device_mismatch`, `hash`, `busy` (`busy` heißt: es läuft bereits + ein Update). Kein `reset_reason` mehr im Feld-Satz. - info: name: Get System Settings type: http @@ -387,6 +388,10 @@ items: timeout: 0 followRedirects: true maxRedirects: 5 + docs: |- + Erfolg: `202 {"status":"updating"}`, Download startet im Hintergrund. Ungültige URL (kein + `http://`-Präfix, zu kurz/lang): `400`. Läuft bereits ein Update oder scheitert der Start + sonstwie: `409` mit dem Grund im Body (gleicher Wert wie `last_ota_error`, z.B. `"busy"`). request: headers: - name: Authorization