|
ESPHome 2026.5.0-dev
|
This class represents the communication layer between the front-end MQTT layer and the hardware output layer. More...
#include <light_state.h>
Public Member Functions | |
| LightState (LightOutput *output) | |
| LightTraits | get_traits () |
| LightCall | turn_on () |
| Make a light state call. | |
| LightCall | turn_off () |
| LightCall | toggle () |
| LightCall | make_call () |
| void | setup () override |
| Load state from preferences. | |
| void | dump_config () override |
| void | loop () override |
| float | get_setup_priority () const override |
| Shortly after HARDWARE. | |
| void | publish_state () |
| Publish the currently active state to the frontend. | |
| LightOutput * | get_output () const |
| Get the light output associated with this object. | |
| StringRef | get_effect_name () |
| Return the name of the current effect, or if no effect is active "None". | |
| void | add_remote_values_listener (LightRemoteValuesListener *listener) |
| Add a listener for remote values changes. | |
| void | add_target_state_reached_listener (LightTargetStateReachedListener *listener) |
| Add a listener for target state reached. | |
| void | set_default_transition_length (uint32_t default_transition_length) |
| Set the default transition length, i.e. the transition length when no transition is provided. | |
| uint32_t | get_default_transition_length () const |
| void | set_flash_transition_length (uint32_t flash_transition_length) |
| Set the flash transition length. | |
| uint32_t | get_flash_transition_length () const |
| void | set_gamma_correct (float gamma_correct) |
| Set the gamma correction factor. | |
| float | get_gamma_correct () const |
| void | set_gamma_table (const uint16_t *forward) |
| Set pre-computed gamma forward lookup table (256-entry uint16 PROGMEM array) | |
| const uint16_t * | get_gamma_table () const |
| Get the forward gamma lookup table. | |
| float | gamma_correct_lut (float value) const |
| Apply gamma correction using the pre-computed forward LUT. | |
| float | gamma_uncorrect_lut (float value) const |
| Reverse gamma correction by binary-searching the forward LUT. | |
| float | gamma_correct_lut (float value) const |
| No gamma LUT — passthrough. | |
| float | gamma_uncorrect_lut (float value) const |
| void | set_restore_mode (LightRestoreMode restore_mode) |
| Set the restore mode of this light. | |
| void | set_initial_state (void(*callback)(LightStateRTCState &)) |
| Set a callback to populate the initial state defaults during setup. | |
| bool | supports_effects () |
| Return whether the light has any effects that meet the trait requirements. | |
| const FixedVector< LightEffect * > & | get_effects () const |
| Get all effects for this light state. | |
| void | add_effects (const std::initializer_list< LightEffect * > &effects) |
| Add effects for this light state. | |
| size_t | get_effect_count () const |
| Get the total number of effects available for this light. | |
| uint32_t | get_current_effect_index () const |
| Get the currently active effect index (0 = no effect, 1+ = effect index). | |
| uint32_t | get_effect_index (const std::string &effect_name) const |
| Get effect index by name. Returns 0 if effect not found. | |
| uint32_t | get_effect_index (const char *name, size_t len) const |
| Get effect index by name (const char* overload, avoids std::string construction). | |
| LightEffect * | get_effect_by_index (uint32_t index) const |
| Get effect by index. Returns nullptr if index is invalid. | |
| std::string | get_effect_name_by_index (uint32_t index) const |
| Get effect name by index. Returns "None" for index 0, empty string for invalid index. | |
| void | current_values_as_binary (bool *binary) |
| The result of all the current_values_as_* methods have gamma correction applied. | |
| void | current_values_as_brightness (float *brightness) |
| void | current_values_as_rgb (float *red, float *green, float *blue) |
| void | current_values_as_rgbw (float *red, float *green, float *blue, float *white) |
| void | current_values_as_rgbww (float *red, float *green, float *blue, float *cold_white, float *warm_white, bool constant_brightness=false) |
| void | current_values_as_rgbct (float *red, float *green, float *blue, float *color_temperature, float *white_brightness) |
| void | current_values_as_cwww (float *cold_white, float *warm_white, bool constant_brightness=false) |
| void | current_values_as_ct (float *color_temperature, float *white_brightness) |
| bool | is_transformer_active () |
| Indicator if a transformer (e.g. | |
Public Member Functions inherited from esphome::EntityBase | |
| const StringRef & | get_name () const |
| bool | has_own_name () const |
| ESPDEPRECATED("object_id mangles names and all object_id methods are planned for removal " "(see https://github.com/esphome/backlog/issues/76). " "Now is the time to stop using object_id. If still needed, use get_object_id_to() " "which will remain available longer. get_object_id() will be removed in 2026.7.0", "2025.12.0") std 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 |
| ESPDEPRECATED ("set_internal() is undefined behavior at runtime — components and Home Assistant are NOT " "notified. Use the 'internal:' YAML key instead. Will be removed in 2027.3.0.", "2026.3.0") 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 |
| template<typename T = int> | |
| StringRef | get_device_class_ref () const |
| template<typename T = int> | |
| std::string | get_device_class () const |
| ESPDEPRECATED ("Use get_device_class_to() instead. Will be removed in ESPHome 2026.9.0", "2026.3.0") StringRef get_device_class_ref() const | |
| ESPDEPRECATED("Use get_device_class_to() instead. Will be removed in ESPHome 2026.9.0", "2026.3.0") std StringRef | get_unit_of_measurement_ref () const |
| ESPDEPRECATED("Use get_unit_of_measurement_ref() instead for better performance (avoids string copy). Will be " "removed in ESPHome 2026.9.0", "2026.3.0") std const char * | get_icon_to (std::span< char, MAX_ICON_LENGTH > buffer) const |
| Get the unit of measurement as std::string (deprecated, prefer get_unit_of_measurement_ref()) | |
| template<typename T = int> | |
| StringRef | get_icon_ref () const |
| template<typename T = int> | |
| std::string | get_icon () const |
| ESPDEPRECATED ("Use get_icon_to() instead. Will be removed in ESPHome 2026.9.0", "2026.3.0") StringRef get_icon_ref() const | |
| ESPDEPRECATED("Use get_icon_to() instead. Will be removed in ESPHome 2026.9.0", "2026.3.0") std 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. | |
Public Member Functions inherited from esphome::Component | |
| float | get_actual_setup_priority () const |
| void | set_setup_priority (float priority) |
| void | call () |
| virtual void | on_shutdown () |
| virtual void | on_safe_shutdown () |
| virtual bool | teardown () |
| Called during teardown to allow component to gracefully finish operations. | |
| virtual void | on_powerdown () |
| Called after teardown is complete to power down hardware. | |
| uint8_t | get_component_state () const |
| void | reset_to_construction_state () |
| Reset this component back to the construction state to allow setup to run again. | |
| bool | is_in_loop_state () const |
| Check if this component has completed setup and is in the loop state. | |
| bool | is_idle () const |
| Check if this component is idle. | |
| void | mark_failed () |
| Mark this component as failed. | |
| ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message) | |
| void | mark_failed (const LogString *message) |
| void | disable_loop () |
| Disable this component's loop. | |
| void | enable_loop () |
| Enable this component's loop. | |
| void | enable_loop_soon_any_context () |
| Thread and ISR-safe version of enable_loop() that can be called from any context. | |
| bool | is_failed () const |
| bool | is_ready () const |
| virtual bool | can_proceed () |
| bool | status_has_warning () const |
| bool | status_has_error () const |
| void | status_set_warning () |
| void | status_set_warning (const char *message) |
| void | status_set_warning (const LogString *message) |
| void | status_set_error () |
| ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message) | |
| void | status_set_error (const LogString *message) |
| void | status_clear_warning () |
| void | status_clear_error () |
| void | status_momentary_warning (const char *name, uint32_t length=5000) |
| Set warning status flag and automatically clear it after a timeout. | |
| void | status_momentary_error (const char *name, uint32_t length=5000) |
| Set error status flag and automatically clear it after a timeout. | |
| bool | has_overridden_loop () const |
| const LogString * | get_component_log_str () const ESPHOME_ALWAYS_INLINE |
| Get the integration where this component was declared as a LogString for logging. | |
| bool | should_warn_of_blocking (uint32_t blocking_time) |
Data Fields | |
| LightColorValues | current_values |
| The current values of the light as outputted to the light. | |
| LightColorValues | remote_values |
| The remote color values reported to the frontend. | |
Protected Member Functions | |
| void | start_effect_ (uint32_t effect_index) |
| Internal method to start an effect with the given index. | |
| LightEffect * | get_active_effect_ () |
| Internal method to get the currently active effect. | |
| void | stop_effect_ () |
| Internal method to stop the current effect (if one is active). | |
| void | start_transition_ (const LightColorValues &target, uint32_t length, bool set_remote_values) |
| Internal method to start a transition to the target color with the given length. | |
| void | start_flash_ (const LightColorValues &target, uint32_t length, bool set_remote_values) |
| Internal method to start a flash for the specified amount of time. | |
| void | set_immediately_ (const LightColorValues &target, bool set_remote_values) |
| Internal method to set the color values to target immediately (with no transition). | |
| void | save_remote_values_ () |
| Internal method to save the current remote_values to the preferences. | |
| void | disable_loop_if_idle_ () |
| Disable loop if neither transformer nor effect is active. | |
| void | schedule_write_ () |
| Schedule a write to the light output and enable the loop to process it. | |
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 Member Functions inherited from esphome::Component | |
| friend | void::setup () |
| friend | void::original_setup () |
| void | set_component_source_ (uint8_t index) |
| Set where this component was loaded from for some debug messages. | |
| virtual void | call_setup () |
| void | call_dump_config_ () |
| void | enable_loop_slow_path_ () |
| void | set_component_state_ (uint8_t state) |
| Helper to set component state (clears state bits and sets new state) | |
| bool | set_status_flag_ (uint8_t flag) |
| Helper to set a status LED flag on both this component and the app. | |
| void | set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a numeric ID (zero heap allocation). | |
| void | set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f) |
| void | set_interval (uint32_t interval, std::function< void()> &&f) |
| bool | cancel_interval (uint32_t id) |
| bool | cancel_interval (InternalSchedulerID id) |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std | ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const char *name |
| ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t id | |
| ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t initial_wait_time | |
| ESPDEPRECATED("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const std | ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const char *name) |
| ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(uint32_t id) | |
| void | set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a numeric ID (zero heap allocation). | |
| void | set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f) |
| void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
| bool | cancel_timeout (uint32_t id) |
| bool | cancel_timeout (InternalSchedulerID id) |
| void | defer (std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| void | defer (uint32_t id, std::function< void()> &&f) |
| Defer a callback with a numeric ID (zero heap allocation) | |
| bool | cancel_defer (uint32_t id) |
| void | status_clear_warning_slow_path_ () |
| void | status_clear_error_slow_path_ () |
Protected Attributes | |
| friend | LightOutput |
| friend | LightCall |
| LightOutput * | output_ |
| Store the output to allow effects to have more access. | |
| std::unique_ptr< LightTransformer > | transformer_ {nullptr} |
| The currently active transformer for this light (transition/flash). | |
| FixedVector< LightEffect * > | effects_ |
| List of effects for this light. | |
| ESPPreferenceObject | rtc_ |
| Object used to store the persisted values of the light. | |
| std::unique_ptr< std::vector< LightRemoteValuesListener * > > | remote_values_listeners_ |
| Listeners for remote values changes. | |
| std::unique_ptr< std::vector< LightTargetStateReachedListener * > > | target_state_reached_listeners_ |
| Listeners for target state reached. | |
| void(* | initial_state_callback_ )(LightStateRTCState &) |
| Callback to populate initial state defaults — called once during setup, then cleared. | |
| uint32_t | active_effect_index_ {} |
| Value for storing the index of the currently active effect. 0 if no effect is active. | |
| uint32_t | default_transition_length_ {} |
| Default transition length for all transitions in ms. | |
| uint32_t | flash_transition_length_ {} |
| Transition length to use for flash transitions. | |
| float | gamma_correct_ {} |
| Gamma correction factor for the light. | |
| const uint16_t * | gamma_table_ {nullptr} |
| bool | next_write_ {true} |
| Whether the light value should be written in the next cycle. | |
| bool | is_transformer_active_ {false} |
| LightRestoreMode | restore_mode_ |
| Restore mode of the light. | |
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_ {} |
Protected Attributes inherited from esphome::Component | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi | set_interval )(const char *name, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a unique name. | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo | cancel_interval )(const char *name) |
| Cancel an interval function. | |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t | initial_wait_time |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t | max_attempts |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && | f |
| ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| uint32_t | initial_wait_time |
| uint32_t uint8_t | max_attempts |
| uint32_t uint8_t std::function< RetryResult(uint8_t)> && | f |
| uint32_t uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| uint8_t | max_attempts |
| uint8_t std::function< RetryResult(uint8_t)> && | f |
| uint8_t std::function< RetryResult(uint8_t)> float | backoff_increase_factor = 1.0f) |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi | set_timeout )(const char *name, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a unique name. | |
| ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_timeout(const std boo | cancel_timeout )(const char *name) |
| Cancel a timeout function. | |
| ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi | defer )(const char *name, std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_defer(const std boo | cancel_defer )(const char *name) |
| Cancel a defer callback using the specified name, name must not be empty. | |
| uint8_t | component_source_index_ {0} |
| Index into component source PROGMEM lookup table (0 = not set) | |
| uint8_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_CS} |
| Warn threshold in centiseconds (max 2550ms) | |
| uint8_t | component_state_ {0x00} |
| State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion. | |
| volatile bool | pending_enable_loop_ {false} |
| ISR-safe flag for enable_loop_soon_any_context. | |
| ComponentRuntimeStats | runtime_stats_ |
This class represents the communication layer between the front-end MQTT layer and the hardware output layer.
Definition at line 93 of file light_state.h.
| esphome::light::LightState::LightState | ( | LightOutput * | output | ) |
Definition at line 13 of file light_state.cpp.
| void esphome::light::LightState::add_effects | ( | const std::initializer_list< LightEffect * > & | effects | ) |
Add effects for this light state.
Definition at line 202 of file light_state.cpp.
| void esphome::light::LightState::add_remote_values_listener | ( | LightRemoteValuesListener * | listener | ) |
Add a listener for remote values changes.
Listener is notified when the light's remote values change (state, brightness, color, etc.) Lazily allocates the listener vector on first registration.
Definition at line 176 of file light_state.cpp.
| void esphome::light::LightState::add_target_state_reached_listener | ( | LightTargetStateReachedListener * | listener | ) |
Add a listener for target state reached.
Listener is notified when the light finishes a transition and reaches its target state. Lazily allocates the listener vector on first registration.
Definition at line 182 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_binary | ( | bool * | binary | ) |
The result of all the current_values_as_* methods have gamma correction applied.
Definition at line 207 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_brightness | ( | float * | brightness | ) |
Definition at line 208 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_ct | ( | float * | color_temperature, |
| float * | white_brightness ) |
Definition at line 284 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_cwww | ( | float * | cold_white, |
| float * | warm_white, | ||
| bool | constant_brightness = false ) |
Definition at line 243 of file light_state.cpp.
Definition at line 212 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_rgbct | ( | float * | red, |
| float * | green, | ||
| float * | blue, | ||
| float * | color_temperature, | ||
| float * | white_brightness ) |
Definition at line 233 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_rgbw | ( | float * | red, |
| float * | green, | ||
| float * | blue, | ||
| float * | white ) |
Definition at line 218 of file light_state.cpp.
| void esphome::light::LightState::current_values_as_rgbww | ( | float * | red, |
| float * | green, | ||
| float * | blue, | ||
| float * | cold_white, | ||
| float * | warm_white, | ||
| bool | constant_brightness = false ) |
Definition at line 225 of file light_state.cpp.
|
protected |
Disable loop if neither transformer nor effect is active.
Definition at line 397 of file light_state.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 92 of file light_state.cpp.
Apply gamma correction using the pre-computed forward LUT.
Definition at line 291 of file light_state.cpp.
No gamma LUT — passthrough.
Definition at line 184 of file light_state.h.
Reverse gamma correction by binary-searching the forward LUT.
Definition at line 307 of file light_state.cpp.
Definition at line 185 of file light_state.h.
|
protected |
Internal method to get the currently active effect.
Definition at line 341 of file light_state.cpp.
|
inline |
Get the currently active effect index (0 = no effect, 1+ = effect index).
Definition at line 208 of file light_state.h.
| uint32_t esphome::light::LightState::get_default_transition_length | ( | ) | const |
Definition at line 192 of file light_state.cpp.
|
inline |
Get effect by index. Returns nullptr if index is invalid.
Definition at line 238 of file light_state.h.
|
inline |
Get the total number of effects available for this light.
Definition at line 205 of file light_state.h.
|
inline |
Get effect index by name (const char* overload, avoids std::string construction).
Definition at line 224 of file light_state.h.
|
inline |
Get effect index by name. Returns 0 if effect not found.
Definition at line 211 of file light_state.h.
| StringRef esphome::light::LightState::get_effect_name | ( | ) |
Return the name of the current effect, or if no effect is active "None".
Definition at line 169 of file light_state.cpp.
|
inline |
Get effect name by index. Returns "None" for index 0, empty string for invalid index.
Definition at line 246 of file light_state.h.
| const FixedVector< LightEffect * > & esphome::light::LightState::get_effects | ( | ) | const |
Get all effects for this light state.
Definition at line 201 of file light_state.cpp.
| uint32_t esphome::light::LightState::get_flash_transition_length | ( | ) | const |
Definition at line 196 of file light_state.cpp.
|
inline |
Definition at line 169 of file light_state.h.
|
inline |
Get the forward gamma lookup table.
Definition at line 176 of file light_state.h.
| LightOutput * esphome::light::LightState::get_output | ( | ) | const |
Get the light output associated with this object.
Definition at line 165 of file light_state.cpp.
|
overridevirtual |
Shortly after HARDWARE.
Reimplemented from esphome::Component.
Definition at line 152 of file light_state.cpp.
| LightTraits esphome::light::LightState::get_traits | ( | ) |
Definition at line 15 of file light_state.cpp.
| bool esphome::light::LightState::is_transformer_active | ( | ) |
Indicator if a transformer (e.g.
transition) is active. This is useful for effects e.g. at the start of the apply() method, add a check like:
if (this->state_->is_transformer_active()) { // Something is already running. return; }
Definition at line 328 of file light_state.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 108 of file light_state.cpp.
| LightCall esphome::light::LightState::make_call | ( | ) |
Definition at line 19 of file light_state.cpp.
| void esphome::light::LightState::publish_state | ( | ) |
Publish the currently active state to the frontend.
Definition at line 154 of file light_state.cpp.
|
protected |
Internal method to save the current remote_values to the preferences.
Definition at line 404 of file light_state.cpp.
|
inlineprotected |
Schedule a write to the light output and enable the loop to process it.
Definition at line 313 of file light_state.h.
| void esphome::light::LightState::set_default_transition_length | ( | uint32_t | default_transition_length | ) |
Set the default transition length, i.e. the transition length when no transition is provided.
Definition at line 189 of file light_state.cpp.
| void esphome::light::LightState::set_flash_transition_length | ( | uint32_t | flash_transition_length | ) |
Set the flash transition length.
Definition at line 193 of file light_state.cpp.
| void esphome::light::LightState::set_gamma_correct | ( | float | gamma_correct | ) |
Set the gamma correction factor.
Definition at line 197 of file light_state.cpp.
|
inline |
Set pre-computed gamma forward lookup table (256-entry uint16 PROGMEM array)
Definition at line 173 of file light_state.h.
|
protected |
Internal method to set the color values to target immediately (with no transition).
Definition at line 386 of file light_state.cpp.
| void esphome::light::LightState::set_initial_state | ( | void(* | callback )(LightStateRTCState &) | ) |
Set a callback to populate the initial state defaults during setup.
The callback is called once, then cleared. Values live in flash as code.
Definition at line 199 of file light_state.cpp.
| void esphome::light::LightState::set_restore_mode | ( | LightRestoreMode | restore_mode | ) |
Set the restore mode of this light.
Definition at line 198 of file light_state.cpp.
|
overridevirtual |
Load state from preferences.
Reimplemented from esphome::Component.
Definition at line 21 of file light_state.cpp.
|
protected |
Internal method to start an effect with the given index.
Definition at line 330 of file light_state.cpp.
|
protected |
Internal method to start a flash for the specified amount of time.
Definition at line 369 of file light_state.cpp.
|
protected |
Internal method to start a transition to the target color with the given length.
Definition at line 358 of file light_state.cpp.
|
protected |
Internal method to stop the current effect (if one is active).
Definition at line 348 of file light_state.cpp.
| bool esphome::light::LightState::supports_effects | ( | ) |
Return whether the light has any effects that meet the trait requirements.
Definition at line 200 of file light_state.cpp.
| LightCall esphome::light::LightState::toggle | ( | ) |
Definition at line 18 of file light_state.cpp.
| LightCall esphome::light::LightState::turn_off | ( | ) |
Definition at line 17 of file light_state.cpp.
| LightCall esphome::light::LightState::turn_on | ( | ) |
Make a light state call.
Definition at line 16 of file light_state.cpp.
|
protected |
Value for storing the index of the currently active effect. 0 if no effect is active.
Definition at line 351 of file light_state.h.
| LightColorValues esphome::light::LightState::current_values |
The current values of the light as outputted to the light.
These values represent the "real" state of the light - During transitions this property will be changed continuously (in contrast to .remote_values, where they are constant during transitions).
This value does not have gamma correction applied.
This property is read-only for users. Any changes to it will be ignored.
Definition at line 124 of file light_state.h.
|
protected |
Default transition length for all transitions in ms.
Definition at line 353 of file light_state.h.
|
protected |
List of effects for this light.
Definition at line 323 of file light_state.h.
|
protected |
Transition length to use for flash transitions.
Definition at line 355 of file light_state.h.
|
protected |
Gamma correction factor for the light.
Definition at line 357 of file light_state.h.
|
protected |
Definition at line 359 of file light_state.h.
|
inlineprotected |
Callback to populate initial state defaults — called once during setup, then cleared.
Values live in flash as function body; no per-instance data storage beyond this pointer.
Definition at line 348 of file light_state.h.
|
protected |
Definition at line 365 of file light_state.h.
|
protected |
Definition at line 288 of file light_state.h.
|
protected |
Definition at line 287 of file light_state.h.
|
protected |
Whether the light value should be written in the next cycle.
Definition at line 363 of file light_state.h.
|
protected |
Store the output to allow effects to have more access.
Definition at line 319 of file light_state.h.
| LightColorValues esphome::light::LightState::remote_values |
The remote color values reported to the frontend.
These are different from the "current" values: For example transitions will continuously change the "current" values. But the remote values will immediately switch to the target value for a transition, reducing the number of packets sent.
This value does not have gamma correction applied.
This property is read-only for users. Any changes to it will be ignored.
Definition at line 136 of file light_state.h.
|
protected |
Listeners for remote values changes.
"Remote values" are light color values that are reported to the frontend and have a lower publish frequency than the "real" color values. For example, during transitions the current color value may change continuously, but the remote values will be reported as the target values starting with the beginning of the transition.
Lazily allocated - only created when a listener is actually registered.
Definition at line 336 of file light_state.h.
|
protected |
Restore mode of the light.
Definition at line 367 of file light_state.h.
|
protected |
Object used to store the persisted values of the light.
Definition at line 325 of file light_state.h.
|
protected |
Listeners for target state reached.
Notified when the state of current_values and remote_values are equal (when the transition is finished).
Lazily allocated - only created when a listener is actually registered.
Definition at line 344 of file light_state.h.
|
protected |
The currently active transformer for this light (transition/flash).
Definition at line 321 of file light_state.h.