Two related pull requests landed in ESPHome's development branch on the evening of 27 October 2026. The first, #21669 by bdraco, merged at 19:00 Polish time, adds rate limiting filters to text sensors. The second, #21416 by fornellas, merged at 21:50, uses them for a new xy text sensor on the Hi-Link LD2450 radar. The branch is numbered 2026.11.0-dev, so both should ship in ESPHome 2026.11.

The problem with separate X and Y

The LD2450 tracks up to three people and reports each target's x and y together, in the same radar frame. ESPHome has exposed them as two separate sensors, each with its own default filters, and each change goes to Home Assistant as its own message. One value can pass the throttle while the other is held back, so Home Assistant may see the new x with the old y, or values from two different frames.

That broke the companion dashboard card for the polygon zones added earlier in #20154. The card draws live targets on a map and keeps a trail of where people have been, so zones can be drawn over the places that are actually used. With mismatched values it drew targets and trail points where nobody was.

The xy sensor

Each target_1 to target_3 in the ld2450 text sensor platform can now have an xy entity. Its state is one text such as -782,1713, in millimetres, or NA when the target is not tracked. Both numbers always come from the same frame. They are raw radar coordinates, the same ones polygon zones use. By default:

  • a position is published at most once a second;
  • NA is published at once;
  • a position held back by the throttle is sent when the throttle ends, so the last spot of a person who stops moving is not lost;
  • filters: [] publishes every change, up to 10 times a second.

The example in the pull request sets throttle: 200ms on one target and throttle: 0s on another. The entity is not compiled in unless you configure it.

New text sensor filters

To get those defaults, text sensors gained the throttle, throttle_with_priority and timeout filters numeric sensors already had, with the same syntax. throttle_with_priority takes a list of texts that skip the throttle, and timeout resends the last value, or a fixed text, when updates stop. These work on any text sensor, not only the radar.

Documentation is in esphome.io pull requests #7874 and #7920.