LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Smart Home/Tutorials / Tutorial: Konfiguracja stref radaru LD2450 w ESPHome...
Ten artykuł w innych językach:

Tutorial: Konfiguracja stref radaru LD2450 w ESPHome i Home Assistant

Tutorial: Konfiguracja stref radaru LD2450 w ESPHome i Home Assistant

Management Summary

Czujnik radarowy może odróżniać aktywność przy biurku od ruchu przy drzwiach, pozwalając oświetleniu reagować na konkretne części pokoju. LD2450 śledzi do trzech wykrytych obiektów i przekazuje pozycje do Home Assistant przez ESPHome. Artykuł wyjaśnia, jak strefy pokoju zamieniają te dane w użyteczną automatykę. Wykryte obiekty nie są wiarygodnym licznikiem osób, a opóźnienie wyłączenia może łagodzić krótkie braki bez gwarancji rozpoznania całkowicie nieruchomej osoby.

Spis treści
  1. Sprzęt, współrzędne i wersja
  2. Poprawna konfiguracja prostokątnej strefy
  3. Pomiar i zapis prostokąta
  4. Podtrzymanie i automatyzacje
  5. Testy w pomieszczeniu i typowe ograniczenia
  6. Częste pytania
  7. Źródła

LD2450 podaje pozycje maksymalnie trzech celów radarowych, czyli obiektów śledzonych na podstawie odbitych sygnałów radaru. Prostokątne strefy mogą oddzielić biurko od drzwi, jeśli wykrywanie celów jest wystarczająco stabilne. Cel radarowy nie jest potwierdzoną osobą, a nieruchoma osoba może zniknąć ze śledzenia. Oświetlenie zależne od stref wymaga więc pomiarów i odpowiedniego czasu podtrzymania.

Przykładowe prostokąty we współrzędnych czujnika. Strefa 1 zawiera przykładowy margines 200 mm; części poza rzeczywistym zasięgiem pozostają niewykrywalne.
Przykładowe prostokąty we współrzędnych czujnika. Strefa 1 zawiera przykładowy margines 200 mm; części poza rzeczywistym zasięgiem pozostają niewykrywalne.

Sprzęt, współrzędne i wersja

Producent podaje 24 GHz, maksymalny zasięg 6 m, kąt poziomy ±60°, kąt pionowy ±35° oraz montaż ścienny. To parametry nominalne, a nie gwarantowana granica wykrywania w każdym pomieszczeniu. Metal, meble, kąt montażu i odbicia mogą zmienić wyniki.

Początek układu współrzędnych znajduje się w radarze. X opisuje położenie boczne, a Y kierunek do przodu w układzie czujnika, w milimetrach. Krótki test przejścia w lewo i prawo ustala znak dla rzeczywistej orientacji montażu. Obrót lub pochylenie płytki zmienia geometrię pomiaru; obrót o 90° nie oznacza ogólnie prostego zamienienia osi rzutu pomieszczenia. Przesunięcie czujnika wymaga ponownego sprawdzenia granic stref.

Przykład dotyczy ESPHome 2026.10.0 i klasycznej płytki ESP32 z dostępnymi GPIO16 oraz GPIO17. ESPHome wymaga oprogramowania LD2450 V2.02.23090617 lub nowszego. UART działa z szybkością 256000 bodów, bez parzystości i z jednym bitem stopu. ESP TX łączy się z radar RX, ESP RX z radar TX; potrzebna jest wspólna masa. Zasilanie i poziomy sygnałów muszą odpowiadać specyfikacji modułu i płytki; przykładowy przydział pinów nie jest uniwersalny.

Poprawna konfiguracja prostokątnej strefy

Kompletny przykład zawiera zastępcze dane Wi-Fi. Wybór płytki, dane dostępowe i zabezpieczenia API Home Assistant wymagają dostosowania do instalacji. Istniejące sekcje konfiguracji są scalane zamiast powielania. Podczas sprawdzania artykułu żadne urządzenie nie otrzymało nowego oprogramowania.

