[climate] Save 48 bytes per entity by conditionally compiling visual overrides (#12406)
This commit is contained in:
@@ -275,10 +275,13 @@ async def setup_climate_core_(var, config):
|
|||||||
|
|
||||||
visual = config[CONF_VISUAL]
|
visual = config[CONF_VISUAL]
|
||||||
if (min_temp := visual.get(CONF_MIN_TEMPERATURE)) is not None:
|
if (min_temp := visual.get(CONF_MIN_TEMPERATURE)) is not None:
|
||||||
|
cg.add_define("USE_CLIMATE_VISUAL_OVERRIDES")
|
||||||
cg.add(var.set_visual_min_temperature_override(min_temp))
|
cg.add(var.set_visual_min_temperature_override(min_temp))
|
||||||
if (max_temp := visual.get(CONF_MAX_TEMPERATURE)) is not None:
|
if (max_temp := visual.get(CONF_MAX_TEMPERATURE)) is not None:
|
||||||
|
cg.add_define("USE_CLIMATE_VISUAL_OVERRIDES")
|
||||||
cg.add(var.set_visual_max_temperature_override(max_temp))
|
cg.add(var.set_visual_max_temperature_override(max_temp))
|
||||||
if (temp_step := visual.get(CONF_TEMPERATURE_STEP)) is not None:
|
if (temp_step := visual.get(CONF_TEMPERATURE_STEP)) is not None:
|
||||||
|
cg.add_define("USE_CLIMATE_VISUAL_OVERRIDES")
|
||||||
cg.add(
|
cg.add(
|
||||||
var.set_visual_temperature_step_override(
|
var.set_visual_temperature_step_override(
|
||||||
temp_step[CONF_TARGET_TEMPERATURE],
|
temp_step[CONF_TARGET_TEMPERATURE],
|
||||||
@@ -286,8 +289,10 @@ async def setup_climate_core_(var, config):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
if (min_humidity := visual.get(CONF_MIN_HUMIDITY)) is not None:
|
if (min_humidity := visual.get(CONF_MIN_HUMIDITY)) is not None:
|
||||||
|
cg.add_define("USE_CLIMATE_VISUAL_OVERRIDES")
|
||||||
cg.add(var.set_visual_min_humidity_override(min_humidity))
|
cg.add(var.set_visual_min_humidity_override(min_humidity))
|
||||||
if (max_humidity := visual.get(CONF_MAX_HUMIDITY)) is not None:
|
if (max_humidity := visual.get(CONF_MAX_HUMIDITY)) is not None:
|
||||||
|
cg.add_define("USE_CLIMATE_VISUAL_OVERRIDES")
|
||||||
cg.add(var.set_visual_max_humidity_override(max_humidity))
|
cg.add(var.set_visual_max_humidity_override(max_humidity))
|
||||||
|
|
||||||
if (mqtt_id := config.get(CONF_MQTT_ID)) is not None:
|
if (mqtt_id := config.get(CONF_MQTT_ID)) is not None:
|
||||||
|
|||||||
@@ -473,26 +473,28 @@ void Climate::publish_state() {
|
|||||||
|
|
||||||
ClimateTraits Climate::get_traits() {
|
ClimateTraits Climate::get_traits() {
|
||||||
auto traits = this->traits();
|
auto traits = this->traits();
|
||||||
if (this->visual_min_temperature_override_.has_value()) {
|
#ifdef USE_CLIMATE_VISUAL_OVERRIDES
|
||||||
traits.set_visual_min_temperature(*this->visual_min_temperature_override_);
|
if (!std::isnan(this->visual_min_temperature_override_)) {
|
||||||
|
traits.set_visual_min_temperature(this->visual_min_temperature_override_);
|
||||||
}
|
}
|
||||||
if (this->visual_max_temperature_override_.has_value()) {
|
if (!std::isnan(this->visual_max_temperature_override_)) {
|
||||||
traits.set_visual_max_temperature(*this->visual_max_temperature_override_);
|
traits.set_visual_max_temperature(this->visual_max_temperature_override_);
|
||||||
}
|
}
|
||||||
if (this->visual_target_temperature_step_override_.has_value()) {
|
if (!std::isnan(this->visual_target_temperature_step_override_)) {
|
||||||
traits.set_visual_target_temperature_step(*this->visual_target_temperature_step_override_);
|
traits.set_visual_target_temperature_step(this->visual_target_temperature_step_override_);
|
||||||
traits.set_visual_current_temperature_step(*this->visual_current_temperature_step_override_);
|
traits.set_visual_current_temperature_step(this->visual_current_temperature_step_override_);
|
||||||
}
|
}
|
||||||
if (this->visual_min_humidity_override_.has_value()) {
|
if (!std::isnan(this->visual_min_humidity_override_)) {
|
||||||
traits.set_visual_min_humidity(*this->visual_min_humidity_override_);
|
traits.set_visual_min_humidity(this->visual_min_humidity_override_);
|
||||||
}
|
}
|
||||||
if (this->visual_max_humidity_override_.has_value()) {
|
if (!std::isnan(this->visual_max_humidity_override_)) {
|
||||||
traits.set_visual_max_humidity(*this->visual_max_humidity_override_);
|
traits.set_visual_max_humidity(this->visual_max_humidity_override_);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return traits;
|
return traits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_CLIMATE_VISUAL_OVERRIDES
|
||||||
void Climate::set_visual_min_temperature_override(float visual_min_temperature_override) {
|
void Climate::set_visual_min_temperature_override(float visual_min_temperature_override) {
|
||||||
this->visual_min_temperature_override_ = visual_min_temperature_override;
|
this->visual_min_temperature_override_ = visual_min_temperature_override;
|
||||||
}
|
}
|
||||||
@@ -513,6 +515,7 @@ void Climate::set_visual_min_humidity_override(float visual_min_humidity_overrid
|
|||||||
void Climate::set_visual_max_humidity_override(float visual_max_humidity_override) {
|
void Climate::set_visual_max_humidity_override(float visual_max_humidity_override) {
|
||||||
this->visual_max_humidity_override_ = visual_max_humidity_override;
|
this->visual_max_humidity_override_ = visual_max_humidity_override;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ClimateCall Climate::make_call() { return ClimateCall(this); }
|
ClimateCall Climate::make_call() { return ClimateCall(this); }
|
||||||
|
|
||||||
|
|||||||
@@ -213,11 +213,13 @@ class Climate : public EntityBase {
|
|||||||
*/
|
*/
|
||||||
ClimateTraits get_traits();
|
ClimateTraits get_traits();
|
||||||
|
|
||||||
|
#ifdef USE_CLIMATE_VISUAL_OVERRIDES
|
||||||
void set_visual_min_temperature_override(float visual_min_temperature_override);
|
void set_visual_min_temperature_override(float visual_min_temperature_override);
|
||||||
void set_visual_max_temperature_override(float visual_max_temperature_override);
|
void set_visual_max_temperature_override(float visual_max_temperature_override);
|
||||||
void set_visual_temperature_step_override(float target, float current);
|
void set_visual_temperature_step_override(float target, float current);
|
||||||
void set_visual_min_humidity_override(float visual_min_humidity_override);
|
void set_visual_min_humidity_override(float visual_min_humidity_override);
|
||||||
void set_visual_max_humidity_override(float visual_max_humidity_override);
|
void set_visual_max_humidity_override(float visual_max_humidity_override);
|
||||||
|
#endif
|
||||||
|
|
||||||
/// Check if a custom fan mode is currently active.
|
/// Check if a custom fan mode is currently active.
|
||||||
bool has_custom_fan_mode() const { return this->custom_fan_mode_ != nullptr; }
|
bool has_custom_fan_mode() const { return this->custom_fan_mode_ != nullptr; }
|
||||||
@@ -321,12 +323,14 @@ class Climate : public EntityBase {
|
|||||||
CallbackManager<void(Climate &)> state_callback_{};
|
CallbackManager<void(Climate &)> state_callback_{};
|
||||||
CallbackManager<void(ClimateCall &)> control_callback_{};
|
CallbackManager<void(ClimateCall &)> control_callback_{};
|
||||||
ESPPreferenceObject rtc_;
|
ESPPreferenceObject rtc_;
|
||||||
optional<float> visual_min_temperature_override_{};
|
#ifdef USE_CLIMATE_VISUAL_OVERRIDES
|
||||||
optional<float> visual_max_temperature_override_{};
|
float visual_min_temperature_override_{NAN};
|
||||||
optional<float> visual_target_temperature_step_override_{};
|
float visual_max_temperature_override_{NAN};
|
||||||
optional<float> visual_current_temperature_step_override_{};
|
float visual_target_temperature_step_override_{NAN};
|
||||||
optional<float> visual_min_humidity_override_{};
|
float visual_current_temperature_step_override_{NAN};
|
||||||
optional<float> visual_max_humidity_override_{};
|
float visual_min_humidity_override_{NAN};
|
||||||
|
float visual_max_humidity_override_{NAN};
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** The active custom fan mode (private - enforces use of safe setters).
|
/** The active custom fan mode (private - enforces use of safe setters).
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#define USE_BUTTON
|
#define USE_BUTTON
|
||||||
#define USE_CAMERA
|
#define USE_CAMERA
|
||||||
#define USE_CLIMATE
|
#define USE_CLIMATE
|
||||||
|
#define USE_CLIMATE_VISUAL_OVERRIDES
|
||||||
#define USE_CONTROLLER_REGISTRY
|
#define USE_CONTROLLER_REGISTRY
|
||||||
#define USE_COVER
|
#define USE_COVER
|
||||||
#define USE_DATETIME
|
#define USE_DATETIME
|
||||||
|
|||||||
Reference in New Issue
Block a user