diff --git a/components/tclac/climate.py b/components/tclac/climate.py index ab4b202..1286364 100644 --- a/components/tclac/climate.py +++ b/components/tclac/climate.py @@ -24,6 +24,11 @@ AUTO_LOAD = ["climate"] CODEOWNERS = ["@I-am-nightingale"] DEPENDENCIES = ["climate", "uart"] +TCLAC_MIN_TEMPERATURE = 16.0 +TCLAC_MAX_TEMPERATURE = 31.0 +TCLAC_TARGET_TEMPERATURE_STEP = 1.0 +TCLAC_CURRENT_TEMPERATURE_STEP = 1.0 + CONF_RX_LED = "rx_led" CONF_TX_LED = "tx_led" CONF_DISPLAY = "show_display" @@ -99,6 +104,31 @@ AIRFLOW_HORIZONTAL_DIRECTION_OPTIONS = { "MAX_RIGHT": AirflowHorizontalDirection.MAX_RIGHT, } +def validate_visual(config): + if CONF_VISUAL in config: + visual_config = config[CONF_VISUAL] + if CONF_MIN_TEMPERATURE in visual_config: + min_temp = visual_config[CONF_MIN_TEMPERATURE] + if min_temp < TCLAC_MIN_TEMPERATURE: + raise cv.Invalid(f"Указанная интерфейсная минимальная температура в {min_temp} ниже допустимой {TCLAC_MIN_TEMPERATURE} для кондиционера") + else: + config[CONF_VISUAL][CONF_MIN_TEMPERATURE] = TCLAC_MIN_TEMPERATURE + if CONF_MAX_TEMPERATURE in visual_config: + max_temp = visual_config[CONF_MAX_TEMPERATURE] + if max_temp > TCLAC_MAX_TEMPERATURE: + raise cv.Invalid(f"Указанная интерфейсная максимальная температура в {max_temp} выше допустимой {TCLAC_MAX_TEMPERATURE} для кондиционера") + else: + config[CONF_VISUAL][CONF_MAX_TEMPERATURE] = TCLAC_MAX_TEMPERATURE + if CONF_TEMPERATURE_STEP in visual_config: + temp_step = config[CONF_VISUAL][CONF_TEMPERATURE_STEP][CONF_TARGET_TEMPERATURE] + if ((int)(temp_step * 2)) / 2 != temp_step: + raise cv.Invalid(f"Указанный шаг температуры {temp_step} не корректен, должен быть кратен 1") + else: + config[CONF_VISUAL][CONF_TEMPERATURE_STEP] = {CONF_TARGET_TEMPERATURE: TCLAC_TARGET_TEMPERATURE_STEP,CONF_CURRENT_TEMPERATURE: TCLAC_CURRENT_TEMPERATURE_STEP,} + else: + config[CONF_VISUAL] = {CONF_MIN_TEMPERATURE: TCLAC_MIN_TEMPERATURE,CONF_MAX_TEMPERATURE: TCLAC_MAX_TEMPERATURE,CONF_TEMPERATURE_STEP: {CONF_TARGET_TEMPERATURE: TCLAC_TARGET_TEMPERATURE_STEP,CONF_CURRENT_TEMPERATURE: TCLAC_CURRENT_TEMPERATURE_STEP,},} + return config + # Проверка данных конфигурации и принятие значений по умолчанию CONFIG_SCHEMA = cv.All( climate.CLIMATE_SCHEMA.extend(