{"id":13035,"date":"2026-09-15T07:35:00","date_gmt":"2026-09-15T05:35:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13035"},"modified":"2026-09-09T13:24:55","modified_gmt":"2026-09-09T11:24:55","slug":"tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/","title":{"rendered":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant"},"content":{"rendered":"<p>A presence radar of the LD2450 kind does something a motion detector never could: it says where. Up to three targets, each with an x and a y coordinate in millimetres, updated several times a second.<\/p>\n<p>That turns the interesting question into a geometric one. A zone is four numbers &#8211; two on each axis &#8211; and everything that makes such a setup useful or maddening happens in how those four numbers are arrived at.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/radarzonen-en.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"A top-down coordinate grid with the sensor at the origin, its detection wedge, two rectangular zones drawn in millimetre coordinates and a tracked target, beside a table of the zone bounds\"><figcaption>The origin sits at the sensor, y runs forward, x runs sideways and is negative on the left. A zone is a rectangle in that frame &#8211; not in the room.<\/figcaption><\/figure>\n<h2>What the Sensor Actually Reports<\/h2>\n<p>The LD2450 is a 24 GHz radar that tracks up to three targets at once. Per target it delivers three numbers: an x coordinate, a y coordinate and a speed &#8211; the first two in millimetres, the last in centimetres per second, with a negative sign meaning movement towards the sensor.<\/p>\n<p>This is where it differs from its smaller sibling. The LD2410 answers only whether something is there and roughly how far away, split into distance gates. It cannot separate a desk from a doorway, because it has no idea in which direction either lies.<\/p>\n<p>Two properties are worth knowing before any mounting happens. The detection area is a wedge of about 120 degrees, so 60 degrees to each side of the front direction &#8211; anything outside it is invisible regardless of distance. And the useful range indoors is around six metres, with the accuracy of the coordinates falling off well before that.<\/p>\n<h2>Fixing the Origin Before Anything Else<\/h2>\n<p>Every zone number refers to a coordinate frame whose origin is the sensor itself. The y axis points in the direction the board faces; the x axis runs across it, negative to the left, positive to the right, seen from behind the sensor.<\/p>\n<p>Three consequences follow, and all three are cheaper to handle before the module is glued to a wall.<\/p>\n<p>A sensor mounted rotated by ninety degrees swaps the axes, and every zone drawn on a floor plan has to be transposed. A sensor mounted upside down mirrors the x axis, so left and right change places and the zone lands on the other side of the room. And a sensor moved twenty centimetres to a nicer spot invalidates every zone at once, because all of them were measured from where it used to be.<\/p>\n<p>The practical mounting position for an LD2450 is on a wall at roughly 1.2 to 1.5 metres &#8211; about waist height. Higher up, the radar looks down onto people rather than across at them, and the y coordinate then measures a diagonal rather than a distance along the floor. A ceiling position is a job for a different sensor.<\/p>\n<h2>The Configuration, and Where the Zone Lives<\/h2>\n<p>The ESPHome side is short. The radar speaks over a serial connection at 256 000 baud, and the component turns that into entities.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>uart:\n  id: uart_radar\n  tx_pin: GPIO17\n  rx_pin: GPIO16\n  baud_rate: 256000\n  parity: NONE\n  stop_bits: 1\n\nld2450:\n  id: radar\n  uart_id: uart_radar\n  throttle: 1000ms\n\nbinary_sensor:\n  - platform: ld2450\n    ld2450_id: radar\n    has_target:\n      name: \"Presence\"\n    zone_1:\n      occupancy:\n        name: \"Desk occupied\"\n    zone_2:\n      occupancy:\n        name: \"Doorway occupied\"\n\nsensor:\n  - platform: ld2450\n    ld2450_id: radar\n    target_1:\n      x:\n        name: \"Target 1 X\"\n      y:\n        name: \"Target 1 Y\"\n      speed:\n        name: \"Target 1 speed\"\n    zone_1:\n      target_count:\n        name: \"Targets at the desk\"\n\nnumber:\n  - platform: ld2450\n    ld2450_id: radar\n    presence_timeout:\n      name: \"Presence timeout\"\n    zone_1:\n      x_begin:\n        name: \"Zone 1 X begin\"\n      y_begin:\n        name: \"Zone 1 Y begin\"\n      x_end:\n        name: \"Zone 1 X end\"\n      y_end:\n        name: \"Zone 1 Y end\"<\/code><\/pre>\n<p>The <code>throttle<\/code> is the setting most worth having. Without it the radar reports several times a second, and every one of those reports becomes a state change in Home Assistant. One second is plenty for lighting and keeps the database from growing by a megabyte a day per sensor.<\/p>\n<p>Where the zone bounds live is the detail that surprises people. They are not values in the YAML &#8211; they are numbers stored in the radar module&#8217;s own flash, and ESPHome exposes them as number entities so they can be set once. That is convenient, because a zone can then be corrected from a phone while standing in the room. It is also a trap, because a replaced module comes back with the factory zones and nothing in the configuration says what they used to be. The four numbers per zone belong in a comment in the YAML, if only as documentation.<\/p>\n<h2>Measuring the Zone Instead of Guessing It<\/h2>\n<p>Zone bounds taken from a floor plan are wrong often enough that measuring is faster. The measurement needs one person, five minutes and the two coordinate sensors from the configuration above.<\/p>\n<p>Standing at each corner of the intended zone and reading the x and y values gives the rectangle directly. Four corners, eight numbers, and the extremes of those are the bounds. A tolerance of about twenty centimetres on each side is worth adding, because a person is not a point: the radar reports the centre of the reflection, and that wanders across the body with every turn.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>Corner measurements at the desk (x \/ y in mm)\n\n  front left     380 \/  840\n  front right   1760 \/  810\n  back left      420 \/ 2310\n  back right    1780 \/ 2360\n\nZone 1 with tolerance:  x  300 \u2026 1800     y  800 \u2026 2400<\/code><\/pre>\n<p>Two checks belong to the same session. Walking through the zone and out again should switch the occupancy sensor cleanly in both directions. And standing just outside the boundary should not &#8211; if it does, the zone is bigger than intended, or the reflection is coming from somewhere other than the person.<\/p>\n<p>The second check is the one that finds the mounting mistakes. A metal cabinet, a radiator or a large mirror reflects the radar signal and produces a target that stands where nobody is. Such a phantom is recognisable by being perfectly still and never leaving; the fix is a different sensor angle, not a smaller zone.<\/p>\n<h2>The Automation, and the Part That Makes It Flicker<\/h2>\n<p>With a working zone, the automation itself is unremarkable &#8211; and would flicker without one line.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>binary_sensor:\n  - platform: ld2450\n    ld2450_id: radar\n    zone_1:\n      occupancy:\n        name: \"Desk occupied\"\n        filters:\n          - delayed_off: 20s<\/code><\/pre>\n<p>The <code>delayed_off<\/code> is the difference between a lamp that stays on while somebody works and one that switches off whenever the person leans back. A radar loses a still target more easily than a moving one, and twenty seconds of hold costs nothing while it removes the entire class of complaint.<\/p>\n<p>Its counterpart is the presence timeout in the module itself, which decides how long the radar keeps reporting a target after the last detection. Both delays add up, so a five-second timeout plus a twenty-second filter means the light goes out twenty-five seconds after the desk is empty. Worth setting on purpose rather than by accident.<\/p>\n<p>On the Home Assistant side, one rule saves a lot of debugging: an automation should react to the zone sensor, never to the raw coordinates. A trigger on a numeric x value fires on every jitter of the reported centre, and the same person sitting still can cross such a threshold dozens of times an hour.<\/p>\n<h2>What Still Goes Wrong Afterwards<\/h2>\n<p>Three effects account for most of the remaining trouble, and each has a different fix.<\/p>\n<p>The first is movement that is not a person. A fan, a curtain in a draught, a hanging plant &#8211; all of them move, all of them reflect, and to the radar they look like a slow target. A zone that excludes them is the cleanest answer; where that is not possible, a minimum speed condition helps, because the artefacts rarely produce a consistent direction.<\/p>\n<p>The second is the neighbouring room. Twenty-four gigahertz passes through plasterboard with little loss, and a zone laid against a wall therefore also covers the sofa behind it. The coordinates say nothing about walls, because the radar knows nothing about them. Only measuring finds this, and it is worth doing deliberately: someone walks around in the next room while the target count is watched.<\/p>\n<p>The third is that a second radar in the same room disturbs the first. Two LD2450 modules on the same frequency and pointing at each other produce targets in both that belong to neither. Where two are needed, they should face away from each other, and the overlap of their wedges should stay small.<\/p>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/esphome.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">ESPHome documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Home Assistant documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/integrations\/bluetooth\/\" target=\"_blank\" rel=\"noopener noreferrer\">Home Assistant presence detection<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>An LD2450 reports coordinates in millimetres, and a zone is four numbers around them. Getting those four numbers right is a matter of measuring rather than estimating &#8211; and of knowing where the sensor thinks the origin is.<\/p>\n","protected":false},"author":1,"featured_media":13228,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92624],"tags":[91591,91365,91626,91219],"class_list":["post-13035","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-smart-home","tag-esphome","tag-home-assistant","tag-smart-home-de","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T05:35:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant\",\"datePublished\":\"2026-09-15T05:35:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/\"},\"wordCount\":1263,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png\",\"keywords\":[\"ESPHome\",\"Home Assistant\",\"Smart Home\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/\",\"name\":\"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png\",\"datePublished\":\"2026-09-15T05:35:00+00:00\",\"description\":\"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog","description":"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog","og_description":"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-15T05:35:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png","type":"image\/png"}],"author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant","datePublished":"2026-09-15T05:35:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/"},"wordCount":1263,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png","keywords":["ESPHome","Home Assistant","Smart Home","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/","name":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png","datePublished":"2026-09-15T05:35:00+00:00","description":"Fixing the coordinate origin, measuring zone bounds instead of guessing them, and turning a zone into an automation that does not flicker.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13035-tutorial-setting-up-ld2450-radar-zones-i.png","width":1200,"height":630,"caption":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/tutorial-setting-up-ld2450-radar-zones-in-esphome-and-home-assistant\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Setting Up LD2450 Radar Zones in ESPHome and Home Assistant"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13035"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13035\/revisions"}],"predecessor-version":[{"id":17323,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13035\/revisions\/17323"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13228"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}