LW IT Solutions
« Blog-Übersicht /Smart Home/Tutorials / Tutorial: Radarzonen des LD2450 in ESPHome und...
Diesen Artikel in anderen Sprachen lesen:

Tutorial: Radarzonen des LD2450 in ESPHome und Home Assistant einrichten

Tutorial: Radarzonen des LD2450 in ESPHome und Home Assistant einrichten
Inhalt
  1. Was der Sensor tatsächlich meldet
  2. Den Ursprung zuerst festlegen
  3. Die Konfiguration – und wo die Zone wohnt
  4. Die Zone messen statt sie zu raten
  5. Die Automatisierung – und was sie flackern lässt
  6. Was danach trotzdem schiefgeht
  7. Fragen und Antworten
  8. Quellen

Ein Präsenzradar der Bauart LD2450 kann etwas, das ein Bewegungsmelder nie konnte: Es sagt, wo. Bis zu drei Ziele, jedes mit einer x- und einer y-Koordinate in Millimetern, mehrmals je Sekunde aktualisiert.

Damit wird die interessante Frage zu einer geometrischen. Eine Zone besteht aus vier Zahlen – zwei je Achse -, und alles, was einen solchen Aufbau brauchbar oder ärgerlich macht, geschieht darin, wie diese vier Zahlen zustande kommen.

Ein Koordinatenraster in Draufsicht mit dem Sensor im Ursprung, seinem Erfassungskeil, zwei rechteckigen Zonen in Millimeterkoordinaten und einem verfolgten Ziel, daneben eine Tabelle der Zonengrenzen
Der Ursprung sitzt im Sensor, y läuft nach vorn, x läuft quer und ist links negativ. Eine Zone ist ein Rechteck in diesem Bezugssystem – nicht im Raum.

Was der Sensor tatsächlich meldet

Der LD2450 ist ein 24-GHz-Radar, das bis zu drei Ziele gleichzeitig verfolgt. Je Ziel liefert er drei Zahlen: eine x-Koordinate, eine y-Koordinate und eine Geschwindigkeit – die ersten beiden in Millimetern, die letzte in Zentimetern je Sekunde, wobei ein negatives Vorzeichen Bewegung auf den Sensor zu bedeutet.

Genau hier unterscheidet er sich von seinem kleineren Geschwister. Der LD2410 beantwortet nur, ob etwas da ist und ungefähr wie weit entfernt, aufgeteilt in Entfernungstore. Einen Schreibtisch von einer Tür zu trennen, kann er nicht, denn er weiss nichts darüber, in welcher Richtung beides liegt.

Zwei Eigenschaften lohnen sich vor jeder Montage zu kennen. Der Erfassungsbereich ist ein Keil von etwa 120 Grad, also 60 Grad zu jeder Seite der Blickrichtung – alles ausserhalb bleibt unsichtbar, unabhängig von der Entfernung. Und die brauchbare Reichweite im Innenraum liegt bei rund sechs Metern, wobei die Genauigkeit der Koordinaten deutlich früher nachlässt.

Den Ursprung zuerst festlegen

Jede Zonenzahl bezieht sich auf ein Koordinatensystem, dessen Ursprung der Sensor selbst ist. Die y-Achse zeigt in die Richtung, in die die Platine schaut; die x-Achse läuft quer dazu, links negativ, rechts positiv, gesehen von hinter dem Sensor.

Daraus folgen drei Dinge, und alle drei sind vor dem Ankleben des Moduls billiger zu behandeln.

Ein um neunzig Grad gedreht montierter Sensor vertauscht die Achsen, und jede auf einem Grundriss gezeichnete Zone muss gespiegelt übertragen werden. Ein über Kopf montierter Sensor spiegelt die x-Achse, links und rechts tauschen also die Plätze und die Zone landet auf der anderen Raumseite. Und ein Sensor, der zwanzig Zentimeter an eine schönere Stelle wandert, entwertet alle Zonen auf einmal, denn sie wurden alle vom früheren Ort aus gemessen.

