ha(H3): исправления по ревью — turn_on/off, кламп конверсий, reload, гонка ONLINE
- M1: supported_features += TURN_ON/TURN_OFF (сервисы в HA 2026.9), async_turn_off; удалён мёртвый _enable_turn_on_off_backwards_compat; тест turn_on/turn_off → operation_mode 1/0 - M2: достижимый диапазон = override ∩ raw-таблица шаблона; raw клампится в from_display, clamp() по достижимому диапазону (молчаливый кламп ядра устранён); тесты scaled override - M3: mock_ac сбрасывает crypto/active на DELETE; тест reload → снова ONLINE - гонка: async_sync_now больше не перезаписывает данные устаревшим снимком (ONLINE мог потеряться при быстром старте) — стабильность 4×37 тестов - m1: превью-текст учитывает выбранный в форме шаблон; m2: убрана недостижимая проверка шага; m3: удалён мёртвый translation_key climate - m4: бит 21 op_status (шаблон B); m5: lru_cache template_info/prop_info; m6: operation_mode=1 без истории → hvac_mode unknown; m7: ошибка команды → HomeAssistantError; m8: unload возвращает False, не разбирая runtime - n2: уточнены описания data_description в переводах
This commit is contained in:
@@ -410,8 +410,6 @@ class FglairConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
step = int(round(float(user_input[CONF_TEMP_STEP]) * 10))
|
||||
if temp_min >= temp_max:
|
||||
errors["base"] = "invalid_range"
|
||||
elif step <= 0:
|
||||
errors["base"] = "invalid_range"
|
||||
else:
|
||||
data[CONF_TEMPLATE] = template.name
|
||||
data[CONF_TEMP_STEP] = step
|
||||
@@ -429,19 +427,20 @@ class FglairConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
template.name, temp_min, temp_max, step,
|
||||
)
|
||||
return self._create_entry(data)
|
||||
schema = _preview_schema(data)
|
||||
selected = str(data.get(CONF_TEMPLATE, Template.A.name))
|
||||
if user_input and user_input.get(CONF_TEMPLATE) in Template.__members__:
|
||||
selected = str(user_input[CONF_TEMPLATE])
|
||||
if user_input is None:
|
||||
user_input = {
|
||||
CONF_TEMPLATE: data.get(CONF_TEMPLATE, Template.A.name),
|
||||
}
|
||||
user_input = {CONF_TEMPLATE: selected}
|
||||
return self.async_show_form(
|
||||
step_id="preview",
|
||||
data_schema=self.add_suggested_values_to_schema(schema, user_input),
|
||||
data_schema=self.add_suggested_values_to_schema(
|
||||
_preview_schema(data), user_input
|
||||
),
|
||||
errors=errors,
|
||||
description_placeholders={
|
||||
"preview": _preview_text(
|
||||
Template[str(data.get(CONF_TEMPLATE, "A"))],
|
||||
self._trial_properties,
|
||||
Template[selected], self._trial_properties
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user