ha(ux): мастер из трёх страниц, feature-модель и capabilities-фильтрация
- config flow: template (A/B/F с пояснениями, значения с устройства, определение по oem_model; для неизвестных моделей — пробинг A/B/F тремя короткими сессиями) -> capabilities (23 тумблера с описаниями, дефолты из device_capabilities/num_dir/ответов) -> limits (диапазон/шаг, ручная конверсия); каждая страница с пометкой «значения определены автоматически, можно пропустить» - features.py: FeatureSet/LiveValues/device_default/resolve_features; entry.data["features"] хранит выбор пользователя; reconfigure предзаполняет; YAML-import получает дефолты - сущности создаются только для включённых фич: climate (режимы/скорости/ swing/пресеты), switch, select заслонок (caps+num_dir), датчик комнаты; исправлено появление select без ламелей - trial: caps/num_dir и presence-зонды (необязательные свойства), answered; координатор ждёт первые свойства перед созданием сущностей (feature- дефолты без гонки) - атрибут description у сущностей (HA не поддерживает тултипы) + описания фич в мастере (en/ru) - тесты: features, probing, обновлённые flow/entities/repairs; 57 components
This commit is contained in:
@@ -11,8 +11,9 @@ from homeassistant.helpers import issue_registry as ir
|
||||
|
||||
import pyfglair
|
||||
|
||||
from .const import CONF_DSN, DOMAIN
|
||||
from .const import CONF_DSN, CONF_FEATURES, DOMAIN
|
||||
from .coordinator import FglairCoordinator, FglairRuntime, key_issue_id
|
||||
from .features import FeatureSet, LiveValues
|
||||
from .fglair_client import FglairClient
|
||||
from .overrides import ConversionSet
|
||||
|
||||
@@ -80,8 +81,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
finally:
|
||||
hass.data[DATA_PENDING] -= 1
|
||||
|
||||
features = FeatureSet(
|
||||
explicit=entry.data.get(CONF_FEATURES),
|
||||
values=LiveValues(coordinator.client.cached),
|
||||
)
|
||||
coordinator.features = features
|
||||
|
||||
clients[entry.entry_id] = client
|
||||
entry.runtime_data = FglairRuntime(client, coordinator, conversions)
|
||||
entry.runtime_data = FglairRuntime(client, coordinator, conversions, features)
|
||||
if len(clients) == 1:
|
||||
pyfglair.set_log_handler(_log_handler)
|
||||
pyfglair.set_log_level(1)
|
||||
|
||||
Reference in New Issue
Block a user