Tutorial: Radarzonen des LD2450 in ESPHome und Home Assistant einrichten

Inhalt
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.

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.