From 53a886f8182765ad1135344da8e5f298a1341d4e Mon Sep 17 00:00:00 2001 From: GrKoR Date: Thu, 9 Nov 2023 23:07:54 +0300 Subject: [PATCH] ref: minor fixes of Brokly's changes --- components/aux_ac/aux_ac.h | 88 +++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/components/aux_ac/aux_ac.h b/components/aux_ac/aux_ac.h index 62d2175..3494a94 100644 --- a/components/aux_ac/aux_ac.h +++ b/components/aux_ac/aux_ac.h @@ -627,6 +627,7 @@ namespace esphome // #define AC_MIN_COUNTER_MASK 0b00111111 // включение-выключение функции "Ограничение мощности". +#define AC_POWLIMSTAT_MASK 0b10000000 enum ac_powLim_state : uint8_t { AC_POWLIMSTAT_OFF = 0x00, @@ -638,8 +639,7 @@ namespace esphome #define AC_POWLIMVAL_MASK 0b01111111 #define AC_POWLIMVAL_UNTOUCHED 0xFF -// положение вертикальных жалюзи для фронтенда -#define AC_POWLIMSTAT_MASK 0b10000000 + // положение вертикальных жалюзи для фронтенда enum ac_vlouver_frontend : uint8_t { AC_VLOUVER_FRONTEND_SWING = 0x00, @@ -2849,6 +2849,7 @@ namespace esphome ESP_LOGCONFIG(TAG, " [?] Is inverter %s", millis() > _update_period + 1000 ? YESNO(_is_inverter) : "pending..."); LOG_SENSOR(" ", "Inverter Power", this->sensor_inverter_power_); LOG_SENSOR(" ", "Inverter Power Limit Value", this->sensor_inverter_power_limit_value_); + LOG_BINARY_SENSOR(" ", "Inverter Power Limit State", this->sensor_inverter_power_limit_state_); LOG_SENSOR(" ", "Indoor Temperature", this->sensor_indoor_temperature_); LOG_SENSOR(" ", "Outdoor Temperature", this->sensor_outdoor_temperature_); LOG_SENSOR(" ", "Inbound Temperature", this->sensor_inbound_temperature_); @@ -2856,7 +2857,6 @@ namespace esphome LOG_SENSOR(" ", "Compressor Temperature", this->sensor_compressor_temperature_); LOG_BINARY_SENSOR(" ", "Defrost Status", this->sensor_defrost_); LOG_BINARY_SENSOR(" ", "Display", this->sensor_display_); - LOG_BINARY_SENSOR(" ", "Inverter Power Limit State", this->sensor_inverter_power_limit_state_); LOG_TEXT_SENSOR(" ", "Preset Reporter", this->sensor_preset_reporter_); this->dump_traits_(TAG); } @@ -3541,46 +3541,8 @@ namespace esphome return true; } - // выключает-выключает ограничение мощности сплита - bool powerLimitationOnOffSequence(bool state) - { - // нет смысла в последовательности, если нет коннекта с кондиционером - if (!get_has_connection()) - { - _debugMsg(F("powerLimitationOnOffSequence: no pings from HVAC. It seems like no AC connected."), ESPHOME_LOG_LEVEL_ERROR, __LINE__); - return false; - } - - if (!this->_is_inverter) - { - _debugMsg(F("powerLimitationOnSequence: unsupported for noninverter AC."), ESPHOME_LOG_LEVEL_WARN, __LINE__); - return false; // если кондиционер не инверторный, то выходим - } - - // формируем команду - ac_command_t cmd; - _clearCommand(&cmd); // не забываем очищать, а то будет мусор - if(state){ - cmd.power_lim_state = AC_POWLIMSTAT_ON; // включить ограничение мощности - } else { - cmd.power_lim_state = AC_POWLIMSTAT_OFF; // отключить ограничение мощности - } - // добавляем команду в последовательность - if (!commandSequence(&cmd)) - return false; - - _debugMsg(F("powerLimitationOnOffSequence: loaded (state = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state); - return true; - } - - // выключает ограничение мощности сплита - bool powerLimitationOffSequence() - { - return powerLimitationOnOffSequence(false); - } - // устанавливает ограничение мощности сплита на нужный уровень - bool powerLimitationSetSequence(uint8_t power_limit, bool setOn=false) + bool powerLimitationSetSequence(uint8_t power_limit, bool set_on=false) { // нет смысла в последовательности, если нет коннекта с кондиционером if (!get_has_connection()) @@ -3605,7 +3567,7 @@ namespace esphome ac_command_t cmd; _clearCommand(&cmd); // не забываем очищать, а то будет мусор cmd.power_lim_value = power_limit; - if (setOn) + if (set_on) { cmd.power_lim_state = AC_POWLIMSTAT_ON; } @@ -3613,7 +3575,7 @@ namespace esphome if (!commandSequence(&cmd)) return false; - if (setOn) + if (set_on) { _debugMsg(F("powerLimitationSetSequence: loaded (state = %02X, power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state, power_limit); } else { @@ -3622,6 +3584,38 @@ namespace esphome return true; } + // включает/выключает ограничение мощности сплита + bool powerLimitationOnOffSequence(bool enable_limit) + { + // нет смысла в последовательности, если нет коннекта с кондиционером + if (!get_has_connection()) + { + _debugMsg(F("powerLimitationOnOffSequence: no pings from HVAC. It seems like no AC connected."), ESPHOME_LOG_LEVEL_ERROR, __LINE__); + return false; + } + + if (!this->_is_inverter) + { + _debugMsg(F("powerLimitationOnSequence: unsupported for noninverter AC."), ESPHOME_LOG_LEVEL_WARN, __LINE__); + return false; // если кондиционер не инверторный, то выходим + } + + // формируем команду + ac_command_t cmd; + _clearCommand(&cmd); // не забываем очищать, а то будет мусор + if(enable_limit){ + cmd.power_lim_state = AC_POWLIMSTAT_ON; // включить ограничение мощности + } else { + cmd.power_lim_state = AC_POWLIMSTAT_OFF; // отключить ограничение мощности + } + // добавляем команду в последовательность + if (!commandSequence(&cmd)) + return false; + + _debugMsg(F("powerLimitationOnOffSequence: loaded (state = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state); + return true; + } + // включает ограничение мощности сплита bool powerLimitationOnSequence() { @@ -3633,6 +3627,12 @@ namespace esphome { return powerLimitationSetSequence(power_limit, true); } + + // выключает ограничение мощности сплита + bool powerLimitationOffSequence() + { + return powerLimitationOnOffSequence(false); + } // конвертирует состояние жалюзи из кодов сплита в коды для фронтенда ac_vlouver_frontend AUXvlouverToVlouverFrontend(const ac_louver_V vLouver)