Przejdź do treści

Wprowadzenie

Organizacja poleceń

Polecenia HTTP w urządzeniach LK 3.5+ są pogrupowane w kilka endpointów, z których każdy odpowiada za określony obszar funkcjonalny urządzenia. Większość poleceń wykorzystuje metodę GET i jest wysyłana do jednego z poniższych endpointów:

  • /stm.cgi
  • /outs.cgi
  • /inpa.cgi
  • /eeprom.cgi

Niektóre operacje wykorzystują metodę POST i są zebrane w endpointcie:

  • /post.cgi

Należą do nich m.in. sched_save (zapis ustawień harmonogramu) oraz oled_save (zapis ustawień wyświetlacza OLED).

W ramach pojedynczego zapytania HTTP GET można wykonać kilka poleceń jednocześnie, łącząc parametry za pomocą znaku &.

Możliwość łączenia wielu poleceń w jednym zapytaniu jest dostępna wyłącznie dla użytkownika posiadającego uprawnienia administratora.

Łączna długość ciągu parametrów wraz z przypisanymi wartościami (część adresu znajdująca się po znaku ?) nie może przekraczać 666 znaków.

Przykład:

/outs.cgi?out0=1&out1=0&pwm0=1

Poza wymienionymi endpointami dostępne są również adresy realizujące specyficzne funkcje urządzenia, np. pobieranie kopii zapasowej ustawień:

  • GET /lk3_settings.bin

Uwierzytelnianie i autoryzacja

Urządzenie może być zabezpieczone mechanizmem HTTP Basic Authentication. Gdy uwierzytelnianie jest włączone, każde żądanie HTTP musi zawierać nagłówek Authorization z poprawnymi danymi logowania.

Wyjątek stanowi endpoint /post.cgi?signin, który służy do weryfikacji poprawności danych logowania i nie wymaga wcześniejszego uwierzytelnienia.

Zakres dostępnych poleceń zależy od poziomu uprawnień użytkownika:

Poziom dostępu Uprawnienia
Administrator (admin) Dostęp do wszystkich poleceń i funkcji urządzenia.
Użytkownik (user) Dostęp do poleceń sterujących wyjściami (OUT, PWM) oraz zmiennymi EVENT.
Użytkownicy sterujący Taki sam zakres poleceń jak użytkownik user. Konta przeznaczone wyłącznie do sterowania urządzeniem przez API. Nie mogą logować się do interfejsu WWW.

W przypadku użytkowników innych niż administrator dostępne są wyłącznie polecenia przewidziane dla danego poziomu uprawnień. Próba wykonania pozostałych operacji zostanie odrzucona.

Logowanie (weryfikacja danych)

Adres API umożliwia sprawdzenie poprawności danych logowania poprzez wysłanie loginu i hasła w formacie JSON.

Aby wykonać weryfikację, należy wysłać żądanie HTTP POST na adres:

[IP]/post.cgi?signin

Treść żądania musi być przesłana w formacie JSON, np.:

{"username":"admin","password":"admin"}

Odpowiedź ma postać:

{"access":X}

gdzie X oznacza poziom dostępu:

  • 0 – brak dostępu (niepoprawne dane logowania),
  • 1 – dostęp admin,
  • 2 – dostęp user.

Adres ten nie wymaga nagłówka Authorization i działa niezależnie od stanu mechanizmu HTTP Basic Authentication.

Endpoint ten jest wykorzystywany przez interfejs WWW, który przy użyciu mechanizmów JavaScript weryfikuje poprawność loginu i hasła bez wywoływania okna logowania przeglądarki obsługującego mechanizm HTTP Basic Authentication.