mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 09:17:46 +01:00
midea_ac: fix presets implementation (#2054)
This commit is contained in:
parent
80949521b6
commit
ba461e51a8
3 changed files with 17 additions and 10 deletions
|
@ -100,7 +100,7 @@ bool MideaAC::allow_preset(climate::ClimatePreset preset) const {
|
||||||
ESP_LOGD(TAG, "BOOST preset is only available in HEAT or COOL mode");
|
ESP_LOGD(TAG, "BOOST preset is only available in HEAT or COOL mode");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case climate::CLIMATE_PRESET_HOME:
|
case climate::CLIMATE_PRESET_NONE:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -191,7 +191,7 @@ climate::ClimateTraits MideaAC::traits() {
|
||||||
if (traits_swing_both_)
|
if (traits_swing_both_)
|
||||||
traits.add_supported_swing_mode(climate::CLIMATE_SWING_BOTH);
|
traits.add_supported_swing_mode(climate::CLIMATE_SWING_BOTH);
|
||||||
traits.set_supported_presets({
|
traits.set_supported_presets({
|
||||||
climate::CLIMATE_PRESET_HOME,
|
climate::CLIMATE_PRESET_NONE,
|
||||||
});
|
});
|
||||||
if (traits_preset_eco_)
|
if (traits_preset_eco_)
|
||||||
traits.add_supported_preset(climate::CLIMATE_PRESET_ECO);
|
traits.add_supported_preset(climate::CLIMATE_PRESET_ECO);
|
||||||
|
|
|
@ -86,18 +86,17 @@ void PropertiesFrame::set_mode(climate::ClimateMode mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
optional<climate::ClimatePreset> PropertiesFrame::get_preset() const {
|
optional<climate::ClimatePreset> PropertiesFrame::get_preset() const {
|
||||||
if (this->get_eco_mode()) {
|
if (this->get_eco_mode())
|
||||||
return climate::CLIMATE_PRESET_ECO;
|
return climate::CLIMATE_PRESET_ECO;
|
||||||
} else if (this->get_sleep_mode()) {
|
if (this->get_sleep_mode())
|
||||||
return climate::CLIMATE_PRESET_SLEEP;
|
return climate::CLIMATE_PRESET_SLEEP;
|
||||||
} else if (this->get_turbo_mode()) {
|
if (this->get_turbo_mode())
|
||||||
return climate::CLIMATE_PRESET_BOOST;
|
return climate::CLIMATE_PRESET_BOOST;
|
||||||
} else {
|
return climate::CLIMATE_PRESET_NONE;
|
||||||
return climate::CLIMATE_PRESET_HOME;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertiesFrame::set_preset(climate::ClimatePreset preset) {
|
void PropertiesFrame::set_preset(climate::ClimatePreset preset) {
|
||||||
|
this->clear_presets();
|
||||||
switch (preset) {
|
switch (preset) {
|
||||||
case climate::CLIMATE_PRESET_ECO:
|
case climate::CLIMATE_PRESET_ECO:
|
||||||
this->set_eco_mode(true);
|
this->set_eco_mode(true);
|
||||||
|
@ -113,15 +112,22 @@ void PropertiesFrame::set_preset(climate::ClimatePreset preset) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PropertiesFrame::clear_presets() {
|
||||||
|
this->set_eco_mode(false);
|
||||||
|
this->set_sleep_mode(false);
|
||||||
|
this->set_turbo_mode(false);
|
||||||
|
this->set_freeze_protection_mode(false);
|
||||||
|
}
|
||||||
|
|
||||||
bool PropertiesFrame::is_custom_preset() const { return this->get_freeze_protection_mode(); }
|
bool PropertiesFrame::is_custom_preset() const { return this->get_freeze_protection_mode(); }
|
||||||
|
|
||||||
const std::string &PropertiesFrame::get_custom_preset() const { return midea_ac::MIDEA_FREEZE_PROTECTION_PRESET; };
|
const std::string &PropertiesFrame::get_custom_preset() const { return midea_ac::MIDEA_FREEZE_PROTECTION_PRESET; };
|
||||||
|
|
||||||
void PropertiesFrame::set_custom_preset(const std::string &preset) {
|
void PropertiesFrame::set_custom_preset(const std::string &preset) {
|
||||||
if (preset == MIDEA_FREEZE_PROTECTION_PRESET) {
|
this->clear_presets();
|
||||||
|
if (preset == MIDEA_FREEZE_PROTECTION_PRESET)
|
||||||
this->set_freeze_protection_mode(true);
|
this->set_freeze_protection_mode(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool PropertiesFrame::is_custom_fan_mode() const {
|
bool PropertiesFrame::is_custom_fan_mode() const {
|
||||||
switch (this->pbuf_[13]) {
|
switch (this->pbuf_[13]) {
|
||||||
|
|
|
@ -115,6 +115,7 @@ class PropertiesFrame : public midea_dongle::BaseFrame {
|
||||||
/* PRESET */
|
/* PRESET */
|
||||||
optional<climate::ClimatePreset> get_preset() const;
|
optional<climate::ClimatePreset> get_preset() const;
|
||||||
void set_preset(climate::ClimatePreset preset);
|
void set_preset(climate::ClimatePreset preset);
|
||||||
|
void clear_presets();
|
||||||
|
|
||||||
bool is_custom_preset() const;
|
bool is_custom_preset() const;
|
||||||
const std::string &get_custom_preset() const;
|
const std::string &get_custom_preset() const;
|
||||||
|
|
Loading…
Reference in a new issue