EchoEye · Dokumentacja

REST API Reference

Pełna dokumentacja HTTP API czujnika EchoEye . Wszystkie endpointy zwracają JSON, żądania POST wymagają Content-Type: application/json.

Bazowy adres (AP)
http://192.168.4.1
Format odpowiedzi
application/json
Protokół
HTTP (nie HTTPS)
01

Odczyt danych i statusu

GET /api/data Wszystkie dane z czujnika w czasie rzeczywistym
Odpowiedź
cURL
200 OK — JSON
presenceDetectedboolCzy wykryto obecność
motionStatusstring"Moving" / "Static" / "None"
lightLevelfloatPoziom światła w lux (2 miejsca po przecinku)
dynamicDistancefloatOdległość ruchu w metrach
staticDistancefloatOdległość statyczna w metrach
networkNamestringNazwa sieci WiFi
ipAddressstringAdres IP czujnika
mqttAddressstringAdres brokera MQTT lub "nie skonfigurowany"
firmwareVersionstringWersja firmware, np. "aktualna"
mqttConnectedboolCzy połączono z brokerem MQTT
sensorNamestringNazwa czujnika (max 32 znaki)
currentDynamicint[9]Wartości czułości dynamicznej — 9 bramek
currentStaticint[9]Wartości czułości statycznej — 9 bramek
sensorConnectedboolCzy sensor odpowiada
cURL
curl http://192.168.1.100/api/data
GET /data Kompatybilność wsteczna — przekierowuje do /api/data
ℹ️ Odpowiedź identyczna jak /api/data. Endpoint istnieje wyłącznie dla kompatybilności ze starszymi integracjami.
GET /values Tylko wartości czułości bramek
Odpowiedź
cURL
200 OK — JSON
currentDynamicint[9]Czułość dynamiczna — 9 wartości (bramki 0–8)
currentStaticint[9]Czułość statyczna — 9 wartości (bramki 0–8)
cURL
curl http://192.168.1.100/values
GET /sensor-status Szczegółowy status sensora
Odpowiedź
cURL
200 OK — JSON
sensorConnectedboolCzy sensor odpowiada na komunikację
lastDataReceivedulongTimestamp ostatnich odebranych danych
timeSinceLastDataulongCzas od ostatnich danych (ms)
sensorInitializedboolCzy sensor jest zainicjalizowany
presenceDetectedboolWykryto obecność
motionDetectedboolWykryto ruch dynamiczny
staticDetectedboolWykryto obiekt statyczny
motionDistancefloatOdległość wykrytego ruchu (m)
staticDistancefloatOdległość obiektu statycznego (m)
motionEnergyintEnergia wykrytego ruchu
staticEnergyintEnergia obiektu statycznego
txPin / rxPinintPin TX / Pin RX
baudRateintPrędkość transmisji: 256 000
enhancedModeboolCzy Enhanced Mode jest aktywny
readIntervalintInterwał odczytu (ms) — domyślnie 600
uptimeulongCzas działania urządzenia (sekundy)
cURL
curl http://192.168.1.100/sensor-status
GET /logs Historia wykryć obecności
Odpowiedź
cURL
200 OK — JSON
logs[ ].timestampulongTimestamp wykrycia
logs[ ].uptimestringCzas działania jako string
logs[ ].realTimestringCzas rzeczywisty (jeśli NTP dostępny)
logs[ ].hasRealTimeboolCzy czas NTP jest dostępny
logs[ ].durationintCzas trwania obecności (sekundy)
logs[ ].durationStringstringCzas trwania jako czytelny string
logs[ ].dynamicDistancefloatOdległość ruchu przy wykryciu
logs[ ].staticDistancefloatOdległość statyczna przy wykryciu
countintLiczba logów
maxLogsintMaksymalna liczba logów: 100
ntpSyncedboolCzy NTP jest zsynchronizowany
cURL
curl http://192.168.1.100/logs
02

Konfiguracja — odczyt i zapis