YAML
esphome:
  name: radar-zone-demo
esp32:
  board: esp32dev
  framework:
    type: esp-idf
logger:
  baud_rate: 0
api:
wifi:
  ssid: "ExampleNetwork"
  password: "ExamplePassword123"
uart:
  id: uart_radar
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
ld2450:
  id: radar
  uart_id: uart_radar
binary_sensor:
  - platform: ld2450
    ld2450_id: radar
    has_target:
      name: "Overall presence"
  - platform: template
    id: desk_occupied
    name: "Desk occupied"
    device_class: occupancy
    lambda: |-
      if (!id(desk_count).has_state() || isnan(id(desk_count).state)) {
        return {};
      }
      return id(desk_count).state > 0;
    filters:
      - delayed_off: 20s
sensor:
  - platform: ld2450
    ld2450_id: radar
    target_1:
      x:
        name: "Target 1 X"
      y:
        name: "Target 1 Y"
    zone_1:
      target_count:
        id: desk_count
        name: "Desk target count"
number:
  - platform: ld2450
    ld2450_id: radar
    presence_timeout:
      name: "Overall presence timeout"
    zone_1:
      x1:
        name: "Zone 1 X1"
      y1:
        name: "Zone 1 Y1"
      x2:
        name: "Zone 1 X2"
      y2:
        name: "Zone 1 Y2"
select:
  - platform: ld2450
    ld2450_id: radar
    zone_type:
      name: "Hardware zone mode"
switch:
  - platform: ld2450
    ld2450_id: radar
    multi_target:
      name: "Multi-target tracking"

Natywne ustawienia prostokątnych stref nazywają się x1, y1, x2 i y2. W sprawdzonej wersji komponent nie ma opcji binary_sensor.zone_1.occupancy. Szablon oblicza więc z liczby celów stan zajętości: co najmniej jeden wykryty cel oznacza zajętą strefę. Brakujące lub nieprawidłowe wartości początkowe nie stają się zmierzonym zerem.

Opcja throttle na poziomie komponentu została usunięta. Encje liczbowe LD2450 mają już domyślne filtry ograniczające zwykłe aktualizacje do odstępów około sekundy, z priorytetowym przekazywaniem określonych zmian. Własne filtry zastępują domyślne. Aktualizacja nie musi oznaczać nowego stanu Home Assistant, a przyrostu bazy nie da się określić stałą liczbą megabajtów na czujnik.

Pomiar i zapis prostokąta

W odizolowanym pomiarze pojedynczy ruchomy cel jest łatwiejszy do przypisania. Pozycje na liście celów nie są trwałymi identyfikatorami osób. Pomiary narożników i krawędzi, podczas stania oraz siedzenia, pokazują użyteczne granice. Przy kilku celach pomaga podgląd wszystkich trzech pozycji; przykład udostępnia tylko pierwszą pozycję do początkowej kalibracji.

Przykładowe odczyty narożników, x / y w mm:
380 / 840     1760 / 810
420 / 2310    1780 / 2360

Zmierzone granice: x 380..1780, y 810..2360
Po dodaniu 200 mm z każdej strony:
x1 = 180, x2 = 1980, y1 = 610, y2 = 2560

Margines 200 mm jest przykładem, a nie uniwersalną specyfikacją dokładności. Większy prostokąt może objąć sąsiednie przejście. Encja to pojedynczo dostępna wartość lub stan w Home Assistant. Cztery encje liczbowe są ustawianymi wartościami współrzędnych sprzętowej strefy radaru; wartości nie są automatycznie zapisywane z powrotem do pliku YAML. Osobny zapis współrzędnych, położenia montażu i trybu stref ułatwia odtworzenie ustawień po wymianie.

