ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esphome::ld2450::PolygonZone Class Reference

A zone with any polygon shape. More...

#include <polygon_zone.h>

Inheritance diagram for esphome::ld2450::PolygonZone:
esphome::text::Text esphome::EntityBase

Public Member Functions

void set_presence_binary_sensor (binary_sensor::BinarySensor *presence)
 Config validation guarantees every zone gets exactly one presence binary sensor.
 
void setup ()
 Load the saved polygon and publish it. Called from the hub's setup().
 
void dump_config ()
 
void update (bool target_inside, uint32_t now, bool timed_out)
 Publish presence for one radar frame.
 
uint32_t get_last_inside_ms () const
 When a target was last inside the zone, in ms; 0 if never since the polygon was set.
 
bool contains (int16_t x, int16_t y) const
 
bool has_polygon () const
 
- Public Member Functions inherited from esphome::text::Text
void publish_state (const std::string &state)
 
void publish_state (const char *state)
 
void publish_state (const char *state, size_t len)
 
TextCall make_call ()
 Instantiate a TextCall object to modify this text component's state.
 
template<typename F >
void add_on_state_callback (F &&callback)
 
- Public Member Functions inherited from esphome::EntityBase
const StringRef & get_name () const
 
bool has_own_name () const
 
uint32_t get_object_id_hash () const
 
StringRef get_object_id_to (std::span< char, OBJECT_ID_MAX_LEN > buf) const
 Get object_id with zero heap allocation For static case: returns StringRef to internal storage (buffer unused) For dynamic case: formats into buffer and returns StringRef to buffer.
 
size_t write_object_id_to (char *buf, size_t buf_size) const
 Write object_id directly to buffer, returns length written (excluding null) Useful for building compound strings without intermediate buffer.
 
bool is_internal () const
 
void set_internal (bool internal)
 
bool is_disabled_by_default () const
 
EntityCategory get_entity_category () const
 
const char * get_device_class_to (std::span< char, MAX_DEVICE_CLASS_LENGTH > buffer) const
 
StringRef get_unit_of_measurement_ref () const
 
const char * get_icon_to (std::span< char, MAX_ICON_LENGTH > buffer) const
 
uint32_t get_device_id () const
 
Device * get_device () const
 
bool has_state () const
 
void set_has_state (bool state)
 
 ESPDEPRECATED ("Use make_entity_preference<T>() instead, or preferences won't be migrated. " "See https://github.com/esphome/backlog/issues/85. Will be removed in 2027.1.0.", "2026.7.0") uint32_t get_preference_hash()
 Get a unique hash for storing preferences/settings for this entity.
 
template<typename T >
ESPPreferenceObject make_entity_preference (uint32_t version=0)
 Create a preference object for storing this entity's state/settings.
 

Protected Member Functions

void control (const std::string &value) override
 
void publish_polygon_ ()
 
- Protected Member Functions inherited from esphome::text::Text
- Protected Member Functions inherited from esphome::EntityBase
friend void::setup ()
 
friend void::original_setup ()
 
void configure_entity_ (const char *name, uint32_t object_id_hash, uint32_t entity_fields)
 Combined entity setup from codegen: set name, object_id hash, entity string indices, and flags.
 
void set_device_ (Device *device)
 
ESPPreferenceObject make_entity_preference_ (size_t size, uint32_t version)
 Non-template helper for make_entity_preference() to avoid code bloat.
 
void calc_object_id_ ()
 

Protected Attributes

binary_sensor::BinarySensor * presence_ {nullptr}
 
Polygon polygon_
 
ESPPreferenceObject pref_
 
uint32_t last_inside_ms_ {0}
 
- Protected Attributes inherited from esphome::text::Text
LazyCallbackManager< void(const std::string &)> state_callback_
 
- Protected Attributes inherited from esphome::EntityBase
StringRef name_
 
uint32_t object_id_hash_ {}
 
Device * device_ {}
 
struct esphome::EntityBase::EntityFlags flags_
 
uint8_t device_class_idx_ {}
 
uint8_t uom_idx_ {}
 
uint8_t icon_idx_ {}
 

Additional Inherited Members

- Data Fields inherited from esphome::text::Text
std::string state
 
TextTraits traits
 

Detailed Description

A zone with any polygon shape.

The text state holds the polygon, so it can be edited and read back from HA.

The polygon is in the radar's raw coordinates (mm), and targets are checked against it as decoded from each radar frame, before any sensor filter. Filters on the target X/Y sensors change only what they publish, so a filter that changes their values (multiply, offset, lambda, ...) puts them in a different frame from the polygon.

Like the hub's has_target binary sensors, presence stays on until presence_timeout has passed since a target was last inside the zone.

Definition at line 22 of file polygon_zone.h.

Member Function Documentation

◆ contains()

bool esphome::ld2450::PolygonZone::contains ( int16_t x,
int16_t y ) const
inline

Definition at line 48 of file polygon_zone.h.

◆ control()

void esphome::ld2450::PolygonZone::control ( const std::string & value)
overrideprotectedvirtual

Implements esphome::text::Text.

Definition at line 33 of file polygon_zone.cpp.

◆ dump_config()

void esphome::ld2450::PolygonZone::dump_config ( )

Definition at line 25 of file polygon_zone.cpp.

◆ get_last_inside_ms()

uint32_t esphome::ld2450::PolygonZone::get_last_inside_ms ( ) const
inline

When a target was last inside the zone, in ms; 0 if never since the polygon was set.

Definition at line 47 of file polygon_zone.h.

◆ has_polygon()

bool esphome::ld2450::PolygonZone::has_polygon ( ) const
inline

Definition at line 49 of file polygon_zone.h.

◆ publish_polygon_()

void esphome::ld2450::PolygonZone::publish_polygon_ ( )
protected

Definition at line 52 of file polygon_zone.cpp.

◆ set_presence_binary_sensor()

void esphome::ld2450::PolygonZone::set_presence_binary_sensor ( binary_sensor::BinarySensor * presence)
inline

Config validation guarantees every zone gets exactly one presence binary sensor.

Definition at line 25 of file polygon_zone.h.

◆ setup()

void esphome::ld2450::PolygonZone::setup ( )

Load the saved polygon and publish it. Called from the hub's setup().

Definition at line 10 of file polygon_zone.cpp.

◆ update()

void esphome::ld2450::PolygonZone::update ( bool target_inside,
uint32_t now,
bool timed_out )
inline

Publish presence for one radar frame.

A zone without a polygon keeps presence unknown.

Parameters
target_insidewhether any target is inside the zone in this frame.
nowthe frame's time, in ms.
timed_outwhether presence_timeout has passed since get_last_inside_ms().

Definition at line 36 of file polygon_zone.h.

Field Documentation

◆ last_inside_ms_

uint32_t esphome::ld2450::PolygonZone::last_inside_ms_ {0}
protected

Definition at line 58 of file polygon_zone.h.

◆ polygon_

Polygon esphome::ld2450::PolygonZone::polygon_
protected

Definition at line 56 of file polygon_zone.h.

◆ pref_

ESPPreferenceObject esphome::ld2450::PolygonZone::pref_
protected

Definition at line 57 of file polygon_zone.h.

◆ presence_

binary_sensor::BinarySensor* esphome::ld2450::PolygonZone::presence_ {nullptr}
protected

Definition at line 55 of file polygon_zone.h.


The documentation for this class was generated from the following files: