mirror of
https://github.com/GrKoR/esphome_aux_ac_component.git
synced 2025-12-08 04:27:05 +03:00
Make optimistic mode configurable
This commit is contained in:
@@ -756,6 +756,10 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
// если тут true, то 1 потушит дисплей, а 0 включит.
|
||||
bool _display_inverted = false;
|
||||
|
||||
// in optimistic mode, the entity states are updated immediately after receiving a command
|
||||
// from Home Assistant/ESPHome
|
||||
bool _optimistic = true;
|
||||
|
||||
// флаг типа кондиционера. инвертор - true, ON/OFF - false, начальная установка false
|
||||
// в таком режиме точность и скорость определения реального состояния системы для инвертора,
|
||||
// будет работать, но будет ниже, переменная устанавливается при первом получении большого пакета;
|
||||
@@ -2472,6 +2476,7 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
ESP_LOGCONFIG(TAG, " [x] Period: %dms", this->get_period());
|
||||
ESP_LOGCONFIG(TAG, " [x] Show action: %s", TRUEFALSE(this->get_show_action()));
|
||||
ESP_LOGCONFIG(TAG, " [x] Display inverted: %s", TRUEFALSE(this->get_display_inverted()));
|
||||
ESP_LOGCONFIG(TAG, " [x] Optimistic: %s", TRUEFALSE(this->get_optimistic()));
|
||||
ESP_LOGCONFIG(TAG, " [x] Packet timeout: %dms", this->get_packet_timeout());
|
||||
|
||||
#if defined(PRESETS_SAVING)
|
||||
@@ -2830,7 +2835,9 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
|
||||
if (hasCommand) {
|
||||
commandSequence(&cmd);
|
||||
this->publish_all_states(); // Publish updated state
|
||||
if (this->get_optimistic()) {
|
||||
this->publish_all_states(); // Publish updated state
|
||||
}
|
||||
|
||||
#if defined(PRESETS_SAVING)
|
||||
// флаг отправки новой команды, для процедуры сохранения пресетов, если есть настройка
|
||||
@@ -3267,6 +3274,9 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
}
|
||||
uint32_t get_packet_timeout() { return this->_packet_timeout; }
|
||||
|
||||
void set_optimistic(bool optimistic) { this->_optimistic = optimistic; }
|
||||
bool get_optimistic() { return this->_optimistic; }
|
||||
|
||||
// возможно функции get и не нужны, но вроде как должны быть
|
||||
void set_supported_modes(const std::set<ClimateMode> &modes) { this->_supported_modes = modes; }
|
||||
std::set<ClimateMode> get_supported_modes() { return this->_supported_modes; }
|
||||
|
||||
@@ -10,6 +10,7 @@ from esphome.const import (
|
||||
CONF_DATA,
|
||||
CONF_ID,
|
||||
CONF_INTERNAL,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_PERIOD,
|
||||
CONF_POSITION,
|
||||
CONF_SUPPORTED_MODES,
|
||||
@@ -193,7 +194,7 @@ CONFIG_SCHEMA = cv.All(
|
||||
cv.Optional(CONF_SHOW_ACTION, default="true"): cv.boolean,
|
||||
cv.Optional(CONF_DISPLAY_INVERTED, default="false"): cv.boolean,
|
||||
cv.Optional(CONF_TIMEOUT, default=AC_PACKET_TIMEOUT_MIN): validate_packet_timeout,
|
||||
|
||||
cv.Optional(CONF_OPTIMISTIC, default="true"): cv.boolean,
|
||||
cv.Optional(CONF_INVERTER_POWER_DEPRICATED): cv.invalid(
|
||||
"The name of sensor was changed in v.0.2.9 from 'invertor_power' to 'inverter_power'. Update your config please."
|
||||
),
|
||||
@@ -400,6 +401,7 @@ async def to_code(config):
|
||||
cg.add(var.set_show_action(config[CONF_SHOW_ACTION]))
|
||||
cg.add(var.set_display_inverted(config[CONF_DISPLAY_INVERTED]))
|
||||
cg.add(var.set_packet_timeout(config[CONF_TIMEOUT]))
|
||||
cg.add(var.set_optimistic(config[CONF_OPTIMISTIC]))
|
||||
if CONF_SUPPORTED_MODES in config:
|
||||
cg.add(var.set_supported_modes(config[CONF_SUPPORTED_MODES]))
|
||||
if CONF_SUPPORTED_SWING_MODES in config:
|
||||
|
||||
Reference in New Issue
Block a user