mirror of
https://github.com/GrKoR/esphome_aux_ac_component.git
synced 2025-12-07 20:16:58 +03:00
ref: minor fixes of Brokly's changes
This commit is contained in:
@@ -627,6 +627,7 @@ namespace esphome
|
|||||||
// #define AC_MIN_COUNTER_MASK 0b00111111
|
// #define AC_MIN_COUNTER_MASK 0b00111111
|
||||||
|
|
||||||
// включение-выключение функции "Ограничение мощности".
|
// включение-выключение функции "Ограничение мощности".
|
||||||
|
#define AC_POWLIMSTAT_MASK 0b10000000
|
||||||
enum ac_powLim_state : uint8_t
|
enum ac_powLim_state : uint8_t
|
||||||
{
|
{
|
||||||
AC_POWLIMSTAT_OFF = 0x00,
|
AC_POWLIMSTAT_OFF = 0x00,
|
||||||
@@ -639,7 +640,6 @@ namespace esphome
|
|||||||
#define AC_POWLIMVAL_UNTOUCHED 0xFF
|
#define AC_POWLIMVAL_UNTOUCHED 0xFF
|
||||||
|
|
||||||
// положение вертикальных жалюзи для фронтенда
|
// положение вертикальных жалюзи для фронтенда
|
||||||
#define AC_POWLIMSTAT_MASK 0b10000000
|
|
||||||
enum ac_vlouver_frontend : uint8_t
|
enum ac_vlouver_frontend : uint8_t
|
||||||
{
|
{
|
||||||
AC_VLOUVER_FRONTEND_SWING = 0x00,
|
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...");
|
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", this->sensor_inverter_power_);
|
||||||
LOG_SENSOR(" ", "Inverter Power Limit Value", this->sensor_inverter_power_limit_value_);
|
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(" ", "Indoor Temperature", this->sensor_indoor_temperature_);
|
||||||
LOG_SENSOR(" ", "Outdoor Temperature", this->sensor_outdoor_temperature_);
|
LOG_SENSOR(" ", "Outdoor Temperature", this->sensor_outdoor_temperature_);
|
||||||
LOG_SENSOR(" ", "Inbound Temperature", this->sensor_inbound_temperature_);
|
LOG_SENSOR(" ", "Inbound Temperature", this->sensor_inbound_temperature_);
|
||||||
@@ -2856,7 +2857,6 @@ namespace esphome
|
|||||||
LOG_SENSOR(" ", "Compressor Temperature", this->sensor_compressor_temperature_);
|
LOG_SENSOR(" ", "Compressor Temperature", this->sensor_compressor_temperature_);
|
||||||
LOG_BINARY_SENSOR(" ", "Defrost Status", this->sensor_defrost_);
|
LOG_BINARY_SENSOR(" ", "Defrost Status", this->sensor_defrost_);
|
||||||
LOG_BINARY_SENSOR(" ", "Display", this->sensor_display_);
|
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_);
|
LOG_TEXT_SENSOR(" ", "Preset Reporter", this->sensor_preset_reporter_);
|
||||||
this->dump_traits_(TAG);
|
this->dump_traits_(TAG);
|
||||||
}
|
}
|
||||||
@@ -3541,46 +3541,8 @@ namespace esphome
|
|||||||
return true;
|
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())
|
if (!get_has_connection())
|
||||||
@@ -3605,7 +3567,7 @@ namespace esphome
|
|||||||
ac_command_t cmd;
|
ac_command_t cmd;
|
||||||
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
||||||
cmd.power_lim_value = power_limit;
|
cmd.power_lim_value = power_limit;
|
||||||
if (setOn)
|
if (set_on)
|
||||||
{
|
{
|
||||||
cmd.power_lim_state = AC_POWLIMSTAT_ON;
|
cmd.power_lim_state = AC_POWLIMSTAT_ON;
|
||||||
}
|
}
|
||||||
@@ -3613,7 +3575,7 @@ namespace esphome
|
|||||||
if (!commandSequence(&cmd))
|
if (!commandSequence(&cmd))
|
||||||
return false;
|
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);
|
_debugMsg(F("powerLimitationSetSequence: loaded (state = %02X, power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state, power_limit);
|
||||||
} else {
|
} else {
|
||||||
@@ -3622,6 +3584,38 @@ namespace esphome
|
|||||||
return true;
|
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()
|
bool powerLimitationOnSequence()
|
||||||
{
|
{
|
||||||
@@ -3634,6 +3628,12 @@ namespace esphome
|
|||||||
return powerLimitationSetSequence(power_limit, true);
|
return powerLimitationSetSequence(power_limit, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// выключает ограничение мощности сплита
|
||||||
|
bool powerLimitationOffSequence()
|
||||||
|
{
|
||||||
|
return powerLimitationOnOffSequence(false);
|
||||||
|
}
|
||||||
|
|
||||||
// конвертирует состояние жалюзи из кодов сплита в коды для фронтенда
|
// конвертирует состояние жалюзи из кодов сплита в коды для фронтенда
|
||||||
ac_vlouver_frontend AUXvlouverToVlouverFrontend(const ac_louver_V vLouver)
|
ac_vlouver_frontend AUXvlouverToVlouverFrontend(const ac_louver_V vLouver)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user