Die praktische Montageposition für einen LD2450 ist an einer Wand auf etwa 1,2 bis 1,5 Meter – ungefähr Hüfthöhe. Weiter oben blickt das Radar auf Menschen herab statt quer zu ihnen, und die y-Koordinate misst dann eine Schräge statt einer Strecke am Boden. Eine Deckenposition ist die Aufgabe eines anderen Sensors.

Die Konfiguration – und wo die Zone wohnt

Die ESPHome-Seite ist kurz. Das Radar spricht über eine serielle Verbindung mit 256 000 Baud, und der Baustein macht daraus Entitäten.

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
  throttle: 1000ms

binary_sensor:
  - platform: ld2450
    ld2450_id: radar
    has_target:
      name: "Anwesenheit"
    zone_1:
      occupancy:
        name: "Schreibtisch belegt"
    zone_2:
      occupancy:
        name: "Tuerbereich belegt"

sensor:
  - platform: ld2450
    ld2450_id: radar
    target_1:
      x:
        name: "Ziel 1 X"
      y:
        name: "Ziel 1 Y"
      speed:
        name: "Ziel 1 Geschwindigkeit"
    zone_1:
      target_count:
        name: "Ziele am Schreibtisch"

number:
  - platform: ld2450
    ld2450_id: radar
    presence_timeout:
      name: "Nachlaufzeit"
    zone_1:
      x_begin:
        name: "Zone 1 X Anfang"
      y_begin:
        name: "Zone 1 Y Anfang"
      x_end:
        name: "Zone 1 X Ende"
      y_end:
        name: "Zone 1 Y Ende"

Die Einstellung throttle ist die lohnendste von allen. Ohne sie meldet das Radar mehrmals je Sekunde, und jede dieser Meldungen wird in Home Assistant zu einem Zustandswechsel. Eine Sekunde genügt für Beleuchtung vollauf und bewahrt die Datenbank davor, je Sensor täglich um ein Megabyte zu wachsen.

Wo die Zonengrenzen wohnen, ist die überraschende Einzelheit. Sie sind keine Werte in der YAML-Datei – es sind Zahlen im Flash des Radarmoduls selbst, und ESPHome zeigt sie als Zahlen-Entitäten, damit sie einmal gesetzt werden können. Das ist praktisch, denn eine Zone lässt sich damit vom Telefon aus korrigieren, während der Raum betreten wird. Es ist zugleich eine Falle, denn ein ausgetauschtes Modul kommt mit den Werkszonen zurück, und nichts in der Konfiguration sagt, wie sie vorher lauteten. Die vier Zahlen je Zone gehören als Kommentar in die YAML-Datei, und sei es nur zur Dokumentation.

Die Zone messen statt sie zu raten

Zonengrenzen aus einem Grundriss sind oft genug falsch, dass Messen schneller geht. Die Messung braucht eine Person, fünf Minuten und die beiden Koordinatensensoren aus der Konfiguration oben.

An jeder Ecke der gewünschten Zone zu stehen und die x- und y-Werte abzulesen, liefert das Rechteck unmittelbar. Vier Ecken, acht Zahlen, und deren Extremwerte sind die Grenzen. Eine Toleranz von etwa zwanzig Zentimetern je Seite lohnt sich dazu, denn ein Mensch ist kein Punkt: Das Radar meldet die Mitte der Reflexion, und die wandert bei jeder Drehung über den Körper.

Eckmessungen am Schreibtisch (x / y in mm)

  vorne links     380 /  840
  vorne rechts   1760 /  810
  hinten links    420 / 2310
  hinten rechts  1780 / 2360

Zone 1 mit Toleranz:  x  300 … 1800     y  800 … 2400