GET /api/config Pełna konfiguracja czujnika
Odpowiedź
cURL
200 OK — JSON
wifiSSIDstringSSID sieci WiFi
mqttServerstringAdres brokera MQTT
mqttPortintPort brokera MQTT
mqttUsernamestringUżytkownik MQTT
mqttTopicstringTopic MQTT
maxDistancefloatMaksymalna odległość (m) — zakres 0.75–6.0
timeoutintTimeout braku obecności (s) — zakres 1–300
motionThresholdsint[9]Progi ruchu dla 9 bramek (0–100)
staticThresholdsint[9]Progi statyczne dla 9 bramek (0–100)
sensorNamestringNazwa czujnika (max 32 znaki)
automationEnabledboolCzy automatyzacja HTTP jest włączona
onPresenceUrlstringURL wywoływany przy wykryciu obecności
onAbsenceUrlstringURL wywoływany przy braku obecności
useLightThresholdboolCzy używać progu światła w automatyzacji
automationLightThresholdfloatPróg lux dla automatyzacji HTTP
lightControlEnabledboolCzy kontrola GPIO na podstawie światła jest włączona
lightControlThresholdfloatPróg lux dla sterowania GPIO
cURL
curl http://192.168.1.100/api/config
POST /parameters Aktualizacja WiFi, MQTT, timeout i odległości
Body
Odpowiedź
cURL
Body — application/json (wszystkie pola opcjonalne)
wifiSSIDstringSSID sieci WiFi (jeśli w trybie AP — uruchomi połączenie)
wifiPasswordstringHasło WiFi
mqttServerstringAdres brokera MQTT
mqttPortintPort brokera MQTT
mqttUsernamestringUżytkownik MQTT
mqttPasswordstringHasło MQTT
mqttTopicstringTopic MQTT
maxDistancefloatMaks. odległość (0.75–6.0 m, kroki 0.75)
timeoutintTimeout (1–300 sekund)
200 OK — JSON
statusstring"success"
cURL
curl -X POST http://192.168.1.100/parameters \
     -H "Content-Type: application/json" \
     -d '{
       "wifiSSID": "MojaSiec",
       "wifiPassword": "haslo123",
       "mqttServer": "192.168.1.10",
       "mqttPort": 1883,
       "maxDistance": 4.5,
       "timeout": 30
     }'
POST /sensor-config Aktualizacja czułości bramek sensora
Body
Odpowiedź
cURL
Body — application/json (wszystkie pola opcjonalne)
maxDistancefloatMaks. odległość w metrach (0.75–6.0, kroki co 0.75)
timeoutintTimeout obecności (1–300 sekund)
motionThresholdsint[9]Progi ruchu dla 9 bramek, każdy 0–100
staticThresholdsint[9]Progi statyczne dla 9 bramek, każdy 0–100
200 OK — JSON
statusstring"success"
Zwraca 503 podczas aktywnej autokalibracji. Odczekaj na zakończenie procesu.
cURL
curl -X POST http://192.168.1.100/sensor-config \
     -H "Content-Type: application/json" \
     -d '{
       "motionThresholds": [40,45,50,55,60,55,50,45,40],
       "staticThresholds": [30,35,40,40,45,40,35,30,25],
       "maxDistance": 4.5,
       "timeout": 30
     }'
03

Nazwa czujnika

GET /sensor-name Zwraca aktualną nazwę czujnika
200 OK — JSON
sensorNamestringNazwa czujnika (max 32 znaki)
successboolZawsze true
POST /sensor-name Ustawia nową nazwę czujnika
Body
Błędy
cURL
Body — application/json
sensorNamestringNowa nazwa (1–32 znaki)
400 Bad Request — możliwe błędy
"Invalid JSON"Nieprawidłowy format JSON w body
"Missing sensorName"Brak pola sensorName w body
"Sensor name cannot be empty"Podano pusty string
"Sensor name too long"Przekroczono limit 32 znaków
cURL
curl -X POST http://192.168.1.100/sensor-name \
     -H "Content-Type: application/json" \
     -d '{"sensorName": "MojaSypialnia"}'
04

Automatyzacja i kontrola światła

POST /automation-rule Ustawia regułę automatyzacji HTTP
Body
cURL
Body — application/json (wszystkie pola opcjonalne)
enabledboolCzy reguła jest aktywna
onPresenceUrlstringURL wywoływany przy wykryciu obecności (GET)
onAbsenceUrlstringURL wywoływany przy braku obecności (GET)
useLightThresholdboolCzy uwzględniać poziom oświetlenia
lightThresholdfloatPróg oświetlenia w lux — automatyzacja aktywna poniżej progu
cURL
curl -X POST http://192.168.1.100/automation-rule \
     -H "Content-Type: application/json" \
     -d '{
       "enabled": true,
       "onPresenceUrl": "http://192.168.1.1/api/trigger?on",
       "onAbsenceUrl": "http://192.168.1.1/api/trigger?off",
       "useLightThreshold": true,
       "lightThreshold": 50.0
     }'
POST /light-control Konfiguracja sterowania GPIO na podstawie światła
Body
cURL
Body — application/json
enabledboolCzy kontrola GPIO jest aktywna
thresholdfloatPróg oświetlenia w lux (domyślnie 50.0)
cURL
curl -X POST http://192.168.1.100/light-control \
     -H "Content-Type: application/json" \
     -d '{"enabled": true, "threshold": 30.0}'
05

WiFi i sieci

