ESPHome
2024.12.2
|
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. More... | |
LightCall | turn_off () |
LightCall | toggle () |
LightCall | make_call () |
void | setup () override |
Load state from preferences. More... | |
void | dump_config () override |
void | loop () override |
float | get_setup_priority () const override |
Shortly after HARDWARE. More... | |
void | publish_state () |
Publish the currently active state to the frontend. More... | |
LightOutput * | get_output () const |
Get the light output associated with this object. More... | |
std::string | get_effect_name () |
Return the name of the current effect, or if no effect is active "None". More... | |
void | add_new_remote_values_callback (std::function< void()> &&send_callback) |
This lets front-end components subscribe to light change events. More... | |
void | add_new_target_state_reached_callback (std::function< void()> &&send_callback) |
The callback is called once the state of current_values and remote_values are equal (when the transition is finished). More... | |
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. More... | |
uint32_t | get_default_transition_length () const |
void | set_flash_transition_length (uint32_t flash_transition_length) |
Set the flash transition length. More... | |
uint32_t | get_flash_transition_length () const |
void | set_gamma_correct (float gamma_correct) |
Set the gamma correction factor. More... | |
float | get_gamma_correct () const |
void | set_restore_mode (LightRestoreMode restore_mode) |
Set the restore mode of this light. More... | |
void | set_initial_state (const LightStateRTCState &initial_state) |
Set the initial state of this light. More... | |
bool | supports_effects () |
Return whether the light has any effects that meet the trait requirements. More... | |
const std::vector< LightEffect * > & | get_effects () const |
Get all effects for this light state. More... | |
void | add_effects (const std::vector< LightEffect *> &effects) |
Add effects for this light state. More... | |
void | current_values_as_binary (bool *binary) |
The result of all the current_values_as_* methods have gamma correction applied. More... | |
void | current_values_as_brightness (float *brightness) |
void | current_values_as_rgb (float *red, float *green, float *blue, bool color_interlock=false) |
void | current_values_as_rgbw (float *red, float *green, float *blue, float *white, bool color_interlock=false) |
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. More... | |
Public Member Functions inherited from esphome::EntityBase | |
const StringRef & | get_name () const |
void | set_name (const char *name) |
bool | has_own_name () const |
std::string | get_object_id () const |
void | set_object_id (const char *object_id) |
uint32_t | get_object_id_hash () |
bool | is_internal () const |
void | set_internal (bool internal) |
bool | is_disabled_by_default () const |
void | set_disabled_by_default (bool disabled_by_default) |
EntityCategory | get_entity_category () const |
void | set_entity_category (EntityCategory entity_category) |
std::string | get_icon () const |
void | set_icon (const char *icon) |
Public Member Functions inherited from esphome::Component | |
float | get_actual_setup_priority () const |
void | set_setup_priority (float priority) |
virtual float | get_loop_priority () const |
priority of loop(). More... | |
void | call () |
virtual void | on_shutdown () |
virtual void | on_safe_shutdown () |
uint32_t | get_component_state () const |
virtual void | mark_failed () |
Mark this component as failed. More... | |
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 (const char *message="unspecified") |
void | status_set_error (const char *message="unspecified") |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. More... | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. More... | |
Data Fields | |
LightColorValues | current_values |
The current values of the light as outputted to the light. More... | |
LightColorValues | remote_values |
The remote color values reported to the frontend. More... | |
Protected Member Functions | |
void | start_effect_ (uint32_t effect_index) |
Internal method to start an effect with the given index. More... | |
LightEffect * | get_active_effect_ () |
Internal method to get the currently active effect. More... | |
void | stop_effect_ () |
Internal method to stop the current effect (if one is active). More... | |
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. More... | |
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. More... | |
void | set_immediately_ (const LightColorValues &target, bool set_remote_values) |
Internal method to set the color values to target immediately (with no transition). More... | |
void | save_remote_values_ () |
Internal method to save the current remote_values to the preferences. More... | |
Protected Member Functions inherited from esphome::EntityBase | |
virtual uint32_t | hash_base () |
The hash_base() function has been deprecated. More... | |
void | calc_object_id_ () |
Protected Member Functions inherited from esphome::Component | |
virtual void | call_loop () |
virtual void | call_setup () |
virtual void | call_dump_config () |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. More... | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. More... | |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. More... | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. More... | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. More... | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. More... | |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. More... | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. More... | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. More... | |
Protected Attributes | |
friend | LightOutput |
friend | LightCall |
LightOutput * | output_ |
Store the output to allow effects to have more access. More... | |
uint32_t | active_effect_index_ {} |
Value for storing the index of the currently active effect. 0 if no effect is active. More... | |
std::unique_ptr< LightTransformer > | transformer_ {nullptr} |
The currently active transformer for this light (transition/flash). More... | |
bool | next_write_ {true} |
Whether the light value should be written in the next cycle. More... | |
ESPPreferenceObject | rtc_ |
Object used to store the persisted values of the light. More... | |
CallbackManager< void()> | remote_values_callback_ {} |
Callback to call when new values for the frontend are available. More... | |
CallbackManager< void()> | target_state_reached_callback_ {} |
Callback to call when the state of current_values and remote_values are equal This should be called once the state of current_values changed and equals the state of remote_values. More... | |
uint32_t | default_transition_length_ {} |
Default transition length for all transitions in ms. More... | |
uint32_t | flash_transition_length_ {} |
Transition length to use for flash transitions. More... | |
float | gamma_correct_ {} |
Gamma correction factor for the light. More... | |
LightRestoreMode | restore_mode_ |
Restore mode of the light. More... | |
optional< LightStateRTCState > | initial_state_ {} |
Initial state of the light. More... | |
std::vector< LightEffect * > | effects_ |
List of effects for this light. More... | |
bool | is_transformer_active_ = false |
Protected Attributes inherited from esphome::EntityBase | |
StringRef | name_ |
const char * | object_id_c_str_ {nullptr} |
const char * | icon_c_str_ {nullptr} |
uint32_t | object_id_hash_ |
bool | has_own_name_ {false} |
bool | internal_ {false} |
bool | disabled_by_default_ {false} |
EntityCategory | entity_category_ {ENTITY_CATEGORY_NONE} |
Protected Attributes inherited from esphome::Component | |
uint32_t | component_state_ {0x0000} |
State of this component. More... | |
float | setup_priority_override_ {NAN} |
const char * | component_source_ {nullptr} |
This class represents the communication layer between the front-end MQTT layer and the hardware output layer.
Definition at line 63 of file light_state.h.
esphome::light::LightState::LightState | ( | LightOutput * | output | ) |
Definition at line 12 of file light_state.cpp.
void esphome::light::LightState::add_effects | ( | const std::vector< LightEffect *> & | effects | ) |
Add effects for this light state.
Definition at line 170 of file light_state.cpp.
void esphome::light::LightState::add_new_remote_values_callback | ( | std::function< void()> && | send_callback | ) |
This lets front-end components subscribe to light change events.
This callback is called once when the remote color values are changed.
send_callback | The callback. |
Definition at line 150 of file light_state.cpp.
void esphome::light::LightState::add_new_target_state_reached_callback | ( | std::function< void()> && | send_callback | ) |
The callback is called once the state of current_values and remote_values are equal (when the transition is finished).
send_callback |
Definition at line 153 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 177 of file light_state.cpp.
void esphome::light::LightState::current_values_as_brightness | ( | float * | brightness | ) |
Definition at line 178 of file light_state.cpp.
void esphome::light::LightState::current_values_as_ct | ( | float * | color_temperature, |
float * | white_brightness | ||
) |
Definition at line 203 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 199 of file light_state.cpp.
void esphome::light::LightState::current_values_as_rgb | ( | float * | red, |
float * | green, | ||
float * | blue, | ||
bool | color_interlock = false |
||
) |
Definition at line 181 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 193 of file light_state.cpp.
void esphome::light::LightState::current_values_as_rgbw | ( | float * | red, |
float * | green, | ||
float * | blue, | ||
float * | white, | ||
bool | color_interlock = false |
||
) |
Definition at line 185 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 189 of file light_state.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 91 of file light_state.cpp.
|
protected |
Internal method to get the currently active effect.
Definition at line 220 of file light_state.cpp.
uint32_t esphome::light::LightState::get_default_transition_length | ( | ) | const |
Definition at line 160 of file light_state.cpp.
std::string esphome::light::LightState::get_effect_name | ( | ) |
Return the name of the current effect, or if no effect is active "None".
Definition at line 142 of file light_state.cpp.
const std::vector< LightEffect * > & esphome::light::LightState::get_effects | ( | ) | const |
Get all effects for this light state.
Definition at line 169 of file light_state.cpp.
uint32_t esphome::light::LightState::get_flash_transition_length | ( | ) | const |
Definition at line 164 of file light_state.cpp.
|
inline |
Definition at line 143 of file light_state.h.
LightOutput * esphome::light::LightState::get_output | ( | ) | const |
Get the light output associated with this object.
Definition at line 141 of file light_state.cpp.
|
overridevirtual |
Shortly after HARDWARE.
Reimplemented from esphome::Component.
Definition at line 137 of file light_state.cpp.
LightTraits esphome::light::LightState::get_traits | ( | ) |
Definition at line 14 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 209 of file light_state.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 102 of file light_state.cpp.
LightCall esphome::light::LightState::make_call | ( | ) |
Definition at line 18 of file light_state.cpp.
void esphome::light::LightState::publish_state | ( | ) |
Publish the currently active state to the frontend.
Definition at line 139 of file light_state.cpp.
|
protected |
Internal method to save the current remote_values to the preferences.
Definition at line 270 of file light_state.cpp.
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 157 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 161 of file light_state.cpp.
void esphome::light::LightState::set_gamma_correct | ( | float | gamma_correct | ) |
Set the gamma correction factor.
Definition at line 165 of file light_state.cpp.
|
protected |
Internal method to set the color values to target immediately (with no transition).
Definition at line 259 of file light_state.cpp.
void esphome::light::LightState::set_initial_state | ( | const LightStateRTCState & | initial_state | ) |
Set the initial state of this light.
Definition at line 167 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 166 of file light_state.cpp.
|
overridevirtual |
Load state from preferences.
Reimplemented from esphome::Component.
Definition at line 20 of file light_state.cpp.
|
protected |
Internal method to start an effect with the given index.
Definition at line 211 of file light_state.cpp.
|
protected |
Internal method to start a flash for the specified amount of time.
Definition at line 244 of file light_state.cpp.
|
protected |
Internal method to start a transition to the target color with the given length.
Definition at line 235 of file light_state.cpp.
|
protected |
Internal method to stop the current effect (if one is active).
Definition at line 227 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 168 of file light_state.cpp.
LightCall esphome::light::LightState::toggle | ( | ) |
Definition at line 17 of file light_state.cpp.
LightCall esphome::light::LightState::turn_off | ( | ) |
Definition at line 16 of file light_state.cpp.
LightCall esphome::light::LightState::turn_on | ( | ) |
Make a light state call.
Definition at line 15 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 216 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 94 of file light_state.h.
|
protected |
Default transition length for all transitions in ms.
Definition at line 240 of file light_state.h.
|
protected |
List of effects for this light.
Definition at line 250 of file light_state.h.
|
protected |
Transition length to use for flash transitions.
Definition at line 242 of file light_state.h.
|
protected |
Gamma correction factor for the light.
Definition at line 244 of file light_state.h.
|
protected |
Initial state of the light.
Definition at line 248 of file light_state.h.
|
protected |
Definition at line 253 of file light_state.h.
|
protected |
Definition at line 192 of file light_state.h.
|
protected |
Definition at line 191 of file light_state.h.
|
protected |
Whether the light value should be written in the next cycle.
Definition at line 220 of file light_state.h.
|
protected |
Store the output to allow effects to have more access.
Definition at line 214 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 106 of file light_state.h.
|
protected |
Callback to call when new values for the frontend are available.
"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.
Definition at line 232 of file light_state.h.
|
protected |
Restore mode of the light.
Definition at line 246 of file light_state.h.
|
protected |
Object used to store the persisted values of the light.
Definition at line 223 of file light_state.h.
|
protected |
Callback to call when the state of current_values and remote_values are equal This should be called once the state of current_values changed and equals the state of remote_values.
Definition at line 237 of file light_state.h.
|
protected |
The currently active transformer for this light (transition/flash).
Definition at line 218 of file light_state.h.