ESPHome  2024.3.2
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
esphome::climate::Climate Class Referenceabstract

ClimateDevice - This is the base class for all climate integrations. More...

#include <climate.h>

Inheritance diagram for esphome::climate::Climate:
esphome::EntityBase esphome::anova::Anova esphome::bang_bang::BangBangClimate esphome::bedjet::BedJetClimate esphome::climate_ir::ClimateIR esphome::demo::DemoClimate esphome::haier::HaierClimateBase esphome::midea::ac::AirConditioner esphome::pid::PIDClimate esphome::thermostat::ThermostatClimate esphome::tuya::TuyaClimate esphome::uponor_smatrix::UponorSmatrixClimate esphome::yashima::YashimaClimate

Public Member Functions

 Climate ()
 
void add_on_state_callback (std::function< void(Climate &)> &&callback)
 Add a callback for the climate device state, each time the state of the climate device is updated (using publish_state), this callback will be called. More...
 
void add_on_control_callback (std::function< void(ClimateCall &)> &&callback)
 Add a callback for the climate device configuration; each time the configuration parameters of a climate device is updated (using perform() of a ClimateCall), this callback will be called, before any on_state callback. More...
 
ClimateCall make_call ()
 Make a climate device control call, this is used to control the climate device, see the ClimateCall description for more info. More...
 
void publish_state ()
 Publish the state of the climate device, to be called from integrations. More...
 
ClimateTraits get_traits ()
 Get the traits of this climate device with all overrides applied. More...
 
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_temperature_step_override (float target, float current)
 
void set_visual_min_humidity_override (float visual_min_humidity_override)
 
void set_visual_max_humidity_override (float visual_max_humidity_override)
 
- Public Member Functions inherited from esphome::EntityBase
const StringRefget_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)
 

Data Fields

ClimateMode mode {CLIMATE_MODE_OFF}
 The active mode of the climate device. More...
 
ClimateAction action {CLIMATE_ACTION_OFF}
 The active state of the climate device. More...
 
float current_temperature {NAN}
 The current temperature of the climate device, as reported from the integration. More...
 
float current_humidity {NAN}
 The current humidity of the climate device, as reported from the integration. More...
 
union {
   float   target_temperature
 The target temperature of the climate device. More...
 
   struct {
      float   target_temperature_low {NAN}
 The minimum target temperature of the climate device, for climate devices with split target temperature. More...
 
      float   target_temperature_high {NAN}
 The maximum target temperature of the climate device, for climate devices with split target temperature. More...
 
   } 
 
}; 
 
float target_humidity
 The target humidity of the climate device. More...
 
optional< ClimateFanModefan_mode
 The active fan mode of the climate device. More...
 
ClimateSwingMode swing_mode
 The active swing mode of the climate device. More...
 
optional< std::string > custom_fan_mode
 The active custom fan mode of the climate device. More...
 
optional< ClimatePresetpreset
 The active preset of the climate device. More...
 
optional< std::string > custom_preset
 The active custom preset mode of the climate device. More...
 

Protected Member Functions

bool set_fan_mode_ (ClimateFanMode mode)
 Set fan mode. Reset custom fan mode. Return true if fan mode has been changed. More...
 
bool set_custom_fan_mode_ (const std::string &mode)
 Set custom fan mode. Reset primary fan mode. Return true if fan mode has been changed. More...
 
bool set_preset_ (ClimatePreset preset)
 Set preset. Reset custom preset. Return true if preset has been changed. More...
 
bool set_custom_preset_ (const std::string &preset)
 Set custom preset. Reset primary preset. Return true if preset has been changed. More...
 
virtual ClimateTraits traits ()=0
 Get the default traits of this climate device. More...
 
virtual void control (const ClimateCall &call)=0
 Control the climate device, this is a virtual method that each climate integration must implement. More...
 
optional< ClimateDeviceRestoreStaterestore_state_ ()
 Restore the state of the climate device, call this from your setup() method. More...
 
void save_state_ ()
 Internal method to save the state of the climate device to recover memory. More...
 
void dump_traits_ (const char *tag)
 
- 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 Attributes

friend ClimateCall
 
CallbackManager< void(Climate &)> state_callback_ {}
 
CallbackManager< void(ClimateCall &)> control_callback_ {}
 
ESPPreferenceObject rtc_
 
optional< float > visual_min_temperature_override_ {}
 
optional< float > visual_max_temperature_override_ {}
 
optional< float > visual_target_temperature_step_override_ {}
 
optional< float > visual_current_temperature_step_override_ {}
 
optional< float > visual_min_humidity_override_ {}
 
optional< float > visual_max_humidity_override_ {}
 
- 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}
 

Detailed Description

ClimateDevice - This is the base class for all climate integrations.