GET /wifi-networks Lista dostępnych sieci WiFi
200 OK — JSON
networks[ ].ssidstringNazwa sieci WiFi
networks[ ].rssiintSiła sygnału w dBm
networks[ ].encryptionstring"Open" lub "Secured"
ℹ️ Zwraca wyniki z ostatniego skanowania (maks. 10 sieci). Aby wymusić nowe skanowanie, użyj POST /scan-wifi.
POST /scan-wifi Wykonuje nowe skanowanie sieci WiFi
Skanowanie może zająć kilka sekund. Odpowiedź identyczna jak /wifi-networks.
POST /reset-wifi Reset WiFi i MQTT, uruchomienie trybu AP
200 OK — JSON
statusstring"success"
messagestringInformacja o restarcie w tryb AP
Uwaga: Urządzenie zrestartuje się automatycznie po wysłaniu odpowiedzi. Utracisz połączenie z bieżącą siecią.
06

MQTT — Test połączenia

POST /test-mqtt Testuje połączenie z brokerem MQTT
Odpowiedź
cURL
200 OK — JSON
successboolCzy połączenie się powiodło
messagestringKomunikat statusu
ℹ️ Wysyła testową wiadomość na topic: {mqttTopic}/test
cURL
curl -X POST http://192.168.1.100/test-mqtt
07

Sensor — Autokalibracja

POST /auto-config Uruchamia automatyczną kalibrację progów
Odpowiedź
Błędy
cURL
200 OK — sukces
successbooltrue
messagestring"Auto-calibration completed successfully"
Proces trwa 10–20 sekund. Po zakończeniu bramki 0 i 1 są ustawiane na 100. Nie można uruchomić podczas innej operacji na sensorze.
400 / 503 — możliwe błędy
"Auto-calibration already in progress"Kalibracja już trwa — poczekaj na zakończenie
"Sensor busy, try again"Sensor zajęty inną operacją
"Auto-calibration failed"Kalibracja nie powiodła się
"Auto-calibration timeout"Przekroczono czas oczekiwania
cURL
curl -X POST http://192.168.1.100/auto-config
08

Restart urządzenia

GET /restart Restartuje i sensor
200 OK — JSON
successbooltrue
messagestring"Restarting radar and ESP..."
Urządzenie zrestartuje się po wysłaniu odpowiedzi. Połączenie zostanie zerwane.
09

Aktualizacja firmware OTA

⬆️
POST /updateota Aktualizacja przez URL do pliku .bin
Body
cURL
Body — multipart/form-data
urlstringURL do pliku firmware .bin
cURL
curl -X POST http://192.168.1.100/updateota \
     -F "url=http://example.com/firmware_T2_250.bin"
POST /update-local Aktualizacja z lokalnego pliku .bin
Body
Odpowiedź
cURL
Body — multipart/form-data
firmwarefilePlik .bin z nowym firmware
200 OK — JSON
statusstring"success" lub "error"
messagestringOpis rezultatu
cURL
curl -X POST http://192.168.1.100/update-local \
     -F "firmware=@/path/to/firmware.bin"
10

MQTT — Publikowane dane

Topic {mqttTopic}/data co 2 sekundy
presenceDetectedboolCzy wykryto obecność
motionStatusstring"Moving" / "Static" / "None"
lightLevelfloatPoziom oświetlenia (lux)
dynamicDistancefloatOdległość ruchu (m)
staticDistancefloatOdległość statyczna (m)
motionEnergyintEnergia ruchu
staticEnergyintEnergia statyczna
motionDetectedboolWykryto ruch dynamiczny
staticDetectedboolWykryto obiekt statyczny
timestampulongTimestamp wiadomości
uptimeulongCzas działania urządzenia (s)
sensorNamestringNazwa czujnika
11

Kody statusu HTTP

200 OK
Żądanie zakończone sukcesem. Odpowiedź zawiera JSON z wynikiem.
400 Bad Request
Nieprawidłowe dane JSON w body lub brakujące wymagane parametry. Sprawdź Content-Type i strukturę żądania.
503 Unavailable
Sensor zajęty — najczęściej podczas autokalibracji. Poczekaj na zakończenie i ponów żądanie.
12

Limity i ograniczenia

100
Maks. liczba logów historii
10
Maks. sieci WiFi w skanowaniu
32 znaki
Maks. długość nazwy czujnika
0.75 – 6.0 m
Zasięg wykrywania (kroki 0.75 m)
1 – 300 s
Zakres timeoutu obecności
0 – 100
Zakres czułości każdej z 9 bramek
600 ms
Interwał odczytu danych z sensora
co 2 s
Częstotliwość publikacji MQTT
10 – 20 s
Czas trwania autokalibracji
256 000
Prędkość transmisji UART (baud)
Przewijanie do góry

Porozmawiajmy o Twoim projekcie

Masz pilne pytanie?

Zapytaj nas