Zwei Gegenproben gehören in dieselbe Sitzung. Durch die Zone gehen und wieder hinaus sollte den Belegungssensor in beide Richtungen sauber schalten. Und knapp ausserhalb der Grenze stehen sollte das nicht – geschieht es doch, ist die Zone grösser als beabsichtigt, oder die Reflexion kommt von woanders her als von der Person.

Die zweite Gegenprobe findet die Montagefehler. Ein Metallschrank, ein Heizkörper oder ein grosser Spiegel wirft das Radarsignal zurück und erzeugt ein Ziel, das dort steht, wo niemand ist. Ein solches Trugbild ist daran zu erkennen, dass es vollkommen still steht und nie geht; die Abhilfe ist ein anderer Sensorwinkel, keine kleinere Zone.

Die Automatisierung – und was sie flackern lässt

Mit einer funktionierenden Zone ist die Automatisierung selbst unspektakulär – und würde ohne eine einzige Zeile flackern.

binary_sensor:
  - platform: ld2450
    ld2450_id: radar
    zone_1:
      occupancy:
        name: "Schreibtisch belegt"
        filters:
          - delayed_off: 20s

Das delayed_off ist der Unterschied zwischen einer Lampe, die brennt, solange jemand arbeitet, und einer, die ausgeht, sobald sich die Person zurücklehnt. Ein Radar verliert ein stehendes Ziel leichter als ein bewegtes, und zwanzig Sekunden Nachlauf kosten nichts, während sie die gesamte Beschwerdeklasse beseitigen.

Sein Gegenstück ist die Nachlaufzeit im Modul selbst, die bestimmt, wie lange das Radar nach der letzten Erfassung noch ein Ziel meldet. Beide Verzögerungen addieren sich: Fünf Sekunden Nachlaufzeit plus zwanzig Sekunden Filter heisst, dass das Licht fünfundzwanzig Sekunden nach dem Verlassen ausgeht. Das gehört bewusst eingestellt statt zufällig.

Auf der Home-Assistant-Seite erspart eine Regel viel Fehlersuche: Eine Automatisierung sollte auf den Zonensensor reagieren, nie auf die rohen Koordinaten. Ein Auslöser auf einem x-Zahlenwert feuert bei jedem Zittern der gemeldeten Mitte, und dieselbe still sitzende Person überschreitet eine solche Schwelle dutzendfach in der Stunde.

Was danach trotzdem schiefgeht

Drei Erscheinungen machen den grössten Teil des restlichen Ärgers aus, und jede hat eine andere Abhilfe.

Die erste ist Bewegung, die kein Mensch ist. Ein Ventilator, ein Vorhang im Luftzug, eine hängende Pflanze – alle bewegen sich, alle reflektieren, und für das Radar sehen sie aus wie ein langsames Ziel. Eine Zone, die sie ausspart, ist die sauberste Antwort; wo das nicht geht, hilft eine Mindestgeschwindigkeit als Bedingung, denn die Störbilder erzeugen selten eine gleichbleibende Richtung.

Die zweite ist der Nachbarraum. Vierundzwanzig Gigahertz gehen mit geringem Verlust durch Gipskarton, und eine an eine Wand gelegte Zone erfasst deshalb auch das Sofa dahinter. Die Koordinaten sagen nichts über Wände aus, denn das Radar weiss nichts von ihnen. Nur eine Messung findet das, und sie lohnt sich absichtlich: Jemand geht im Nebenraum umher, während die Zielanzahl beobachtet wird.

Die dritte ist, dass ein zweites Radar im selben Raum das erste stört. Zwei LD2450-Module auf derselben Frequenz, die aufeinander zeigen, erzeugen in beiden Ziele, die zu keinem von beiden gehören. Wo zwei nötig sind, sollten sie voneinander weg zeigen, und die Überlappung ihrer Keile sollte klein bleiben.

Fragen und Antworten

Warum verschiebt eine hohe Montage die gemeldeten Positionen, und fängt das Einmessen der Ecken das auf?

