diff --git a/bruno/ninlight.yml b/bruno/ninlight.yml index 2e68d9a..4e92de7 100644 --- a/bruno/ninlight.yml +++ b/bruno/ninlight.yml @@ -234,6 +234,16 @@ items: Enthält `last_ota_error`: `null`, solange kein Update fehlgeschlagen ist, sonst einer von `download`, `crc`, `trailer`, `device_mismatch`, `hash`, `busy` (`busy` heißt: es läuft bereits ein Update). Kein `reset_reason` mehr im Feld-Satz. + + `wifi.standalone` unterscheidet den dauerhaften eigenen Zugangspunkt vom + Onboarding-AP - `wifi.mode` ist bei beiden `"ap"`. Im AP-Betrieb steht unter + `wifi.ssid` der **laufende** AP-Name, nicht die gespeicherte Stations-SSID; der + Name des Heimnetzes steht damit nicht in dieser tokenfrei lesbaren Antwort. + + `sacn.running` sagt, ob der Empfangs-Task lebt und einen Socket haelt - zusammen + mit `sacn.active` (es kommt gerade ein gueltiger Strom an) und `sacn.multicast` + (der letzte Gruppenbeitritt hat geklappt) ist damit unterscheidbar, ob niemand + sendet oder ob der Empfang tot ist. - info: name: Get System Settings type: http @@ -251,6 +261,12 @@ items: sonst `"compiled"` - dann laeuft die Lampe auf den einkompilierten NINLIGHT_WIFI_SSID/-PASSWORD, `wifi.ssid` ist leer, und `GET system/info` kann trotzdem eine verbundene SSID zeigen. + + Der `standalone`-Block zeigt `enabled`, den **gewuenschten** AP-Namen (`ssid`: der + gespeicherte, ohne eigenen der Hostname), `channel` und `pulse`. Das AP-Passwort + steht nie darin. Der gewuenschte Name kann vom laufenden abweichen, den + `GET system/info` meldet - genau das ist das Erkennungsmerkmal fuer einen Rueckfall + auf die Vorgaben nach mehrfach gescheitertem AP-Aufbau. - info: name: Set WiFi type: http @@ -350,10 +366,77 @@ items: timeout: 0 followRedirects: true maxRedirects: 5 + - info: + name: Standalone einschalten + type: http + seq: 8 + http: + method: PUT + url: '{{device_address}}:{{device_port}}/api/v1/system/settings' + body: + type: json + data: |- + { + "type": "standalone", + "enabled": true, + "password": "geheim123", + "ssid": "Buehne", + "channel": 6, + "pulse": true + } + settings: + encodeUrl: true + timeout: 0 + followRedirects: true + maxRedirects: 5 + docs: |- + Die Lampe spannt dauerhaft einen eigenen Zugangspunkt auf, statt sich in ein WLAN + einzuwaehlen - danach ist sie unter `192.168.4.1` erreichbar, per mDNS als + `.local`. Antwort **202** `{"status":"standalone"}`, nicht 200: die + Antwort muss das Geraet verlassen haben, bevor das Netz unter der Verbindung + weggezogen wird. + + `password` ist beim Einschalten Pflicht, solange keines gespeichert ist (8..63 + Zeichen). `ssid` (1..32), `channel` (1..13, Vorgabe 6) und `pulse` sind optional + und behalten sonst ihren gespeicherten Wert; ein leerer `ssid`-String wird mit 400 + `invalid ssid` abgelehnt. + + **Achtung beim Ausprobieren:** Aenderst du Name oder Passwort, waehrend du ueber + genau diesen AP verbunden bist, baut die Lampe ihn neu auf und wirft dich hinaus - + die 202 kommt noch an, danach musst du dem neuen Netz beitreten. + + Anders als der unkonfigurierte Onboarding-AP ist der Standalone-AP **nicht** + token-frei: ab da gilt der Tokenschutz wie im Normalbetrieb. + - info: + name: Standalone ausschalten + type: http + seq: 9 + http: + method: PUT + url: '{{device_address}}:{{device_port}}/api/v1/system/settings' + body: + type: json + data: |- + { + "type": "standalone", + "enabled": false + } + settings: + encodeUrl: true + timeout: 0 + followRedirects: true + maxRedirects: 5 + docs: |- + Braucht kein Passwort. Hat die Lampe gespeicherte WLAN-Daten, waehlt sie sich damit + wieder ein; ohne solche oeffnet sie den unkonfigurierten Onboarding-AP + `ninlight-` - der ist dann wieder token-frei. + + Der gespeicherte AP-Name bleibt dabei in den Einstellungen stehen und greift beim + naechsten Einschalten des Modus erneut. - info: name: Commands type: folder - seq: 8 + seq: 10 items: - info: name: Ping