34 std::function<void()>
func;
62 void setup()
override;
241 bool is_default_preset);
446 std::vector<ThermostatClimateTimer>
timer_{
460 std::map<climate::ClimatePreset, ThermostatClimateTargetTempConfig>
preset_config_{};
BedjetMode mode
BedJet operating mode.
This class is used to encode all control actions on a climate device.
ClimateDevice - This is the base class for all climate integrations.
ClimateMode mode
The active mode of the climate device.
optional< ClimateFanMode > fan_mode
The active fan mode of the climate device.
ClimateSwingMode swing_mode
The active swing mode of the climate device.
optional< std::string > custom_preset
The active custom preset mode of the climate device.
ClimateAction action
The active state of the climate device.
void publish_state()
Publish the state of the climate device, to be called from integrations.
optional< ClimatePreset > preset
The active preset of the climate device.
This class contains all static data for climate devices.
Base-class for all sensors.
Trigger * swing_mode_off_trigger_
The trigger to call when the controller should switch the swing mode to "off".
bool supports_fan_mode_off_
void set_supports_swing_mode_horizontal(bool supports_swing_mode_horizontal)
Trigger * idle_action_trigger_
The trigger to call when the controller should switch to idle action/off mode.
void switch_to_action_(climate::ClimateAction action, bool publish_state=true)
Switch the climate device to the given climate action.
bool supports_fan_mode_quiet_
void set_supports_fan_mode_on(bool supports_fan_mode_on)
Trigger * get_fan_mode_medium_trigger() const
Trigger * preset_change_trigger_
The triggr to call when the preset mode changes.
Trigger * get_swing_mode_vertical_trigger() const
float cooling_deadband_
Hysteresis values used for computing climate actions.
Trigger * heat_action_trigger_
The trigger to call when the controller should switch to heating action/mode.
thermostat::OnBootRestoreFrom on_boot_restore_from_
If set to DEFAULT_PRESET then the default preset is always used.
float supplemental_heat_delta_
bool supports_swing_mode_vertical_
void control(const climate::ClimateCall &call) override
Override control to change settings of the climate device.
Trigger * off_mode_trigger_
void fan_mode_timer_callback_()
Trigger * dry_mode_trigger_
void set_supports_auto(bool supports_auto)
Trigger * get_fan_mode_off_trigger() const
bool use_startup_delay_
Used to start "off" delay timers at boot.
bool heating_action_ready_()
float cool_deadband()
Get current hysteresis values.
bool climate_action_change_delayed()
Returns true if a climate action/fan mode transition is being delayed.
void set_supports_fan_with_heating(bool supports_fan_with_heating)
bool cooling_max_runtime_exceeded_
Flags indicating if maximum allowable run time was exceeded.
Trigger * get_fan_mode_on_trigger() const
Trigger * get_cool_mode_trigger() const
bool supports_fan_mode_medium_
Trigger * get_fan_mode_diffuse_trigger() const
const uint8_t min_timer_duration_
Minimum allowable duration in seconds for action timers.
Trigger * fan_mode_low_trigger_
The trigger to call when the controller should switch the fan to "low" speed.
void set_heat_overrun(float overrun)
Trigger * get_fan_mode_auto_trigger() const
void set_supports_two_points(bool supports_two_points)
void validate_target_temperature_low()
Trigger * fan_mode_auto_trigger_
The trigger to call when the controller should switch the fan to "auto" mode.
void set_heating_maximum_run_time_in_sec(uint32_t time)
void set_supports_fan_only_cooling(bool supports_fan_only_cooling)
bool supports_fan_mode_on_
Whether the controller supports turning on or off just the fan.
bool supports_swing_mode_off_
Trigger * get_fan_mode_middle_trigger() const
void set_supports_heat(bool supports_heat)
void set_supports_fan_only_action_uses_fan_mode_timer(bool fan_only_action_uses_fan_mode_timer)
float set_point_minimum_differential_
Minimum differential required between set points.
bool supports_fan_with_cooling_
Special flags – enables fan_only action to be called with cooling/heating actions.
void set_supports_fan_mode_diffuse(bool supports_fan_mode_diffuse)
void switch_to_swing_mode_(climate::ClimateSwingMode swing_mode, bool publish_state=true)
Switch the climate device to the given climate swing mode.
Trigger * fan_mode_diffuse_trigger_
The trigger to call when the controller should switch the fan to "diffuse" position.
Trigger * fan_only_action_trigger_
The trigger to call when the controller should switch to fan-only action/mode.
Trigger * cool_action_trigger_
The trigger to call when the controller should switch to cooling action/mode.
Trigger * swing_mode_vertical_trigger_
The trigger to call when the controller should switch the swing mode to "vertical".
std::vector< ThermostatClimateTimer > timer_
Climate action timers.
bool change_preset_internal_(const ThermostatClimateTargetTempConfig &config)
Applies the temperature, mode, fan, and swing modes of the provided config.
bool hysteresis_valid()
Set point and hysteresis validation.
void set_supports_fan_mode_auto(bool supports_fan_mode_auto)
bool supplemental_heating_required_()
Trigger * get_fan_only_mode_trigger() const
Trigger * supplemental_cool_action_trigger_
void switch_to_supplemental_action_(climate::ClimateAction action)
bool supports_fan_mode_high_
bool fanning_action_ready_()
Trigger * dry_action_trigger_
The trigger to call when the controller should switch to dry (dehumidification) mode.
Trigger * get_swing_mode_off_trigger() const
void switch_to_mode_(climate::ClimateMode mode, bool publish_state=true)
Switch the climate device to the given climate mode.
Trigger * get_fan_mode_low_trigger() const
Trigger * swing_mode_both_trigger_
The trigger to call when the controller should switch the swing mode to "both".
void set_supports_swing_mode_vertical(bool supports_swing_mode_vertical)
bool cooling_action_ready_()
void heating_max_run_time_timer_callback_()
Trigger * get_dry_action_trigger() const
void validate_target_temperature_high()
void set_supports_fan_only(bool supports_fan_only)
void heating_off_timer_callback_()
void set_sensor(sensor::Sensor *sensor)
bool supports_fan_only_action_uses_fan_mode_timer_
Special flag – enables fan_modes to share timer with fan_only climate action.
void set_supports_swing_mode_off(bool supports_swing_mode_off)
void switch_to_fan_mode_(climate::ClimateFanMode fan_mode, bool publish_state=true)
Switch the climate device to the given climate fan mode.
void set_heating_minimum_off_time_in_sec(uint32_t time)
void heating_on_timer_callback_()
bool supports_swing_mode_both_
Whether the controller supports various swing modes.
void fanning_off_timer_callback_()
Trigger * get_swing_mode_horizontal_trigger() const
Trigger * get_temperature_change_trigger() const
Trigger * get_fan_mode_focus_trigger() const
void validate_target_temperatures()
climate::ClimateTraits traits() override
Return the traits of this controller.
Trigger * swing_mode_horizontal_trigger_
The trigger to call when the controller should switch the swing mode to "horizontal".
Trigger * fan_only_mode_trigger_
void idle_on_timer_callback_()
Trigger * get_swing_mode_both_trigger() const
Trigger * fan_mode_focus_trigger_
The trigger to call when the controller should switch the fan to "focus" position.
Trigger * get_auto_mode_trigger() const
climate::ClimateFanMode locked_fan_mode()
Returns the fan mode that is locked in (check fan_mode_change_delayed(), first!)
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
bool supports_fan_mode_middle_
bool supports_fan_mode_focus_
float prev_target_temperature_low_
void set_supports_fan_mode_middle(bool supports_fan_mode_middle)
void set_supplemental_heat_delta(float delta)
Trigger * temperature_change_trigger_
The trigger to call when the target temperature(s) change(es).
void set_supports_fan_mode_low(bool supports_fan_mode_low)
Trigger * fan_mode_off_trigger_
The trigger to call when the controller should switch off the fan.
Trigger * get_dry_mode_trigger() const
bool timer_active_(ThermostatClimateTimerIndex timer_index)
float supplemental_cool_delta_
Maximum allowable temperature deltas before engauging supplemental cooling/heating actions.
std::map< std::string, ThermostatClimateTargetTempConfig > custom_preset_config_
The set of custom preset configurations this thermostat supports (eg. "My Custom Preset")
Trigger * prev_mode_trigger_
void set_supports_heat_cool(bool supports_heat_cool)
void set_heating_minimum_run_time_in_sec(uint32_t time)
Trigger * get_heat_action_trigger() const
climate::ClimateSwingMode prev_swing_mode_
Trigger * get_supplemental_cool_action_trigger() const
void set_supports_fan_mode_quiet(bool supports_fan_mode_quiet)
bool supplemental_cooling_required_()
void set_supports_dry(bool supports_dry)
void set_cooling_minimum_off_time_in_sec(uint32_t time)
climate::ClimateAction delayed_climate_action()
Returns the climate action that is being delayed (check climate_action_change_delayed(),...
void set_fanning_minimum_off_time_in_sec(uint32_t time)
sensor::Sensor * sensor_
The sensor used for getting the current temperature.
bool drying_action_ready_()
Trigger * get_fan_mode_high_trigger() const
void set_supports_fan_mode_medium(bool supports_fan_mode_medium)
void set_cool_deadband(float deadband)
Trigger * get_fan_mode_quiet_trigger() const
Trigger * get_off_mode_trigger() const
void set_on_boot_restore_from(thermostat::OnBootRestoreFrom on_boot_restore_from)
uint32_t timer_duration_(ThermostatClimateTimerIndex timer_index)
climate::ClimateMode prev_mode_
void set_supports_swing_mode_both(bool supports_swing_mode_both)
void set_supports_cool(bool supports_cool)
void start_timer_(ThermostatClimateTimerIndex timer_index)
Start/cancel/get status of climate action timer.
Trigger * prev_fan_mode_trigger_
Trigger * fan_mode_high_trigger_
The trigger to call when the controller should switch the fan to "high" speed.
Trigger * get_idle_action_trigger() const
void dump_preset_config_(const char *preset_name, const ThermostatClimateTargetTempConfig &config, bool is_default_preset)
void set_set_point_minimum_differential(float differential)
void set_custom_preset_config(const std::string &name, const ThermostatClimateTargetTempConfig &config)
bool supports_fan_with_heating_
void set_heat_deadband(float deadband)
bool supports_fan_mode_low_
Whether the controller supports various fan speeds and/or positions.
bool supports_fan_only_cooling_
Special flag – enables fan to be switched based on target_temperature_high.
void fanning_on_timer_callback_()
void dump_config() override
Trigger * prev_action_trigger_
A reference to the trigger that was previously active.
bool supports_auto_
Whether the controller supports auto/cooling/drying/fanning/heating.
bool supports_swing_mode_horizontal_
climate::ClimateAction supplemental_action_
Store previously-known states.
Trigger * get_supplemental_heat_action_trigger() const
Trigger * get_heat_mode_trigger() const
Trigger * cool_mode_trigger_
void set_fan_mode_minimum_switching_time_in_sec(uint32_t time)
bool supports_fan_mode_diffuse_
void set_cool_overrun(float overrun)
void set_preset_config(climate::ClimatePreset preset, const ThermostatClimateTargetTempConfig &config)
void trigger_supplemental_action_()
void set_supports_fan_with_cooling(bool supports_fan_with_cooling)
Trigger * fan_mode_medium_trigger_
The trigger to call when the controller should switch the fan to "medium" speed.
Trigger * fan_mode_middle_trigger_
The trigger to call when the controller should switch the fan to "middle" position.
Trigger * get_fan_only_action_trigger() const
float prev_target_temperature_high_
void set_supports_fan_mode_focus(bool supports_fan_mode_focus)
void check_temperature_change_trigger_()
Check if the temperature change trigger should be called.
Trigger * fan_mode_on_trigger_
The trigger to call when the controller should switch on the fan.
void set_supports_fan_mode_off(bool supports_fan_mode_off)
climate::ClimateFanMode prev_fan_mode_
void cooling_on_timer_callback_()
void set_use_startup_delay(bool use_startup_delay)
Trigger * heat_mode_trigger_
void cooling_off_timer_callback_()
void change_custom_preset_(const std::string &custom_preset)
Change to a provided custom preset setting; will reset temperature, mode, fan, and swing modes accord...
bool cancel_timer_(ThermostatClimateTimerIndex timer_index)
climate::ClimateAction compute_supplemental_action_()
float prev_target_temperature_
Store previously-known temperatures.
void set_supplemental_cool_delta(float delta)
climate::ClimatePreset default_preset_
Default standard preset to use on start up.
void set_fanning_minimum_run_time_in_sec(uint32_t time)
sensor::Sensor * humidity_sensor_
The sensor used for getting the current humidity.
bool fan_mode_change_delayed()
void cooling_max_run_time_timer_callback_()
set_timeout() callbacks for various actions (see above)
Trigger * prev_swing_mode_trigger_
bool supports_fan_mode_auto_
Whether the controller supports fan auto mode.
Trigger * get_preset_change_trigger() const
void set_cooling_maximum_run_time_in_sec(uint32_t time)
climate::ClimateAction compute_action_(bool ignore_timers=false)
Re-compute the required action of this climate controller.
std::map< climate::ClimatePreset, ThermostatClimateTargetTempConfig > preset_config_
The set of standard preset configurations this thermostat supports (Eg. AWAY, ECO,...
void validate_target_temperature()
bool supports_two_points_
Whether the controller supports two set points.
std::string default_custom_preset_
Default custom preset to use on start up.
bool setup_complete_
setup_complete_ blocks modifying/resetting the temps immediately after boot
Trigger * get_cool_action_trigger() const
void set_idle_minimum_time_in_sec(uint32_t time)
void set_supports_fan_mode_high(bool supports_fan_mode_high)
bool idle_action_ready_()
Is the action ready to be called? Returns true if so.
void change_preset_(climate::ClimatePreset preset)
Change to a provided preset setting; will reset temperature, mode, fan, and swing modes accordingly.
void set_cooling_minimum_run_time_in_sec(uint32_t time)
void refresh()
Call triggers based on updated climate states (modes/actions)
void set_default_preset(const std::string &custom_preset)
Trigger * fan_mode_quiet_trigger_
The trigger to call when the controller should switch the fan to "quiet" position.
Trigger * supplemental_heat_action_trigger_
std::function< void()> timer_cbf_(ThermostatClimateTimerIndex timer_index)
bool heating_max_runtime_exceeded_
Trigger * auto_mode_trigger_
The trigger to call when the controller should switch to auto mode.
bool cooling_required_()
Check if cooling/fanning/heating actions are required; returns true if so.
ClimateSwingMode swing_mode
ClimatePreset
Enum for all preset modes.
ClimateSwingMode
Enum for all modes a climate swing can be in.
@ CLIMATE_SWING_OFF
The swing mode is set to Off.
ClimateMode
Enum for all modes a climate device can be in.
@ CLIMATE_MODE_OFF
The climate device is off.
ClimateAction
Enum for the current action of the climate device. Values match those of ClimateMode.
@ CLIMATE_ACTION_OFF
The climate device is off (inactive or no power)
@ CLIMATE_FAN_ON
The fan mode is set to On.
ThermostatClimateTimerIndex
@ TIMER_HEATING_MAX_RUN_TIME
@ TIMER_COOLING_MAX_RUN_TIME
Providing packet encoding functions for exchanging data with a remote host.
void set_swing_mode(climate::ClimateSwingMode swing_mode)
optional< climate::ClimateSwingMode > swing_mode_
optional< climate::ClimateFanMode > fan_mode_
float default_temperature_low
optional< climate::ClimateMode > mode_
float default_temperature
ThermostatClimateTargetTempConfig()
float default_temperature_high
void set_mode(climate::ClimateMode mode)
void set_fan_mode(climate::ClimateFanMode fan_mode)
std::function< void()> func