Each integration needs to extend this class and implement two functions:

To write data to the frontend, the integration must first set the properties using this->property = value; (for example this->current_temperature = 42.0;); then the integration must call this->publish_state(); to send the entire state to the frontend.

The entire state of the climate device is encoded in public properties of the base class (current_temperature, mode etc). These are read-only for the user and rw for integrations. The reason these are public is for simple access to them from lambdas if (id(my_climate).mode == climate::CLIMATE_MODE_HEAT_COOL) ...

Definition at line 168 of file climate.h.

Constructor & Destructor Documentation

◆ Climate()

esphome::climate::Climate::Climate ( )
inline

Definition at line 170 of file climate.h.

Member Function Documentation

◆ add_on_control_callback()

void esphome::climate::Climate::add_on_control_callback ( std::function< void(ClimateCall &)> &&  callback)

Add a callback for the climate device configuration; each time the configuration parameters of a climate device is updated (using perform() of a ClimateCall), this callback will be called, before any on_state callback.

Parameters
callbackThe callback to call.

Definition at line 322 of file climate.cpp.

◆ add_on_state_callback()

void esphome::climate::Climate::add_on_state_callback ( std::function< void(Climate &)> &&  callback)

Add a callback for the climate device state, each time the state of the climate device is updated (using publish_state), this callback will be called.

Parameters
callbackThe callback to call.

Definition at line 318 of file climate.cpp.

◆ control()

virtual void esphome::climate::Climate::control ( const ClimateCall call)
protectedpure virtual

◆ dump_traits_()

void esphome::climate::Climate::dump_traits_ ( const char *  tag)
protected

Definition at line 569 of file climate.cpp.

◆ get_traits()

ClimateTraits esphome::climate::Climate::get_traits ( )

Get the traits of this climate device with all overrides applied.

Traits are static data that encode the capabilities and static data for a climate device such as supported modes, temperature range etc.

Definition at line 440 of file climate.cpp.

◆ make_call()

ClimateCall esphome::climate::Climate::make_call ( )

Make a climate device control call, this is used to control the climate device, see the ClimateCall description for more info.

Returns
A new ClimateCall instance targeting this climate device.

Definition at line 479 of file climate.cpp.

◆ publish_state()

void esphome::climate::Climate::publish_state ( )

Publish the state of the climate device, to be called from integrations.

This will schedule the climate device to publish its state to all listeners and save the current state to recover memory.

Definition at line 395 of file climate.cpp.

◆ restore_state_()

optional< ClimateDeviceRestoreState > esphome::climate::Climate::restore_state_ ( )
protected

Restore the state of the climate device, call this from your setup() method.

Definition at line 329 of file climate.cpp.

◆ save_state_()

void esphome::climate::Climate::save_state_ ( )
protected

Internal method to save the state of the climate device to recover memory.

This is automatically called from publish_state()

Definition at line 337 of file climate.cpp.

◆ set_custom_fan_mode_()

bool esphome::climate::Climate::set_custom_fan_mode_ ( const std::string &  mode)
protected

Set custom fan mode. Reset primary fan mode. Return true if fan mode has been changed.

Definition at line 559 of file climate.cpp.

◆ set_custom_preset_()

bool esphome::climate::Climate::set_custom_preset_ ( const std::string &  preset)
protected

Set custom preset. Reset primary preset. Return true if preset has been changed.

Definition at line 565 of file climate.cpp.

◆ set_fan_mode_()

bool esphome::climate::Climate::set_fan_mode_ ( ClimateFanMode  mode)
protected

Set fan mode. Reset custom fan mode. Return true if fan mode has been changed.

Definition at line 555 of file climate.cpp.

◆ set_preset_()

bool esphome::climate::Climate::set_preset_ ( ClimatePreset  preset)
protected

Set preset. Reset custom preset. Return true if preset has been changed.

Definition at line 563 of file climate.cpp.

◆ set_visual_max_humidity_override()

void esphome::climate::Climate::set_visual_max_humidity_override ( float  visual_max_humidity_override)

Definition at line 475 of file climate.cpp.

◆ set_visual_max_temperature_override()

void esphome::climate::Climate::set_visual_max_temperature_override ( float  visual_max_temperature_override)

Definition at line 465 of file climate.cpp.

◆ set_visual_min_humidity_override()

void esphome::climate::Climate::set_visual_min_humidity_override ( float  visual_min_humidity_override)

Definition at line 472 of file climate.cpp.

◆ set_visual_min_temperature_override()

void esphome::climate::Climate::set_visual_min_temperature_override ( float  visual_min_temperature_override)

Definition at line 462 of file climate.cpp.

◆ set_visual_temperature_step_override()

void esphome::climate::Climate::set_visual_temperature_step_override ( float  target,
float  current 
)

