fix: SOFT mode is custom preset now

This commit is contained in:
GrKoR
2026-01-22 03:29:36 -08:00
parent cb4bea6b82
commit 512a3776e2

View File

@@ -2615,12 +2615,8 @@ namespace esphome
_debugMsg(F("Climate fan mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, this->fan_mode); _debugMsg(F("Climate fan mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, this->fan_mode);
/*************************** CUSTOM FAN MODES ***************************/ /*************************** CUSTOM FAN MODES ***************************/
// SOFT, TURBO и MUTE являются взаимоисключающими // TURBO и MUTE являются взаимоисключающими
if (_current_ac_state.louver_closed_flow == AC_LOUVER_CLOSED_FLOW_ON) if (_current_ac_state.fanTurbo == AC_FANTURBO_ON)
{
this->set_custom_fan_mode_(Constants::SOFT);
}
else if (_current_ac_state.fanTurbo == AC_FANTURBO_ON)
{ {
this->set_custom_fan_mode_(Constants::TURBO); this->set_custom_fan_mode_(Constants::TURBO);
} }
@@ -2633,11 +2629,22 @@ namespace esphome
this->clear_custom_fan_mode_(); this->clear_custom_fan_mode_();
} }
_debugMsg(F("Climate fan LOUVER_CLOSED_FLOW mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.louver_closed_flow);
_debugMsg(F("Climate fan TURBO mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.fanTurbo); _debugMsg(F("Climate fan TURBO mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.fanTurbo);
_debugMsg(F("Climate fan MUTE mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.fanMute); _debugMsg(F("Climate fan MUTE mode: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.fanMute);
//======================== ОТОБРАЖЕНИЕ ПРЕСЕТОВ ================================ //======================== ОТОБРАЖЕНИЕ ПРЕСЕТОВ ================================
/*************************** SOFT CUSTOM PRESET ***************************/
if (_current_ac_state.louver_closed_flow == AC_LOUVER_CLOSED_FLOW_ON)
{
this->set_custom_preset_(Constants::SOFT);
}
else if (this->has_custom_preset() && this->get_custom_preset() == Constants::SOFT)
{
this->clear_custom_preset_();
}
_debugMsg(F("Climate LOUVER_CLOSED_FLOW preset: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.louver_closed_flow);
/*************************** HEALTH CUSTOM PRESET ***************************/ /*************************** HEALTH CUSTOM PRESET ***************************/
// режим работы ионизатора // режим работы ионизатора
if (_current_ac_state.health == AC_HEALTH_ON && if (_current_ac_state.health == AC_HEALTH_ON &&
@@ -2652,6 +2659,7 @@ namespace esphome
this->clear_custom_preset_(); this->clear_custom_preset_();
} }
_debugMsg(F("Climate LOUVER_CLOSED_FLOW preset: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.louver_closed_flow);
_debugMsg(F("Climate HEALTH preset: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.health); _debugMsg(F("Climate HEALTH preset: %i"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, _current_ac_state.health);
/*************************** SLEEP PRESET ***************************/ /*************************** SLEEP PRESET ***************************/
@@ -3015,14 +3023,6 @@ namespace esphome
cmd.louver_closed_flow = AC_LOUVER_CLOSED_FLOW_OFF; cmd.louver_closed_flow = AC_LOUVER_CLOSED_FLOW_OFF;
this->set_custom_fan_mode_(Constants::MUTE); this->set_custom_fan_mode_(Constants::MUTE);
} }
else if (custom_fan_mode == Constants::SOFT)
{
hasCommand = true;
cmd.louver_closed_flow = AC_LOUVER_CLOSED_FLOW_ON;
cmd.fanMute = AC_FANMUTE_OFF;
cmd.fanTurbo = AC_FANTURBO_OFF;
this->set_custom_fan_mode_(Constants::SOFT);
}
} }
// Пользователь выбрал пресет // Пользователь выбрал пресет
@@ -3077,15 +3077,18 @@ namespace esphome
{ {
auto custom_preset = call.get_custom_preset(); auto custom_preset = call.get_custom_preset();
cmd.clean = AC_CLEAN_OFF;
cmd.mildew = AC_MILDEW_OFF;
cmd.louver_closed_flow = AC_LOUVER_CLOSED_FLOW_OFF;
if (custom_preset == Constants::CLEAN) if (custom_preset == Constants::CLEAN)
{ {
// режим очистки кондиционера, включается (или должен включаться) при AC_POWER_OFF // режим очистки кондиционера, включается (или должен включаться) при AC_POWER_OFF
// TODO: надо отдебажить выключение этого режима
if (cmd.power == AC_POWER_OFF or _current_ac_state.power == AC_POWER_OFF) if (cmd.power == AC_POWER_OFF or _current_ac_state.power == AC_POWER_OFF)
{ {
hasCommand = true;
cmd.clean = AC_CLEAN_ON; cmd.clean = AC_CLEAN_ON;
cmd.mildew = AC_MILDEW_OFF;
hasCommand = true;
this->set_custom_preset_(Constants::CLEAN); this->set_custom_preset_(Constants::CLEAN);
} }
else else
@@ -3104,6 +3107,7 @@ namespace esphome
cmd.fanMute = AC_FANMUTE_OFF; cmd.fanMute = AC_FANMUTE_OFF;
cmd.sleep = AC_SLEEP_OFF; cmd.sleep = AC_SLEEP_OFF;
/* TODO: Users requested to check if this correct
if (cmd.mode == AC_MODE_COOL || if (cmd.mode == AC_MODE_COOL ||
cmd.mode == AC_MODE_HEAT || cmd.mode == AC_MODE_HEAT ||
cmd.mode == AC_MODE_AUTO || cmd.mode == AC_MODE_AUTO ||
@@ -3118,6 +3122,7 @@ namespace esphome
{ {
cmd.fanSpeed = AC_FANSPEED_MEDIUM; // зависимость от health cmd.fanSpeed = AC_FANSPEED_MEDIUM; // зависимость от health
} }
*/
this->set_custom_preset_(Constants::HEALTH); this->set_custom_preset_(Constants::HEALTH);
} }
else else
@@ -3127,23 +3132,19 @@ namespace esphome
} }
else if (custom_preset == Constants::ANTIFUNGUS) else if (custom_preset == Constants::ANTIFUNGUS)
{ {
// включение-выключение функции "Антиплесень".
// По факту: после выключения сплита он оставляет минут на 5 открытые жалюзи и глушит вентилятор.
// Уличный блок при этом гудит и тарахтит. Возможно, прогревается теплообменник для высыхания.
// Через некоторое время внешний блок замолкает и сплит закрывает жалюзи.
// Brokly:
// включение-выключение функции "Антиплесень".
// у меня пульт отправляет 5 посылок и на включение и на выключение, но реагирует на эту кнопку
// только в режиме POWER_OFF
// TODO: надо уточнить, в каких режимах штатно включается этот режим у кондиционера
cmd.mildew = AC_MILDEW_ON; cmd.mildew = AC_MILDEW_ON;
cmd.clean = AC_CLEAN_OFF; // для логики пресетов
hasCommand = true; hasCommand = true;
this->set_custom_preset_(Constants::ANTIFUNGUS); this->set_custom_preset_(Constants::ANTIFUNGUS);
} }
else if (custom_preset == Constants::SOFT)
{
cmd.louver_closed_flow = AC_LOUVER_CLOSED_FLOW_ON;
hasCommand = true;
this->set_custom_fan_mode_(Constants::SOFT);
}
} }
// User requested swing_mode change // User requested swing_mode change