Sprzętowy tryb stref jest niezależny od podtrzymania w szablonie: Detection ogranicza zgłaszane cele do skonfigurowanych obszarów wykrywania, Filter wyklucza wskazane obszary, a Disabled wyłącza sprzętowe filtrowanie obszaru. Tryby mogą zmienić wszystkie dalsze dane celów. Sprawdzona implementacja ESPHome oblicza liczby celów stref na podstawie otrzymanych współrzędnych i skonfigurowanych prostokątów; szablon nie odtworzy wykluczonego celu. Kalibracja obejmuje więc rzeczywisty tryb i wszystkie planowane strefy.

Podtrzymanie i automatyzacje

delayed_off: 20s opóźnia w przykładzie zmianę na brak zajętości do czasu ciągłego zgłaszania false przez 20 sekund. Ponowna zajętość anuluje oczekujące wyłączenie. Zmniejsza to skutki krótkich przerw wykrywania, ale nie gwarantuje wykrycia osoby siedzącej nieruchomo przez dłuższy czas.

presence_timeout dotyczy ogólnych stanów obecności w ESPHome, a nie raportów liczby celów radaru. Ustawienie nie dodaje kolejnych pięciu sekund do szablonu opartego na desk_count. Filtry raportowania, opóźnienia automatyzacji i moment ostatniego wykrycia mogą wprowadzać dalszą zwłokę; wyłączenie dokładnie 25 sekund po opuszczeniu miejsca nie jest gwarantowane.

Wyzwalacz zmiany stanu wynikowej encji zajętości w Home Assistant jest wygodnym rozwiązaniem. Wyzwalacz stanu liczbowego również jest poprawny, lecz reaguje na przekroczenie progu, a nie na każdą aktualizację współrzędnych. Zachowanie po restarcie, niedostępne encje i utrata połączenia UART wymagają osobnych testów. Bez poprawnej liczby celów szablon zachowuje poprzedni stan; nie jest to kontrola sprawności komunikacji. Nieaktualne odczyty wymagają oddzielnego monitorowania dostępności.

Testy w pomieszczeniu i typowe ograniczenia

Test odbiorczy obejmuje wejście, wyjście, spokojne siedzenie, ruch tuż poza strefą, ruch w sąsiednim pokoju, wentylatory i zasłony oraz porównanie z drugim radarem włączonym i wyłączonym. Przenikanie przez ściany i wzajemne zakłócenia zależą od konstrukcji oraz instalacji; żadne z tych zjawisk nie występuje nieuchronnie. Pozorne cele mogą się poruszać albo stać nieruchomo. Stała współrzędna nie dowodzi pozornego celu, a warunek minimalnej prędkości może odrzucić właśnie siedzącą osobę wymagającą wykrycia.

Częste pytania

Czy Y jest odległością po skosie?

Nie obowiązuje ogólna równość. Odległość geometryczna √(x²+y²+h²) opisuje odległość po skosie do znanego punktu trójwymiarowego, ale nie stanowi udokumentowanego wzoru przeliczania współrzędnej Y modułu. Wysokość, pochylenie i postawa wymagają więc testów praktycznych zamiast obietnicy korekty opartej wyłącznie na wysokości montażu.

Czy liczba celów strefy nadaje się do liczenia osób?

Jedynie jako przybliżona liczba wykrytych celów, ograniczona do trzech celów w całym module. Zasłonięcia, nieruchome cele, zmiany pozycji na liście i odbicia uniemożliwiają wiarygodne liczenie osób.

Czy współrzędne diagnostyczne są przydatne po kalibracji?

Tak, przy późniejszych zmianach montażu lub umeblowania i podczas diagnozy. Wykluczenie tych encji z Home Assistant Recorder może zmniejszyć zapis historii przy zachowaniu bieżących odczytów. Wyłączone encje wymagają ponownego włączenia przed kolejnym pomiarem.

Źródła

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA i formconfirmed do ochrony przed spamem.

Napisanie komentarza

Doświadczenia z innymi urządzeniami lub integracjami oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.