Definition at line 468 of file climate.cpp.

◆ traits()

virtual ClimateTraits esphome::climate::Climate::traits ( )
protectedpure virtual

Get the default traits of this climate device.

Traits are static data that encode the capabilities and static data for a climate device such as supported modes, temperature range etc. Each integration must implement this method and the return value must be constant during all of execution time.

Implemented in esphome::thermostat::ThermostatClimate, esphome::haier::HaierClimateBase, esphome::demo::DemoClimate, esphome::mitsubishi::MitsubishiClimate, esphome::pid::PIDClimate, esphome::climate_ir::ClimateIR, esphome::midea::ac::AirConditioner, esphome::tuya::TuyaClimate, esphome::bang_bang::BangBangClimate, esphome::bedjet::BedJetClimate, esphome::anova::Anova, esphome::yashima::YashimaClimate, and esphome::uponor_smatrix::UponorSmatrixClimate.

Field Documentation

◆ @71

union { ... }

◆ action

ClimateAction esphome::climate::Climate::action {CLIMATE_ACTION_OFF}

The active state of the climate device.

Definition at line 176 of file climate.h.

◆ ClimateCall

friend esphome::climate::Climate::ClimateCall
protected

Definition at line 255 of file climate.h.

◆ control_callback_

CallbackManager<void(ClimateCall &)> esphome::climate::Climate::control_callback_ {}
protected

Definition at line 296 of file climate.h.

◆ current_humidity

float esphome::climate::Climate::current_humidity {NAN}

The current humidity of the climate device, as reported from the integration.

Definition at line 182 of file climate.h.

◆ current_temperature

float esphome::climate::Climate::current_temperature {NAN}

The current temperature of the climate device, as reported from the integration.

Definition at line 179 of file climate.h.

◆ custom_fan_mode

optional<std::string> esphome::climate::Climate::custom_fan_mode

The active custom fan mode of the climate device.

Definition at line 205 of file climate.h.

◆ custom_preset

optional<std::string> esphome::climate::Climate::custom_preset

The active custom preset mode of the climate device.

Definition at line 211 of file climate.h.

◆ fan_mode

optional<ClimateFanMode> esphome::climate::Climate::fan_mode

The active fan mode of the climate device.

Definition at line 199 of file climate.h.

◆ mode

ClimateMode esphome::climate::Climate::mode {CLIMATE_MODE_OFF}

The active mode of the climate device.

Definition at line 173 of file climate.h.

◆ preset

optional<ClimatePreset> esphome::climate::Climate::preset

The active preset of the climate device.

Definition at line 208 of file climate.h.

◆ rtc_

ESPPreferenceObject esphome::climate::Climate::rtc_
protected

Definition at line 297 of file climate.h.

◆ state_callback_

CallbackManager<void(Climate &)> esphome::climate::Climate::state_callback_ {}
protected

Definition at line 295 of file climate.h.

◆ swing_mode

ClimateSwingMode esphome::climate::Climate::swing_mode

The active swing mode of the climate device.

Definition at line 202 of file climate.h.

◆ target_humidity

float esphome::climate::Climate::target_humidity

The target humidity of the climate device.

Definition at line 196 of file climate.h.

◆ target_temperature

float esphome::climate::Climate::target_temperature

The target temperature of the climate device.

Definition at line 186 of file climate.h.

◆ target_temperature_high

float esphome::climate::Climate::target_temperature_high {NAN}

The maximum target temperature of the climate device, for climate devices with split target temperature.

Definition at line 191 of file climate.h.

◆ target_temperature_low

float esphome::climate::Climate::target_temperature_low {NAN}

The minimum target temperature of the climate device, for climate devices with split target temperature.

Definition at line 189 of file climate.h.

◆ visual_current_temperature_step_override_

optional<float> esphome::climate::Climate::visual_current_temperature_step_override_ {}
protected

Definition at line 301 of file climate.h.

◆ visual_max_humidity_override_

optional<float> esphome::climate::Climate::visual_max_humidity_override_ {}
protected

Definition at line 303 of file climate.h.

◆ visual_max_temperature_override_

optional<float> esphome::climate::Climate::visual_max_temperature_override_ {}
protected

Definition at line 299 of file climate.h.

◆ visual_min_humidity_override_

optional<float> esphome::climate::Climate::visual_min_humidity_override_ {}
protected

Definition at line 302 of file climate.h.

◆ visual_min_temperature_override_

optional<float> esphome::climate::Climate::visual_min_temperature_override_ {}
protected

Definition at line 298 of file climate.h.

◆ visual_target_temperature_step_override_

optional<float> esphome::climate::Climate::visual_target_temperature_step_override_ {}
protected

Definition at line 300 of file climate.h.


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