Centrala Sinum udostępnia lokalny interfejs REST API (OpenAPI 3.0), opisany za pomocą narzędzia Swagger.
Interfejs API umożliwia programowy odczyt oraz modyfikację stanu urządzeń zintegrowanych z centralą — bez użycia aplikacji mobilnej ani panelu webowego.
Uwaga!!! Konfigurację należy przeprowadzić w przeglądarce Google Chrome.
Podczas pierwszego uruchomienia wymagane jest zaakceptowanie zgody na dostęp do urządzeń w sieci lokalnej.
Interaktywna dokumentacja API dostępna jest pod adresem:
https://apidocs.sinum.tech/
Po otwarciu dokumentacji Swagger widoczna jest sekcja Server variables.
W polu hostname_or_ip wpisz odpowiednią wartość:
sinum.local — jeśli w sieci znajduje się tylko jedna centrala Sinum,10.0.62.29) — jeśli w sieci jest kilka central lub mDNS nie działa.Uwaga:
Pole hostname_or_ip określa, do której centrali będą kierowane zapytania API.


Większość endpointów wymaga tokenu autoryzacyjnego. Należy go uzyskać za pomocą endpointu POST /login.
Kroki

usernamepasswordos_infodevice_infouuid_deviceUwaga:
Pola os_info, device_info oraz uuid_device mogą zawierać dowolne wartości — nie wpływają na proces autoryzacji.
Odpowiedź
Po poprawnym zalogowaniu centrala zwraca kod 200 oraz obiekt JSON zawierający m.in.:
session — token sesji (JWT) używany do autoryzacji kolejnych zapytań,refresh_token — token służący do odświeżania sesji bez ponownego logowania.Swagger automatycznie zapisuje token i dołącza go do kolejnych zapytań w nagłówku Authorization.
Swagger udostępnia gotowy przykład zapytania curl dla każdego endpointu.
Przykład logowania
curl -X 'POST'
'http://10.0.62.29/api/v1/login'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-d '{
"username": "admin",
"password": "admin",
"os_info": "ios",
"device_info": "chrome",
"uuid_device": "5432-5432-5432"
}'
Autoryzacja w kolejnych zapytaniach
Dla endpointów wymagających autoryzacji należy dodać nagłówek:
-H 'Authorization: '
Znalezienie ID termostatu

Wywołanie endpointu
GET /devices/virtual/{id}.21).
Odpowiedź centrali
Centrala zwraca kod 200 oraz obiekt JSON zawierający pełny stan urządzenia.
Przykładowe pola:
temperature — aktualna temperatura,target_temperature — temperatura zadana (wartość ×10),state — stan ogrzewania (true / false),mode — tryb pracy (heating, cooling).
Przykład zapytania curl
curl -X 'GET'
'http://10.0.62.29/api/v1/devices/virtual/21'
-H 'accept: application/json'
-H 'Authorization: '
Sekcja Responses → Schema dla endpointu GET /devices/virtual/{id} zawiera pełny opis struktury odpowiedzi.
Kluczowe pola
| Pole | Typ | Opis |
|---|---|---|
| id | integer | Unikalny identyfikator urządzenia |
| type | string | Typ urządzenia (np. thermostat) |
| class | string | Klasa (virtual) |
| name | string | Nazwa urządzenia |
| state | boolean | Aktualny stan grzania |
| temperature | integer | Temperatura aktualna (×10) |
| target_temperature | integer | Temperatura zadana (×10) |
| target_temperature_mode | string | Tryb temperatury |
| humidity | integer | Wilgotność |
| mode | string | Tryb pracy |
| antifrost_protection | boolean | Ochrona przed zamarzaniem |
| messages | array | Lista komunikatów |
Uwaga:
Wartość target_temperature jest mnożona przez 10 (np. 250 = 25,0 °C).
Zakres: 50–350. Jednostka zależy od konfiguracji regionu.


Zmiana parametrów odbywa się za pomocą endpointu PATCH /devices/virtual/{id}.
Kroki
PATCH /devices/virtual/{id}.21).Uwaga:
Nie należy wysyłać pól tylko do odczytu (id, type, class, messages itd.).

{
"target_temperature": 220
}

200 oraz zaktualizowany obiekt urządzenia.Przykład zapytania curl
curl -X 'PATCH'
'http://10.0.62.29/api/v1/devices/virtual/21'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization: '
-d '{"target_temperature": 220}'
| Kod | Znaczenie |
|---|---|
| 200 | Sukces — operacja wykonana poprawnie |
| 400 | Błędne zapytanie |
| 401 | Brak lub nieprawidłowy token |
Przykład błędu 400
{
"error": {
"message": {
"text": "Invalid object ID.",
"id": 7207
}
}
}