Weil das Radar die Entfernung entlang der Sichtlinie misst und nicht entlang des Bodens. Liegt der Sensor um die Höhe h über der Stelle des Körpers, die das Signal zurückwirft, meldet er für eine Person, die waagerecht gemessen d vor ihm steht, eine y-Koordinate von etwa √(d² + h²). Bei einem Meter Höhenunterschied erscheint eine Person einen Meter vor dem Sensor in rund 1,41 Metern, eine Person in vier Metern Abstand in 4,12 Metern. Die Verzerrung ist also nahe am Sensor groß und in der Ferne klein.

Das Einmessen der Ecken fängt das zum Teil auf, denn die abgelesenen Werte enthalten die Verzerrung bereits, allerdings nur für die Haltung, in der gemessen wurde. Im Sitzen liegt die reflektierende Körpermitte tiefer, der Höhenunterschied wächst, und dieselbe Stelle am Boden rückt in den Meldungen vom Sensor weg: Wächst der Höhenunterschied von einem auf 1,3 Meter, erscheint die Person einen Meter vor dem Sensor in 1,64 statt 1,41 Metern. Das sind gut 20 Zentimeter und damit so viel wie die ganze Toleranz, die der Artikel je Seite empfiehlt.

Auf Hüfthöhe, wie im Artikel empfohlen, liegt der Sensor ungefähr auf der Höhe des Körpers, im Stehen wie im Sitzen. Der Höhenunterschied bleibt klein, und der Fehler liegt in der üblichen Arbeitsentfernung deutlich unter der empfohlenen Toleranz. Genau das spricht für diese Montagehöhe: Die Zone gilt dann unabhängig davon, ob am Schreibtisch gestanden oder gesessen wird.

Taugt die Zielanzahl einer Zone zum Zählen von Personen?

Nur grob. Das Modul verfolgt im ganzen Erfassungsbereich höchstens drei Ziele, eine still sitzende Person geht leichter verloren als eine bewegte, und ein Trugbild, das ein Metallschrank erzeugt, zählt als zusätzliches Ziel. Für die Frage, ob eine Zone belegt ist, bleibt der Belegungssensor mit Nachlauf die verlässlichere Größe.

Werden die Koordinatensensoren nach dem Einmessen noch gebraucht?

Für die Automatisierung nicht, für jede spätere Nachmessung schon. Die Automatisierung hängt am Belegungssensor der Zone, und der wechselt nur beim Betreten und Verlassen. Die Werte für x, y und Geschwindigkeit dagegen ändern sich, solange sich jemand bewegt, mit throttle: 1000ms bis zu einmal je Sekunde, und jede dieser Änderungen landet in der Datenbank von Home Assistant.

Sinnvoll ist deshalb, sie in Home Assistant zu deaktivieren oder vom Recorder auszunehmen, in der ESPHome-Konfiguration aber zu behalten. Nach einem versetzten Sensor, einem getauschten Modul oder neuen Möbeln stehen sie dann sofort für die Eckmessung bereit. Auch die Suche nach einem Trugbild braucht sie: Ein Ziel, dessen Koordinaten sich über Minuten nicht ändern, fällt dort auf einen Blick auf.

Lukas Wojcik

Lukas Wojcik

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.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Kommentar schreiben

Erfahrungen mit anderen Geräten oder Integrationen und Rückfragen zur Einrichtung sind hier willkommen.

Die E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit einem Stern versehen.

Artikel & Kategorien

CCTV

Diese Rubrik per RSS verfolgen

Cloud & AI

Alle 17 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Data Privacy

Alle 19 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Analytics

Alle 58 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Marketing

Alle 37 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

IT & Networks

Alle 18 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Music Production

Alle 17 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Raspberry Pi

Diese Rubrik per RSS verfolgen

SaaS & Internet Earning

Diese Rubrik per RSS verfolgen

Smart Home

Alle 18 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Web Entwicklung

Alle 11 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

WordPress-Plugins & Tricks

Alle 14 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen