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:
@@ -52,11 +52,74 @@
|
||||
"config_json": "Paste a JSON object produced by fglair-discover or fglctl"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"title": "Template preview",
|
||||
"description": "Computed mapping (compare with the FGLair app):\n\n{preview}\n\nSetpoint range and conversion can be adjusted below.",
|
||||
"template": {
|
||||
"title": "Module template",
|
||||
"description": "Read from the device:\n\n{device_values}\n\n{probe_note} The template defines the module's property table (names, types, conversions); actual features are tuned on the next step.\n\nIf unsure, keep the default.",
|
||||
"data": {
|
||||
"template": "Template"
|
||||
},
|
||||
"data_description": {
|
||||
"template": "A — AP-WA/AP-WC/AP-WD modules: room temperature sensor, louver directions and swing, all flags. B — AP-WB modules: no room temperature sensor, no louver directions, 1.0 °C setpoint step. F — like A but for AP-WF modules (monitor1, filter_sign_reset)."
|
||||
}
|
||||
},
|
||||
"capabilities": {
|
||||
"title": "Device capabilities",
|
||||
"description": "Toggles are pre-set from the device:\n\n{device_values}\n\nDisable what the device cannot do or what you do not want to expose. Entities are created only for enabled features.\n\nIf unsure, keep as is.",
|
||||
"data": {
|
||||
"mode_cool": "Cooling",
|
||||
"mode_dry": "Dry",
|
||||
"mode_fan": "Fan only",
|
||||
"mode_heat": "Heating",
|
||||
"mode_auto": "Automatic",
|
||||
"fan_quiet": "Quiet fan",
|
||||
"fan_low": "Low fan",
|
||||
"fan_medium": "Medium fan",
|
||||
"fan_high": "High fan",
|
||||
"fan_auto": "Auto fan",
|
||||
"swing_vertical": "Vertical swing",
|
||||
"swing_horizontal": "Horizontal swing",
|
||||
"economy_mode": "Economy",
|
||||
"min_heat": "Minimum heat",
|
||||
"indoor_fan_control": "Indoor fan control",
|
||||
"powerful_mode": "Powerful",
|
||||
"outdoor_low_noise": "Outdoor low noise",
|
||||
"coil_dry_mode": "Coil dry",
|
||||
"display_temperature": "Room temperature sensor",
|
||||
"human_det_auto_save": "Human detection auto save",
|
||||
"wifi_led_enable": "Wi-Fi LED",
|
||||
"af_vertical_direction": "Vertical louver position",
|
||||
"af_horizontal_direction": "Horizontal louver position"
|
||||
},
|
||||
"data_description": {
|
||||
"mode_cool": "Cooling",
|
||||
"mode_dry": "Dry",
|
||||
"mode_fan": "Fan only",
|
||||
"mode_heat": "Heating",
|
||||
"mode_auto": "Automatic mode",
|
||||
"fan_auto": "Auto fan speed",
|
||||
"fan_quiet": "Quiet fan speed",
|
||||
"fan_low": "Low fan speed",
|
||||
"fan_medium": "Medium fan speed",
|
||||
"fan_high": "High fan speed",
|
||||
"swing_vertical": "Vertical louver swing",
|
||||
"swing_horizontal": "Horizontal louver swing",
|
||||
"economy_mode": "Economy mode",
|
||||
"min_heat": "Minimum heat (keep +10 °C)",
|
||||
"indoor_fan_control": "Indoor fan control while outdoor unit runs",
|
||||
"powerful_mode": "Powerful mode",
|
||||
"outdoor_low_noise": "Outdoor unit low noise",
|
||||
"coil_dry_mode": "Coil dry",
|
||||
"display_temperature": "Room temperature sensor",
|
||||
"human_det_auto_save": "Human detection auto save",
|
||||
"wifi_led_enable": "Wi-Fi LED indicator",
|
||||
"af_vertical_direction": "Vertical louver position",
|
||||
"af_horizontal_direction": "Horizontal louver position"
|
||||
}
|
||||
},
|
||||
"limits": {
|
||||
"title": "Setpoint (range and step)",
|
||||
"description": "Range and step are auto-detected (A/F step 0.5 °C, B — 1.0). Optionally enable a custom linear conversion (API units are 0.1 °C).\n\nIf unsure, keep as is.",
|
||||
"data": {
|
||||
"template": "Template",
|
||||
"temp_min": "Minimum setpoint (°C)",
|
||||
"temp_max": "Maximum setpoint (°C)",
|
||||
"temp_step": "Setpoint step (°C)",
|
||||
@@ -66,8 +129,8 @@
|
||||
},
|
||||
"data_description": {
|
||||
"temp_num": "display = raw × num / den + offset; raw is the protocol value (setpoint: 0.1 °C)",
|
||||
"temp_den": "display = raw × num / den + offset; raw is the protocol value (setpoint: 0.1 °C)",
|
||||
"temp_offset": "display = raw × num / den + offset; raw is the protocol value (setpoint: 0.1 °C)"
|
||||
"temp_den": "display = raw × num / den + offset",
|
||||
"temp_offset": "display = raw × num / den + offset"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -52,11 +52,74 @@
|
||||
"config_json": "Вставьте объект JSON, созданный fglair-discover или fglctl"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"title": "Превью шаблона",
|
||||
"description": "Рассчитанные значения (сверьте с приложением FGLair):\n\n{preview}\n\nДиапазон уставки и конверсию можно поправить ниже.",
|
||||
"template": {
|
||||
"title": "Шаблон модуля",
|
||||
"description": "С устройства прочитано:\n\n{device_values}\n\n{probe_note} Шаблон задаёт таблицу свойств модуля (имена, типы, конверсии); фактические возможности прибора уточняются на следующем шаге.\n\nЕсли не уверены — оставьте значение по умолчанию.",
|
||||
"data": {
|
||||
"template": "Шаблон"
|
||||
},
|
||||
"data_description": {
|
||||
"template": "A — модули AP-WA/AP-WC/AP-WD: есть датчик температуры помещения, направления и swing заслонок, все флаги. B — модули AP-WB: без датчика температуры помещения и без направлений заслонок, шаг уставки 1,0 °C. F — как A, но для модулей AP-WF (monitor1, filter_sign_reset)."
|
||||
}
|
||||
},
|
||||
"capabilities": {
|
||||
"title": "Возможности прибора",
|
||||
"description": "Тумблеры выставлены по данным устройства:\n\n{device_values}\n\nОтключите то, что прибор не умеет или что не нужно показывать. Сущности создаются только для включённых возможностей.\n\nЕсли не уверены — оставьте как есть.",
|
||||
"data": {
|
||||
"mode_cool": "Охлаждение",
|
||||
"mode_dry": "Осушение",
|
||||
"mode_fan": "Вентиляция",
|
||||
"mode_heat": "Обогрев",
|
||||
"mode_auto": "Автоматический режим",
|
||||
"fan_quiet": "Тихая скорость",
|
||||
"fan_low": "Низкая скорость",
|
||||
"fan_medium": "Средняя скорость",
|
||||
"fan_high": "Высокая скорость",
|
||||
"fan_auto": "Автоскорость",
|
||||
"swing_vertical": "Swing вертикальный",
|
||||
"swing_horizontal": "Swing горизонтальный",
|
||||
"economy_mode": "Экономичный режим",
|
||||
"min_heat": "Минимальный обогрев",
|
||||
"indoor_fan_control": "Управление вентилятором",
|
||||
"powerful_mode": "Мощный режим",
|
||||
"outdoor_low_noise": "Тихий наружный блок",
|
||||
"coil_dry_mode": "Сушка испарителя",
|
||||
"display_temperature": "Датчик температуры помещения",
|
||||
"human_det_auto_save": "Автосохранение (датчик присутствия)",
|
||||
"wifi_led_enable": "Wi-Fi индикатор",
|
||||
"af_vertical_direction": "Заслонка вертикальная",
|
||||
"af_horizontal_direction": "Заслонка горизонтальная"
|
||||
},
|
||||
"data_description": {
|
||||
"mode_cool": "Охлаждение",
|
||||
"mode_dry": "Осушение",
|
||||
"mode_fan": "Вентиляция (без нагрева/охлаждения)",
|
||||
"mode_heat": "Обогрев",
|
||||
"mode_auto": "Автоматический режим",
|
||||
"fan_auto": "Автоскорость вентилятора",
|
||||
"fan_quiet": "Тихая скорость",
|
||||
"fan_low": "Низкая скорость",
|
||||
"fan_medium": "Средняя скорость",
|
||||
"fan_high": "Высокая скорость",
|
||||
"swing_vertical": "Качание заслонки по вертикали",
|
||||
"swing_horizontal": "Качание заслонки по горизонтали",
|
||||
"economy_mode": "Экономичный режим",
|
||||
"min_heat": "Минимальный обогрев (поддержание +10 °C)",
|
||||
"indoor_fan_control": "Управление вентилятором при работе наружного блока",
|
||||
"powerful_mode": "Мощный режим (ускоренный выход на режим)",
|
||||
"outdoor_low_noise": "Тихий наружный блок",
|
||||
"coil_dry_mode": "Сушка испарителя",
|
||||
"display_temperature": "Датчик температуры помещения",
|
||||
"human_det_auto_save": "Автосохранение при отсутствии людей (датчик присутствия)",
|
||||
"wifi_led_enable": "Индикатор Wi-Fi на модуле",
|
||||
"af_vertical_direction": "Выбор положения вертикальной заслонки",
|
||||
"af_horizontal_direction": "Выбор положения горизонтальной заслонки"
|
||||
}
|
||||
},
|
||||
"limits": {
|
||||
"title": "Уставка (диапазон и шаг)",
|
||||
"description": "Диапазон/шаг заданы автоматически (у A/F шаг 0,5 °C, у B — 1,0). При необходимости включите ручную конверсию коэффициентами (единицы API — 0,1 °C).\n\nЕсли не уверены — оставьте как есть.",
|
||||
"data": {
|
||||
"template": "Шаблон",
|
||||
"temp_min": "Минимум уставки (°C)",
|
||||
"temp_max": "Максимум уставки (°C)",
|
||||
"temp_step": "Шаг уставки (°C)",
|
||||
@@ -66,8 +129,8 @@
|
||||
},
|
||||
"data_description": {
|
||||
"temp_num": "display = raw × num / den + offset; raw — протокольное значение (уставка — 0,1 °C)",
|
||||
"temp_den": "display = raw × num / den + offset; raw — протокольное значение (уставка — 0,1 °C)",
|
||||
"temp_offset": "display = raw × num / den + offset; raw — протокольное значение (уставка — 0,1 °C)"
|
||||
"temp_den": "display = raw × num / den + offset",
|
||||
"temp_offset": "display = raw × num / den + offset"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user