1342 lines
111 KiB
JSON
1342 lines
111 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"title": "Настройка WashData",
|
||
"description": "Настройте стиральную машину или другой прибор.\n\nТребуется датчик мощности.\n\n**Далее вас спросят, хотите ли вы создать свой первый профиль.**",
|
||
"data": {
|
||
"name": "Имя устройства",
|
||
"device_type": "Тип устройства",
|
||
"power_sensor": "Датчик мощности",
|
||
"min_power": "Минимальный порог мощности (Вт)"
|
||
},
|
||
"data_description": {
|
||
"name": "Понятное имя для этого устройства (например, «Стиральная машина», «Посудомоечная машина»).",
|
||
"device_type": "Что это за прибор? Помогает адаптировать обнаружение и маркировку.",
|
||
"power_sensor": "Датчик, который в реальном времени сообщает о потребляемой мощности (в ваттах) от вашей умной розетки.",
|
||
"min_power": "Показания мощности выше этого порога (в ваттах) указывают на то, что устройство работает. Начните с 2 Вт для большинства устройств."
|
||
}
|
||
},
|
||
"first_profile": {
|
||
"title": "Создать первый профиль",
|
||
"description": "**Цикл** - это полная работа вашего прибора (например, загрузка белья). **Профиль** группирует эти циклы по типу (например, «Хлопок», «Быстрая стирка»). Создание профиля сейчас помогает интеграции сразу оценить продолжительность.\n\nВы можете вручную выбрать этот профиль в элементах управления устройством, если он не обнаружен автоматически.\n\n**Оставьте поле «Имя профиля» пустым, чтобы пропустить этот шаг.**",
|
||
"data": {
|
||
"profile_name": "Имя профиля (необязательно)",
|
||
"manual_duration": "Предполагаемая продолжительность (минуты)"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"cannot_connect": "Не удалось подключиться",
|
||
"invalid_auth": "Неверная аутентификация",
|
||
"unknown": "Неожиданная ошибка"
|
||
},
|
||
"abort": {
|
||
"already_configured": "Устройство уже настроено"
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"menu_options": {
|
||
"learning_feedbacks": "Просмотреть отзывы об обучении",
|
||
"settings": "Настройки",
|
||
"notifications": "Уведомления",
|
||
"manage_cycles": "Управление циклами",
|
||
"manage_profiles": "Управление профилями",
|
||
"manage_phase_catalog": "Управление каталогом фаз",
|
||
"record_cycle": "Запись цикла (вручную)",
|
||
"diagnostics": "Диагностика и обслуживание"
|
||
}
|
||
},
|
||
"apply_suggestions": {
|
||
"title": "Скопировать предлагаемые значения",
|
||
"description": "Текущие предложенные значения будут скопированы в сохраненные настройки. Это однократное действие, которое не включает автоматическую перезапись.\n\nРекомендуемые значения для копирования:\n{suggested}",
|
||
"data": {
|
||
"confirm": "Подтвердить действие копирования"
|
||
}
|
||
},
|
||
"apply_suggestions_confirm": {
|
||
"title": "Просмотрите предлагаемые изменения",
|
||
"description": "WashData обнаружила **{pending_count}** рекомендуемые значения для применения.\n\nИзменения:\n{changes}\n\n✅ Установите флажок ниже и нажмите **Отправить**, чтобы немедленно применить и сохранить эти изменения.\n❌ Оставьте флажок снятым и нажмите **Отправить**, чтобы отменить действие и вернуться назад.",
|
||
"data": {
|
||
"confirm_apply_suggestions": "Примените и сохраните эти изменения"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "Настройки",
|
||
"description": "{deprecation_warning}Настройте пороги обнаружения, обучение и расширенное поведение. Значения по умолчанию хорошо подходят для большинства конфигураций.\n\nДоступно предложенных настроек: {suggestions_count}.\nЕсли это число больше 0, откройте «Расширенные настройки» и используйте «Применить предложенные значения» для просмотра рекомендаций.",
|
||
"data": {
|
||
"apply_suggestions": "Применить предложенные значения",
|
||
"device_type": "Тип устройства",
|
||
"power_sensor": "Объект датчика мощности",
|
||
"min_power": "Минимальная мощность (Вт)",
|
||
"off_delay": "Задержка окончания цикла (с)",
|
||
"notify_actions": "Действия уведомления",
|
||
"notify_people": "Отложить доставку, пока эти люди не вернутся домой",
|
||
"notify_only_when_home": "Откладывать уведомления, пока выбранный человек не окажется дома",
|
||
"notify_fire_events": "Запускать события автоматизации",
|
||
"notify_start_services": "Начало цикла - цели уведомления",
|
||
"notify_finish_services": "Завершение цикла - цели уведомления",
|
||
"notify_live_services": "Текущий прогресс - цели уведомлений",
|
||
"notify_before_end_minutes": "Уведомление перед завершением (за сколько минут до конца)",
|
||
"notify_title": "Заголовок уведомления",
|
||
"notify_icon": "Значок уведомления",
|
||
"notify_start_message": "Формат сообщения о запуске",
|
||
"notify_finish_message": "Формат сообщения о завершении",
|
||
"notify_pre_complete_message": "Формат сообщения перед завершением",
|
||
"show_advanced": "Изменить расширенные настройки (следующий шаг)"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Установите этот флажок, чтобы скопировать в форму значения, предложенные алгоритмом обучения. Просмотрите перед сохранением.\n\nПредлагается (из обучения):\n- min_power: {suggested_min_power} Вт\n- off_delay: {suggested_off_delay} с\n- watchdog_interval: {suggested_watchdog_interval} с\n- no_update_active_timeout: {suggested_no_update_active_timeout} с\n- profile_match_interval: {suggested_profile_match_interval} с\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} Вт\n- stop_threshold_w: {suggested_stop_threshold_w} Вт\n- end_energy_threshold: {suggested_end_energy_threshold} Втч\n- running_dead_zone: {suggested_running_dead_zone} с\n{suggested_reason}",
|
||
"device_type": "Выберите тип прибора (стиральная машина, сушильная машина, посудомоечная машина, кофемашина, электромобиль). Этот тег сохраняется при каждом цикле для лучшей организации.",
|
||
"power_sensor": "Объект-датчик, сообщающий о мощности в реальном времени (в ваттах). Вы можете изменить это в любое время, не теряя исторических данных - полезно, если вы заменяете умную розетку.",
|
||
"min_power": "Показания мощности выше этого порога (в ваттах) указывают на то, что устройство работает. Начните с 2 Вт для большинства устройств.",
|
||
"off_delay": "Сглаженная мощность должна оставаться ниже порога остановки в течение этого количества секунд, чтобы отметить завершение. По умолчанию: 120 с.",
|
||
"notify_actions": "Дополнительная последовательность действий Home Assistant для уведомлений (скрипты, notify, TTS и т. д.). Если задано, действия выполняются до резервной службы уведомлений.",
|
||
"notify_people": "Объекты людей, используемые для ограничения по присутствию. Если включено, доставка уведомлений задерживается до тех пор, пока хотя бы один выбранный человек не окажется дома.",
|
||
"notify_only_when_home": "Если включено, откладывать уведомления до тех пор, пока хотя бы один выбранный человек не окажется дома.",
|
||
"notify_fire_events": "Если включено, запускает события Home Assistant при начале и завершении цикла (ha_washdata_cycle_started и ha_washdata_cycle_ended) для управления автоматизацией.",
|
||
"notify_start_services": "Одна или несколько служб уведомлений для оповещения о начале цикла. Оставьте пустым, чтобы пропустить уведомления о запуске.",
|
||
"notify_finish_services": "Одна или несколько служб уведомлений, которые оповещают, когда цикл заканчивается или приближается к завершению. Оставьте пустым, чтобы пропустить уведомления об окончании.",
|
||
"notify_live_services": "Одна или несколько служб уведомлений для получения обновлений о ходе выполнения в реальном времени во время выполнения цикла (только мобильное сопутствующее приложение). Оставьте пустым, чтобы пропустить текущие обновления.",
|
||
"notify_before_end_minutes": "За сколько минут до предполагаемого окончания цикла срабатывает уведомление. Установите 0, чтобы отключить. По умолчанию: 0.",
|
||
"notify_title": "Пользовательский заголовок для уведомлений. Поддерживает заполнитель {device}.",
|
||
"notify_icon": "Значок для уведомлений (например, mdi:washing-machine). Оставьте пустым для отправки без значка.",
|
||
"notify_start_message": "Сообщение отправляется при запуске цикла. Поддерживает заполнитель {device}.",
|
||
"notify_finish_message": "Сообщение отправляется после завершения цикла. Поддерживает заполнители {device}, {duration}, {program}, {energy_kwh}, {cost}.",
|
||
"notify_pre_complete_message": "Текст повторяющихся обновлений прогресса в реальном времени во время выполнения цикла. Поддерживает заполнители {device}, {minutes}, {program}."
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Уведомления",
|
||
"description": "Настройте каналы уведомлений, шаблоны и дополнительные обновления прогресса на мобильных устройствах в реальном времени.",
|
||
"data": {
|
||
"notify_actions": "Действия уведомления",
|
||
"notify_people": "Отложить доставку, пока эти люди не вернутся домой",
|
||
"notify_only_when_home": "Откладывать уведомления, пока выбранный человек не окажется дома",
|
||
"notify_fire_events": "Запускать события автоматизации",
|
||
"notify_start_services": "Начало цикла - цели уведомления",
|
||
"notify_finish_services": "Завершение цикла - цели уведомления",
|
||
"notify_live_services": "Текущий прогресс - цели уведомлений",
|
||
"notify_before_end_minutes": "Уведомление перед завершением (за сколько минут до конца)",
|
||
"notify_live_interval_seconds": "Интервал обновления в реальном времени (секунды)",
|
||
"notify_live_overrun_percent": "Допустимое превышение обновлений в реальном времени (%)",
|
||
"notify_live_chronometer": "Таймер обратного отсчета хронометра",
|
||
"notify_title": "Заголовок уведомления",
|
||
"notify_icon": "Значок уведомления",
|
||
"notify_start_message": "Формат сообщения о запуске",
|
||
"notify_finish_message": "Формат сообщения о завершении",
|
||
"notify_pre_complete_message": "Формат сообщения перед завершением",
|
||
"energy_price_entity": "Цена энергии - организация (необязательно)",
|
||
"energy_price_static": "Цена энергии - статическое значение (необязательно)",
|
||
"go_back": "Вернуться без сохранения",
|
||
"notify_reminder_message": "Формат сообщения-напоминания",
|
||
"notify_timeout_seconds": "Автоматическое закрытие через (секунды)",
|
||
"notify_channel": "Канал уведомлений (статус/активный режим/напоминание)",
|
||
"notify_finish_channel": "Готовый канал уведомлений"
|
||
},
|
||
"data_description": {
|
||
"go_back": "Отметьте этот пункт и нажмите Отправить, чтобы отбросить все изменения выше и вернуться в главное меню.",
|
||
"notify_actions": "Дополнительная последовательность действий Home Assistant для уведомлений (скрипты, notify, TTS и т. д.). Если задано, действия выполняются до резервной службы уведомлений.",
|
||
"notify_people": "Объекты людей, используемые для ограничения по присутствию. Если включено, доставка уведомлений задерживается до тех пор, пока хотя бы один выбранный человек не окажется дома.",
|
||
"notify_only_when_home": "Если включено, откладывать уведомления до тех пор, пока хотя бы один выбранный человек не окажется дома.",
|
||
"notify_fire_events": "Если включено, запускает события Home Assistant при начале и завершении цикла (ha_washdata_cycle_started и ha_washdata_cycle_ended) для управления автоматизацией.",
|
||
"notify_start_services": "Одна или несколько служб уведомлений для оповещения о начале цикла (например, notify.mobile_app_my_phone). Оставьте пустым, чтобы пропустить уведомления о запуске.",
|
||
"notify_finish_services": "Одна или несколько служб уведомлений, которые оповещают, когда цикл заканчивается или приближается к завершению. Оставьте пустым, чтобы пропустить уведомления об окончании.",
|
||
"notify_live_services": "Одна или несколько служб уведомлений для получения обновлений о ходе выполнения в реальном времени во время выполнения цикла (только мобильное сопутствующее приложение). Оставьте пустым, чтобы пропустить текущие обновления.",
|
||
"notify_before_end_minutes": "За сколько минут до предполагаемого окончания цикла срабатывает уведомление. Установите 0, чтобы отключить. По умолчанию: 0.",
|
||
"notify_live_interval_seconds": "Как часто обновления прогресса отправляются во время работы. Более низкие значения более отзывчивы, но требуют больше уведомлений. Установлено минимальное значение 30 секунд - значения ниже 30 с автоматически округляются до 30 с.",
|
||
"notify_live_overrun_percent": "Запас безопасности сверх расчётного количества обновлений для длительных/превышающих циклов (например, 20% позволяет увеличить расчётное количество обновлений в 1,2 раза).",
|
||
"notify_live_chronometer": "Если эта функция включена, каждое оперативное обновление включает обратный отсчет хронометра до предполагаемого времени окончания. Таймер уведомлений автоматически отсчитывает время между обновлениями на устройстве (только в сопутствующем приложении Android).",
|
||
"notify_title": "Пользовательский заголовок для уведомлений. Поддерживает заполнитель {device}.",
|
||
"notify_icon": "Значок для уведомлений (например, mdi:washing-machine). Оставьте пустым для отправки без значка.",
|
||
"notify_start_message": "Сообщение отправляется при запуске цикла. Поддерживает заполнитель {device}.",
|
||
"notify_finish_message": "Сообщение отправляется после завершения цикла. Поддерживает заполнители {device}, {duration}, {program}, {energy_kwh}, {cost}.",
|
||
"energy_price_entity": "Выберите числовой объект, содержащий текущую цену на электроэнергию (например, Sensor.electricity_price, input_number.energy_rate). Если установлено, включает заполнитель {cost}. Имеет приоритет над статическим значением, если оба настроены.",
|
||
"energy_price_static": "Фиксированная цена на электроэнергию за кВтч. Если установлено, включает заполнитель {cost}. Игнорируется, если сущность настроена выше. Добавьте символ валюты в шаблон сообщения, например. {cost} €.",
|
||
"notify_reminder_message": "Текст разового напоминания отправляется за настроенное количество минут до предполагаемого окончания. В отличие от повторяющихся обновлений в режиме реального времени, приведенных выше. Поддерживает заполнители {device}, {minutes}, {program}.",
|
||
"notify_timeout_seconds": "Автоматически закрывать уведомления по истечении этого количества секунд (пересылаемые как «тайм-аут» сопутствующего приложения). Установите значение 0, чтобы сохранять их до закрытия. По умолчанию: 0.",
|
||
"notify_channel": "Канал уведомлений о сопутствующем приложении Android для статуса, текущего прогресса и напоминаний. Звук и важность канала настраиваются в сопутствующем приложении при первом использовании имени канала — WashData устанавливает только имя канала. Оставьте пустым для приложения по умолчанию.",
|
||
"notify_finish_channel": "Отдельный канал Android для оповещения о завершении (также используется напоминанием и сигналом ожидания стирки), чтобы у него был собственный звук. Оставьте пустым, чтобы повторно использовать канал выше.",
|
||
"notify_pre_complete_message": "Текст повторяющихся обновлений прогресса в реальном времени во время выполнения цикла. Поддерживает заполнители {device}, {minutes}, {program}."
|
||
}
|
||
},
|
||
"advanced_settings": {
|
||
"title": "Расширенные настройки",
|
||
"description": "Настройте пороги обнаружения, обучение и расширенное поведение. Значения по умолчанию хорошо подходят для большинства конфигураций.",
|
||
"sections": {
|
||
"suggestions_section": {
|
||
"name": "Предложенные настройки",
|
||
"description": "Доступно {suggestions_count} обученных рекомендаций. Отметьте 'Применить предложенные значения', чтобы просмотреть предлагаемые изменения перед сохранением.",
|
||
"data": {
|
||
"apply_suggestions": "Применить предложенные значения"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Установите этот флажок, чтобы открыть шаг проверки предложенных значений алгоритма обучения. Ничего не сохраняется автоматически.\n\nПредлагается (из обучения):\n- min_power: {suggested_min_power} Вт\n- off_delay: {suggested_off_delay} с\n- watchdog_interval: {suggested_watchdog_interval} с\n- no_update_active_timeout: {suggested_no_update_active_timeout} с\n- profile_match_interval: {suggested_profile_match_interval} с\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} Вт\n- stop_threshold_w: {suggested_stop_threshold_w} Вт\n- end_energy_threshold: {suggested_end_energy_threshold} Втч\n- running_dead_zone: {suggested_running_dead_zone} с\n{suggested_reason}"
|
||
}
|
||
},
|
||
"detection_section": {
|
||
"name": "Обнаружение и пороги мощности",
|
||
"description": "Определяет, когда устройство считается ВКЛЮЧЕННЫМ или ВЫКЛЮЧЕННЫМ, энергетические пороги и время переходов между состояниями.",
|
||
"data": {
|
||
"start_duration_threshold": "Длительность устранения дребезга запуска (с)",
|
||
"start_energy_threshold": "Энергетический порог запуска (Втч)",
|
||
"completion_min_seconds": "Минимальное время выполнения для завершения (секунды)",
|
||
"start_threshold_w": "Пороговое значение запуска (Вт)",
|
||
"stop_threshold_w": "Пороговое значение остановки (Вт)",
|
||
"end_energy_threshold": "Энергетический порог завершения (Втч)",
|
||
"running_dead_zone": "Мёртвая зона запуска (секунды)",
|
||
"end_repeat_count": "Количество повторений условия завершения",
|
||
"min_off_gap": "Минимальный разрыв между циклами (с)",
|
||
"sampling_interval": "Интервал выборки (с)"
|
||
},
|
||
"data_description": {
|
||
"start_duration_threshold": "Игнорировать кратковременные скачки мощности короче этой длительности (в секундах). Фильтрует всплески при запуске (например, 60 Вт в течение 2 с) до начала реального цикла. По умолчанию: 5 с.",
|
||
"start_energy_threshold": "Для подтверждения цикл должен накопить не менее этого количества энергии (Втч) во время фазы ЗАПУСК. По умолчанию: 0,005 Втч.",
|
||
"completion_min_seconds": "Циклы короче этого значения будут помечены как «прерванные», даже если они завершились естественным образом. По умолчанию: 600 с.",
|
||
"start_threshold_w": "Мощность должна подняться ВЫШЕ этого порога, чтобы НАЧАТЬ цикл. Установите выше мощности в режиме ожидания. По умолчанию: min_power + 1 Вт.",
|
||
"stop_threshold_w": "Мощность должна упасть НИЖЕ этого порога, чтобы ЗАВЕРШИТЬ цикл. Установите чуть выше нуля, чтобы шум не вызывал ложных срабатываний. По умолчанию: 0,6 × min_power.",
|
||
"end_energy_threshold": "Цикл заканчивается только в том случае, если энергия в последнем окне задержки выключения ниже этого значения (Втч). Предотвращает ложные срабатывания, если мощность колеблется около нуля. По умолчанию: 0,05 Втч.",
|
||
"running_dead_zone": "После начала цикла игнорировать провалы мощности в течение этого количества секунд, чтобы предотвратить ложное обнаружение завершения во время начальной фазы запуска. Установите 0, чтобы отключить. По умолчанию: 0 с.",
|
||
"end_repeat_count": "Сколько раз условие завершения (мощность ниже порога для off_delay) должно последовательно выполняться перед завершением цикла. Более высокие значения предотвращают ложные завершения во время пауз. По умолчанию: 1.",
|
||
"min_off_gap": "Если цикл начинается в течение указанного количества секунд после окончания предыдущего, они будут ОБЪЕДИНЕНЫ в один цикл.",
|
||
"sampling_interval": "Минимальный интервал выборки в секундах. Обновления, превышающие эту скорость, будут игнорироваться. По умолчанию: 30 с (2 с для стиральных, стирально-сушильных и посудомоечных машин)."
|
||
}
|
||
},
|
||
"matching_section": {
|
||
"name": "Сопоставление профилей и обучение",
|
||
"description": "Определяет, насколько агрессивно WashData сопоставляет текущие циклы с обученными профилями и когда запрашивать отзыв.",
|
||
"data": {
|
||
"profile_match_min_duration_ratio": "Минимальный коэффициент продолжительности сопоставления профиля (0,1-1,0)",
|
||
"profile_match_interval": "Интервал сопоставления профиля (секунды)",
|
||
"profile_match_threshold": "Порог сопоставления профиля",
|
||
"profile_unmatch_threshold": "Порог несоответствия профиля",
|
||
"auto_label_confidence": "Уверенность для автоматической маркировки (0-1)",
|
||
"learning_confidence": "Уверенность для запроса обратной связи (0-1)",
|
||
"suppress_feedback_notifications": "Подавить уведомления об отзывах",
|
||
"duration_tolerance": "Допуск продолжительности (0-0,5)",
|
||
"smoothing_window": "Окно сглаживания (отсчёты)",
|
||
"profile_duration_tolerance": "Допуск продолжительности сопоставления профиля (0-0,5)"
|
||
},
|
||
"data_description": {
|
||
"profile_match_min_duration_ratio": "Минимальный коэффициент продолжительности для сопоставления профиля. Для соответствия продолжительность рабочего цикла должна составлять не менее этой доли продолжительности профиля. Меньше = более раннее совпадение. По умолчанию: 0,50 (50%).",
|
||
"profile_match_interval": "Как часто (в секундах) предпринимать попытки сопоставления профилей в течение цикла. Более низкие значения обеспечивают более быстрое обнаружение, но используют больше ресурсов ЦП. По умолчанию: 300 с (5 минут).",
|
||
"profile_match_threshold": "Минимальный показатель сходства DTW (0,0–1,0), необходимый для того, чтобы считать профиль совпавшим. Выше = более строгое совпадение, меньше ложных срабатываний. По умолчанию: 0,4.",
|
||
"profile_unmatch_threshold": "Показатель сходства DTW (0,0–1,0), ниже которого ранее сопоставленный профиль отклоняется. Должно быть ниже порога совпадения, чтобы предотвратить мерцание. По умолчанию: 0,35.",
|
||
"auto_label_confidence": "Автоматически маркировать циклы с этой уверенностью или выше при завершении (0,0–1,0).",
|
||
"learning_confidence": "Минимальная уверенность для запроса проверки пользователем через событие (0,0–1,0).",
|
||
"suppress_feedback_notifications": "Если эта функция включена, WashData по-прежнему будет отслеживать и запрашивать обратную связь внутри себя, но не будет показывать постоянные уведомления с просьбой подтвердить циклы. Полезно, когда циклы всегда определяются правильно, а подсказки отвлекают.",
|
||
"duration_tolerance": "Допуск на оценки оставшегося времени во время цикла (0,0–0,5 соответствует 0–50%).",
|
||
"smoothing_window": "Количество последних показаний мощности, используемых для сглаживания скользящего среднего.",
|
||
"profile_duration_tolerance": "Допуск, используемый при сопоставлении профилей для отклонения общей продолжительности (0,0–0,5). Поведение по умолчанию: ±25%."
|
||
}
|
||
},
|
||
"timing_section": {
|
||
"name": "Время, обслуживание и отладка",
|
||
"description": "Сторожевой таймер, сброс прогресса, автоматическое обслуживание и показ отладочных сущностей.",
|
||
"data": {
|
||
"watchdog_interval": "Интервал сторожевого таймера (секунды)",
|
||
"no_update_active_timeout": "Тайм-аут без обновлений (с)",
|
||
"progress_reset_delay": "Задержка сброса прогресса (секунды)",
|
||
"auto_maintenance": "Включить автоматическое обслуживание",
|
||
"expose_debug_entities": "Показывать объекты отладки",
|
||
"save_debug_traces": "Сохранять трассировки отладки"
|
||
},
|
||
"data_description": {
|
||
"watchdog_interval": "Секунды между проверками сторожевого таймера во время работы. По умолчанию: 5 с. ВНИМАНИЕ: убедитесь, что это значение БОЛЬШЕ интервала обновления вашего датчика, чтобы избежать ложных остановок (например, если датчик обновляется каждые 60 секунд, используйте 65 с и более).",
|
||
"no_update_active_timeout": "Для датчиков, публикующих только при изменении: принудительно завершать АКТИВНЫЙ цикл только в том случае, если обновлений нет в течение указанного количества секунд. Завершение при низком потреблении по-прежнему использует задержку выключения.",
|
||
"progress_reset_delay": "После завершения цикла (100%) подождать указанное количество секунд простоя перед сбросом прогресса до 0%. По умолчанию: 300 с.",
|
||
"auto_maintenance": "Включить автообслуживание (восстановление отсчётов, объединение фрагментов).",
|
||
"expose_debug_entities": "Показывать расширенные датчики (уверенность, фаза, неоднозначность) для отладки.",
|
||
"save_debug_traces": "Сохранять подробные данные рейтинга и трассировки мощности в истории (увеличивает использование хранилища)."
|
||
}
|
||
},
|
||
"anti_wrinkle_section": {
|
||
"name": "Защита от складок (сушилки)",
|
||
"description": "Игнорируйте вращения барабана после завершения цикла, чтобы предотвратить призрачные циклы. Только сушильная / стирально-сушильная машина.",
|
||
"data": {
|
||
"anti_wrinkle_enabled": "Защита от морщин (только для сушильной машины)",
|
||
"anti_wrinkle_max_power": "Максимальная мощность для режима защиты от морщин (Вт)",
|
||
"anti_wrinkle_max_duration": "Максимальная длительность режима защиты от морщин (с)",
|
||
"anti_wrinkle_exit_power": "Мощность выхода из режима защиты от морщин (Вт)"
|
||
},
|
||
"data_description": {
|
||
"anti_wrinkle_enabled": "Игнорировать короткие вращения барабана с малой мощностью после окончания цикла, чтобы предотвратить появление ложных циклов (только для сушильной/стирально-сушильной машины).",
|
||
"anti_wrinkle_max_power": "Всплески этой мощности или ниже рассматриваются как вращения для защиты от морщин, а не как новые циклы. Применяется только при включённой функции защиты от морщин.",
|
||
"anti_wrinkle_max_duration": "Максимальная длина импульса, который может рассматриваться как вращение для защиты от морщин. Применяется только при включённой функции защиты от морщин.",
|
||
"anti_wrinkle_exit_power": "Если мощность упадёт ниже этого уровня, немедленно выйти из режима защиты от морщин (настоящее выключение). Применяется только при включённой функции защиты от морщин."
|
||
}
|
||
},
|
||
"delay_start_section": {
|
||
"name": "Обнаружение отложенного старта",
|
||
"description": "Считайте устойчивый режим ожидания с низким потреблением состоянием 'Ожидание запуска', пока цикл фактически не начнется.",
|
||
"data": {
|
||
"delay_start_detect_enabled": "Включить обнаружение отложенного старта",
|
||
"delay_confirm_seconds": "Отложенный старт: время подтверждения режима ожидания (s)",
|
||
"delay_timeout_hours": "Отложенный старт: максимальное время ожидания (ч)"
|
||
},
|
||
"data_description": {
|
||
"delay_start_detect_enabled": "Если этот параметр включен, кратковременный всплеск потребления низкой мощности, за которым следует устойчивое питание в режиме ожидания, определяется как отложенный запуск. Во время задержки датчик состояния показывает «Ожидание запуска». Ни время выполнения программы, ни прогресс не отслеживаются до тех пор, пока цикл фактически не начнется. Требуется, чтобы start_threshold_w был установлен выше пиковой мощности стока.",
|
||
"delay_confirm_seconds": "Мощность должна оставаться между порогом остановки (W) и порогом запуска (W) в течение этого количества секунд, прежде чем WashData перейдет в состояние 'Ожидание запуска'. Это отфильтровывает короткие пики при навигации по меню. По умолчанию: 60 s.",
|
||
"delay_timeout_hours": "Тайм-аут безопасности: если машина все еще находится в состоянии «Ожидание запуска» по истечении этого количества часов, WashData сбрасывается в состояние «Выкл.». По умолчанию: 8 часов."
|
||
}
|
||
},
|
||
"external_triggers_section": {
|
||
"name": "Внешние триггеры, дверь и пауза",
|
||
"description": "Необязательный внешний датчик завершения цикла, датчик двери для определения паузы / разгрузки и переключатель отключения питания во время паузы.",
|
||
"data": {
|
||
"external_end_trigger_enabled": "Включить внешний триггер завершения цикла",
|
||
"external_end_trigger": "Внешний датчик окончания цикла",
|
||
"external_end_trigger_inverted": "Инвертировать логику триггера (срабатывание при выключении)",
|
||
"door_sensor_entity": "Датчик двери",
|
||
"pause_cuts_power": "Отключение питания при паузе",
|
||
"switch_entity": "Объект переключения (для приостановки отключения электроэнергии)",
|
||
"notify_unload_delay_minutes": "Задержка уведомления об ожидании стирки (мин)"
|
||
},
|
||
"data_description": {
|
||
"external_end_trigger_enabled": "Включить мониторинг внешнего бинарного датчика для инициирования завершения цикла.",
|
||
"external_end_trigger": "Выберите объект бинарного датчика. Когда этот датчик сработает, текущий цикл завершится со статусом «завершён».",
|
||
"external_end_trigger_inverted": "По умолчанию триггер срабатывает при включении датчика. Установите этот флажок, чтобы срабатывание происходило при выключении датчика.",
|
||
"door_sensor_entity": "Дополнительный бинарный датчик для дверцы машины (вкл. = открыто, выкл. = закрыто). Когда дверца откроется во время активного цикла, WashData подтвердит, что цикл был намеренно приостановлен. Если после завершения цикла дверца все еще закрыта, состояние меняется на «Очистка», пока дверца не откроется. Примечание. Закрытие двери НЕ приводит к автоматическому возобновлению приостановленного цикла - возобновление необходимо запускать вручную с помощью кнопки возобновления цикла или службы.",
|
||
"pause_cuts_power": "При приостановке с помощью кнопки или службы «Пауза цикла» также отключите настроенный объект переключателя. Вступает в силу только в том случае, если для этого устройства настроен объект коммутатора.",
|
||
"switch_entity": "Объект-переключатель для переключения при приостановке или возобновлении. Требуется, если включена функция «Отключение питания при паузе».",
|
||
"notify_unload_delay_minutes": "Отправьте уведомление через канал уведомления о завершении после того, как цикл завершится и дверь не будет открыта в течение указанного количества минут (требуется датчик двери). Установите значение 0, чтобы отключить. По умолчанию: 60 мин."
|
||
}
|
||
},
|
||
"pump_section": {
|
||
"name": "Монитор насоса",
|
||
"description": "Только для устройств типа насос. Вызывает событие, если цикл насоса длится дольше этого времени.",
|
||
"data": {
|
||
"pump_stuck_duration": "Порог предупреждения о застревании насоса (s) (только насос)"
|
||
},
|
||
"data_description": {
|
||
"pump_stuck_duration": "Если по прошествии этого количества секунд цикл помпы все еще продолжается, событие ha_washdata_pump_stuck запускается один раз. Используйте это для обнаружения заклинившего двигателя (обычное время работы водоотливного насоса составляет менее 60 с). По умолчанию: 1800 с (30 мин). Только тип насосного устройства."
|
||
}
|
||
},
|
||
"device_link_section": {
|
||
"name": "Ссылка на устройство",
|
||
"description": "При необходимости свяжите это устройство WashData с существующим устройством Home Assistant (например, интеллектуальной розеткой или самим устройством). Устройство WashData затем отображается как «Подключенное через» это устройство. Оставьте пустым, чтобы сохранить WashData как автономное устройство.",
|
||
"data": {
|
||
"linked_device": "Связанное устройство"
|
||
},
|
||
"data_description": {
|
||
"linked_device": "Выберите устройство, к которому нужно подключить WashData. Это добавляет ссылку «Подключено через» в реестр устройства; WashData хранит собственную карточку устройства и объекты. Снимите выделение, чтобы удалить ссылку."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"diagnostics": {
|
||
"title": "Диагностика и обслуживание",
|
||
"description": "Выполняйте действия по обслуживанию, такие как объединение фрагментированных циклов или перенос сохранённых данных.\n\n**Использование хранилища**\n\n- Размер файла: {file_size_kb} КБ\n- Циклы: {cycle_count}\n- Профили: {profile_count}\n- Трассировки отладки: {debug_count}",
|
||
"menu_options": {
|
||
"reprocess_history": "Обслуживание: повторная обработка и оптимизация данных",
|
||
"clear_debug_data": "Очистить данные отладки (освободить место)",
|
||
"wipe_history": "Удалить ВСЕ данные на этом устройстве (необратимо)",
|
||
"export_import": "Экспорт/импорт JSON с настройками (копировать/вставить)",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"clear_debug_data": {
|
||
"title": "Очистить данные отладки",
|
||
"description": "Вы уверены, что хотите удалить все сохранённые трассировки отладки? Это освободит место, но удалит подробную информацию о классификации из прошлых циклов."
|
||
},
|
||
"manage_cycles": {
|
||
"title": "Управление циклами",
|
||
"description": "Последние циклы:\n{recent_cycles}",
|
||
"menu_options": {
|
||
"auto_label_cycles": "Автоматическая маркировка старых циклов",
|
||
"select_cycle_to_label": "Маркировка конкретного цикла",
|
||
"select_cycle_to_delete": "Удалить цикл",
|
||
"interactive_editor": "Интерактивный редактор слияния/разделения",
|
||
"trim_cycle_select": "Обрезать данные цикла",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"manage_cycles_empty": {
|
||
"title": "Управление циклами",
|
||
"description": "Циклы пока не зарегистрированы.",
|
||
"menu_options": {
|
||
"auto_label_cycles": "Автоматическая маркировка старых циклов",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"manage_profiles": {
|
||
"title": "Управление профилями",
|
||
"description": "Сводка профилей:\n{profile_summary}",
|
||
"menu_options": {
|
||
"create_profile": "Создать новый профиль",
|
||
"edit_profile": "Редактировать/переименовать профиль",
|
||
"delete_profile_select": "Удалить профиль",
|
||
"profile_stats": "Статистика профиля",
|
||
"cleanup_profile": "Очистка истории - график и удаление",
|
||
"assign_profile_phases_select": "Назначить диапазоны фаз",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"manage_profiles_empty": {
|
||
"title": "Управление профилями",
|
||
"description": "Профили ещё не созданы.",
|
||
"menu_options": {
|
||
"create_profile": "Создать новый профиль",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"manage_phase_catalog": {
|
||
"title": "Управление каталогом фаз",
|
||
"description": "Каталог фаз (по умолчанию для этого устройства + пользовательские фазы):\n{phase_summary}",
|
||
"menu_options": {
|
||
"phase_catalog_create": "Создать новую фазу",
|
||
"phase_catalog_edit_select": "Редактировать фазу",
|
||
"phase_catalog_delete": "Удалить фазу",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"phase_catalog_create": {
|
||
"title": "Создать пользовательскую фазу",
|
||
"description": "Создайте собственное имя и описание фазы и выберите тип устройства, к которому оно применяется.",
|
||
"data": {
|
||
"target_device_type": "Тип целевого устройства",
|
||
"phase_name": "Название фазы",
|
||
"phase_description": "Описание фазы"
|
||
}
|
||
},
|
||
"phase_catalog_edit_select": {
|
||
"title": "Изменить пользовательскую фазу",
|
||
"description": "Выберите пользовательскую фазу для редактирования.",
|
||
"data": {
|
||
"phase_name": "Пользовательская фаза"
|
||
}
|
||
},
|
||
"phase_catalog_edit": {
|
||
"title": "Изменить пользовательскую фазу",
|
||
"description": "Редактирование фазы: {phase_name}",
|
||
"data": {
|
||
"phase_name": "Название фазы",
|
||
"phase_description": "Описание фазы"
|
||
}
|
||
},
|
||
"phase_catalog_delete": {
|
||
"title": "Удалить пользовательскую фазу",
|
||
"description": "Выберите пользовательскую фазу для удаления. Все назначенные диапазоны, использующие эту фазу, будут удалены.",
|
||
"data": {
|
||
"phase_name": "Пользовательская фаза"
|
||
}
|
||
},
|
||
"assign_profile_phases": {
|
||
"title": "Назначить диапазоны фаз",
|
||
"description": "Предварительный просмотр фаз профиля: **{profile_name}**\n\n{timeline_svg}\n\n**Текущие диапазоны:**\n{current_ranges}\n\nИспользуйте действия ниже, чтобы добавлять, редактировать, удалять или сохранять диапазоны.",
|
||
"menu_options": {
|
||
"assign_profile_phases_add": "Добавить диапазон фаз",
|
||
"assign_profile_phases_edit_select": "Редактировать диапазон фаз",
|
||
"assign_profile_phases_delete": "Удалить диапазон фаз",
|
||
"phase_ranges_clear": "Очистить все диапазоны",
|
||
"assign_profile_phases_auto_detect": "Автоматическое определение фаз",
|
||
"phase_ranges_save": "Сохранить и вернуться",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"assign_profile_phases_add": {
|
||
"title": "Добавить диапазон фаз",
|
||
"description": "Добавьте один диапазон фаз в текущий черновик.",
|
||
"data": {
|
||
"phase_name": "Фаза",
|
||
"start_min": "Начальная минута",
|
||
"end_min": "Конечная минута"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit_select": {
|
||
"title": "Редактировать диапазон фаз",
|
||
"description": "Выберите диапазон для редактирования.",
|
||
"data": {
|
||
"range_index": "Диапазон фаз"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit": {
|
||
"title": "Редактировать диапазон фаз",
|
||
"description": "Обновите выбранный диапазон фаз.",
|
||
"data": {
|
||
"phase_name": "Фаза",
|
||
"start_min": "Начальная минута",
|
||
"end_min": "Конечная минута"
|
||
}
|
||
},
|
||
"assign_profile_phases_delete": {
|
||
"title": "Удалить диапазон фаз",
|
||
"description": "Выберите диапазон для удаления из черновика.",
|
||
"data": {
|
||
"range_index": "Диапазон фаз"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect": {
|
||
"title": "Автоматически определённые фазы",
|
||
"description": "Профиль: **{profile_name}**\n\n{timeline_svg}\n\n**Автоматически обнаружено фаз: {detected_count}.** Выберите действие ниже.",
|
||
"data": {
|
||
"action": "Действие"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect_name": {
|
||
"title": "Назвать обнаруженные фазы",
|
||
"description": "Профиль: **{profile_name}**\n\n**Обнаружено {detected_count} фаз:**\n{ranges_summary}\n\nПрисвойте имя каждой фазе."
|
||
},
|
||
"assign_profile_phases_select": {
|
||
"title": "Назначить диапазоны фаз",
|
||
"description": "Выберите профиль для настройки диапазонов фаз.",
|
||
"data": {
|
||
"profile": "Профиль"
|
||
}
|
||
},
|
||
"profile_stats": {
|
||
"title": "Статистика профиля",
|
||
"description": "{stats_table}"
|
||
},
|
||
"create_profile": {
|
||
"title": "Создать новый профиль",
|
||
"description": "Создайте новый профиль вручную или на основе прошлого цикла.\n\nПримеры названий профилей: «Деликатное», «Интенсивное», «Быстрая стирка».",
|
||
"data": {
|
||
"profile_name": "Имя профиля",
|
||
"reference_cycle": "Эталонный цикл (необязательно)",
|
||
"manual_duration": "Ручная продолжительность (минуты)"
|
||
}
|
||
},
|
||
"edit_profile": {
|
||
"title": "Редактировать профиль",
|
||
"description": "Выберите профиль для переименования",
|
||
"data": {
|
||
"profile": "Профиль"
|
||
}
|
||
},
|
||
"rename_profile": {
|
||
"title": "Редактировать данные профиля",
|
||
"description": "Текущий профиль: {current_name}",
|
||
"data": {
|
||
"new_name": "Имя профиля",
|
||
"manual_duration": "Ручная продолжительность (минуты)"
|
||
}
|
||
},
|
||
"delete_profile_select": {
|
||
"title": "Удалить профиль",
|
||
"description": "Выберите профиль для удаления",
|
||
"data": {
|
||
"profile": "Профиль"
|
||
}
|
||
},
|
||
"delete_profile_confirm": {
|
||
"title": "Подтвердить удаление профиля",
|
||
"description": "⚠️ Профиль будет удалён без возможности восстановления: {profile_name}.",
|
||
"data": {
|
||
"unlabel_cycles": "Удалить метку из циклов, использующих этот профиль"
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"title": "Автоматическая маркировка старых циклов",
|
||
"description": "Всего найдено {total_count} циклов. Профили: {profiles}",
|
||
"data": {
|
||
"confidence_threshold": "Минимальная уверенность (0,50-0,95)"
|
||
}
|
||
},
|
||
"select_cycle_to_label": {
|
||
"title": "Выберите цикл для маркировки",
|
||
"description": "✓ = завершено, ⚠ = возобновлено, ✗ = прервано",
|
||
"data": {
|
||
"cycle_id": "Цикл"
|
||
}
|
||
},
|
||
"select_cycle_to_delete": {
|
||
"title": "Удалить цикл",
|
||
"description": "⚠️ Выбранный цикл будет удалён без возможности восстановления.",
|
||
"data": {
|
||
"cycle_id": "Цикл для удаления"
|
||
}
|
||
},
|
||
"label_cycle": {
|
||
"title": "Отметить цикл",
|
||
"description": "{cycle_info}",
|
||
"data": {
|
||
"profile_name": "Профиль",
|
||
"new_profile_name": "Имя нового профиля (если создаётся)"
|
||
}
|
||
},
|
||
"post_process": {
|
||
"title": "Обработка истории (объединить/разделить)",
|
||
"description": "Очистите историю циклов, объединив фрагментированные циклы и разделив неправильно объединенные циклы во временном окне. Введите количество часов, на которое нужно оглянуться назад (для всех используйте 999999).",
|
||
"data": {
|
||
"time_range": "Окно ретроспективного анализа (часы)",
|
||
"gap_seconds": "Порог для объединения/разделения (секунды)"
|
||
},
|
||
"data_description": {
|
||
"time_range": "Количество часов для сканирования фрагментированных циклов для объединения. Используйте 999999 для обработки всех исторических данных.",
|
||
"gap_seconds": "Порог для принятия решения о разделении или слиянии. Промежутки КОРОЧЕ этого объединяются. Промежутки ДЛИННЕЕ этого разделяются. Уменьшите это значение, чтобы принудительно разделить неправильно объединённый цикл."
|
||
}
|
||
},
|
||
"cleanup_profile": {
|
||
"title": "Очистка истории - выбор профиля",
|
||
"description": "Выберите профиль для визуализации. Это создаст график, показывающий все прошлые циклы для этого профиля, чтобы помочь выявить выбросы.",
|
||
"data": {
|
||
"profile": "Профиль"
|
||
}
|
||
},
|
||
"cleanup_select": {
|
||
"title": "Очистка истории - график и удаление",
|
||
"description": "\n\n**Визуализация {profile_name}**\n\nНа графике отдельные циклы показаны цветными линиями. Определите выбросы (линии, далеко от группы) и найдите соответствие по цвету в списке ниже, чтобы удалить их.\n\n**Выберите циклы для БЕЗВОЗВРАТНОГО удаления:**",
|
||
"data": {
|
||
"cycles_to_delete": "Циклы для удаления (проверьте соответствие цветов)"
|
||
}
|
||
},
|
||
"interactive_editor": {
|
||
"title": "Интерактивный редактор слияния/разделения",
|
||
"description": "Выберите ручное действие для истории цикла.",
|
||
"menu_options": {
|
||
"editor_split": "Разделить цикл (найти промежутки)",
|
||
"editor_merge": "Объединить циклы (сшить фрагменты)",
|
||
"editor_delete": "Удалить цикл(ы)",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"editor_select": {
|
||
"title": "Выбрать циклы",
|
||
"description": "Выберите цикл(ы) для обработки.\n\n{info_text}",
|
||
"data": {
|
||
"selected_cycles": "Циклы"
|
||
}
|
||
},
|
||
"editor_configure": {
|
||
"title": "Настроить и применить",
|
||
"description": "{preview_md}",
|
||
"data": {
|
||
"confirm_action": "Действие",
|
||
"merged_profile": "Результирующий профиль",
|
||
"new_profile_name": "Новое имя профиля",
|
||
"confirm_commit": "Да, я подтверждаю это действие",
|
||
"segment_0_profile": "Профиль сегмента 1",
|
||
"segment_1_profile": "Профиль сегмента 2",
|
||
"segment_2_profile": "Профиль сегмента 3",
|
||
"segment_3_profile": "Профиль сегмента 4",
|
||
"segment_4_profile": "Профиль сегмента 5",
|
||
"segment_5_profile": "Профиль сегмента 6",
|
||
"segment_6_profile": "Профиль сегмента 7",
|
||
"segment_7_profile": "Профиль сегмента 8",
|
||
"segment_8_profile": "Профиль сегмента 9",
|
||
"segment_9_profile": "Профиль сегмента 10"
|
||
}
|
||
},
|
||
"editor_split_params": {
|
||
"title": "Параметры разделения",
|
||
"description": "Настройте чувствительность для разделения этого цикла. Любой простой длиннее указанного вызовет разделение.",
|
||
"data": {
|
||
"split_mode": "Метод разделения"
|
||
}
|
||
},
|
||
"editor_split_auto_params": {
|
||
"title": "Настройка авторазделения",
|
||
"description": "Настройте чувствительность разделения этого цикла. Любой интервал простоя дольше этого значения приведёт к разделению.",
|
||
"data": {
|
||
"min_gap_seconds": "Порог паузы для разделения (секунды)"
|
||
}
|
||
},
|
||
"editor_split_manual_params": {
|
||
"title": "Метки времени для ручного разделения",
|
||
"description": "{preview_md}Окно цикла: **{cycle_start_wallclock} → {cycle_end_wallclock}** на {cycle_date}.\n\nВведите одну или несколько меток времени для разделения (`HH:MM` или `HH:MM:SS`), по одной на строку. Цикл будет разрезан по каждой метке времени — N меток времени дают N+1 сегментов.",
|
||
"data": {
|
||
"split_timestamps": "Временные метки разделения"
|
||
}
|
||
},
|
||
"reprocess_history": {
|
||
"title": "Обслуживание: повторная обработка и оптимизация данных",
|
||
"description": "Выполняет глубокую очистку исторических данных:\n1. Обрезает показания при нулевой мощности (тишина).\n2. Исправляет время/продолжительность цикла.\n3. Пересчитывает все статистические модели (огибающие).\n\n**Запустите это, чтобы устранить проблемы с данными или применить новые алгоритмы.**"
|
||
},
|
||
"wipe_history": {
|
||
"title": "Очистить историю (только для тестирования)",
|
||
"description": "⚠️ Это приведёт к безвозвратному удалению ВСЕХ сохранённых циклов и профилей для этого устройства. Отменить это действие невозможно!"
|
||
},
|
||
"export_import": {
|
||
"title": "Экспорт/импорт JSON",
|
||
"description": "Скопируйте/вставьте циклы, профили и настройки для этого устройства. Экспортируйте ниже или вставьте JSON для импорта.",
|
||
"data": {
|
||
"mode": "Действие",
|
||
"json_payload": "Полная конфигурация JSON"
|
||
},
|
||
"data_description": {
|
||
"mode": "Выберите «Экспорт», чтобы скопировать текущие данные и настройки, или «Импорт», чтобы вставить экспортированные данные с другого устройства WashData.",
|
||
"json_payload": "Для экспорта: скопируйте этот JSON (включает циклы, профили и все настроенные параметры). Для импорта: вставьте JSON, экспортированный из WashData."
|
||
}
|
||
},
|
||
"record_cycle": {
|
||
"title": "Запись цикла",
|
||
"description": "Запишите цикл вручную, чтобы создать чистый профиль без помех.\n\nСтатус: **{status}**\nПродолжительность: {duration} с\nОтсчёты: {samples}",
|
||
"menu_options": {
|
||
"record_refresh": "Обновить статус",
|
||
"record_stop": "Остановить запись (сохранить и обработать)",
|
||
"record_start": "Начать новую запись",
|
||
"record_process": "Обработать последнюю запись (обрезать и сохранить)",
|
||
"record_discard": "Отменить последнюю запись",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"record_process": {
|
||
"title": "Обработка записи",
|
||
"description": "\n\n**На графике показана необработанная запись.** Синий = сохранить, красный = предлагаемая обрезка.\n*График статический и не обновляется при изменении формы.*\n\nЗапись остановлена. Точки обрезки выровнены по обнаруженной частоте дискретизации (~{sampling_rate} с).\n\nНеобработанная продолжительность: {duration} с\nОтсчёты: {samples}",
|
||
"data": {
|
||
"head_trim": "Начало обрезки (секунды)",
|
||
"tail_trim": "Конец обрезки (секунды)",
|
||
"save_mode": "Место сохранения",
|
||
"profile_name": "Имя профиля"
|
||
}
|
||
},
|
||
"learning_feedbacks": {
|
||
"title": "Отзывы об обучении",
|
||
"description": "Отзывов в очереди: {count}\n\n{pending_table}\n\nВыберите запрос на проверку цикла для обработки.",
|
||
"menu_options": {
|
||
"learning_feedbacks_pick": "Проверить ожидающий отзыв",
|
||
"learning_feedbacks_dismiss_all": "Отклонить все ожидающие отзывы",
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"learning_feedbacks_pick": {
|
||
"title": "Выберите отзыв для проверки",
|
||
"description": "Выберите запрос на проверку цикла, который нужно открыть.",
|
||
"data": {
|
||
"selected_feedback": "Выберите цикл для проверки"
|
||
}
|
||
},
|
||
"learning_feedbacks_empty": {
|
||
"title": "Отзывы об обучении",
|
||
"description": "Незавершённых запросов на обратную связь не найдено.",
|
||
"menu_options": {
|
||
"menu_back": "← Назад"
|
||
}
|
||
},
|
||
"learning_feedbacks_dismiss_all": {
|
||
"title": "Отклонить все ожидающие отзывы",
|
||
"description": "Вы собираетесь отклонить **{count}** ожидающих запросов на отзыв. Отклонённые циклы останутся в вашей истории, но не будут давать новый сигнал обучения. Это действие нельзя отменить.\n\n✅ Установите флажок ниже и нажмите **Отправить**, чтобы отклонить всё.\n❌ Оставьте флажок снятым и нажмите **Отправить**, чтобы отменить действие и вернуться назад.",
|
||
"data": {
|
||
"confirm_dismiss_all": "Подтвердить: отклонить все ожидающие запросы на отзыв"
|
||
}
|
||
},
|
||
"resolve_feedback": {
|
||
"title": "Обработка отзыва",
|
||
"description": "{comparison_img}{candidates_table}\n**Обнаруженный профиль**: {detected_profile} ({confidence_pct}%)\n**Расчётная продолжительность**: {est_duration_min} мин\n**Фактическая продолжительность**: {act_duration_min} мин\n\n__Выберите действие ниже:__",
|
||
"data": {
|
||
"action": "Что вы хотите сделать?",
|
||
"corrected_profile": "Правильная программа (если исправляете)",
|
||
"corrected_duration": "Правильная продолжительность в секундах (если исправляете)"
|
||
}
|
||
},
|
||
"trim_cycle_select": {
|
||
"title": "Обрезка цикла - выбор цикла",
|
||
"description": "Выберите цикл для обрезки. ✓ = завершено, ⚠ = возобновлено, ✗ = прервано",
|
||
"data": {
|
||
"cycle_id": "Цикл"
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"title": "Обрезка цикла",
|
||
"description": "Текущее окно: {trim_summary}\n\n{trim_svg}",
|
||
"data": {
|
||
"action": "Действие"
|
||
}
|
||
},
|
||
"trim_cycle_start": {
|
||
"title": "Установить начало обрезки",
|
||
"description": "Окно цикла: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nТекущее начало: **{current_wallclock}** (+{current_offset_min} мин от начала цикла)\n\nВыберите новое время начала, используя инструмент выбора часов ниже.",
|
||
"data": {
|
||
"trim_start_time": "Новое время начала",
|
||
"trim_start_min": "Новый старт (минуты от начала цикла)"
|
||
}
|
||
},
|
||
"trim_cycle_end": {
|
||
"title": "Установить конец обрезки",
|
||
"description": "Окно цикла: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nТекущее окончание: **{current_wallclock}** (+{current_offset_min} мин от начала цикла)\n\nВыберите новое время окончания, используя инструмент выбора часов ниже.",
|
||
"data": {
|
||
"trim_end_time": "Новое время окончания",
|
||
"trim_end_min": "Новый конец (минуты от начала цикла)"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"import_failed": "Импорт не удался. Вставьте действительный JSON экспорта WashData.",
|
||
"select_exactly_one": "Выберите ровно один цикл для этого действия.",
|
||
"select_at_least_one": "Выберите хотя бы один цикл для этого действия.",
|
||
"select_at_least_two": "Выберите хотя бы два цикла для этого действия.",
|
||
"profile_exists": "Профиль с таким именем уже существует",
|
||
"rename_failed": "Не удалось переименовать профиль. Возможно, профиль не существует или новое имя уже занято.",
|
||
"assignment_failed": "Не удалось назначить профиль циклу.",
|
||
"duplicate_phase": "Фаза с таким названием уже существует.",
|
||
"phase_not_found": "Выбранная фаза не найдена.",
|
||
"invalid_phase_name": "Название фазы не может быть пустым.",
|
||
"phase_name_too_long": "Название фазы слишком длинное.",
|
||
"invalid_phase_range": "Недопустимый диапазон фаз. Конец должен быть больше начала.",
|
||
"invalid_phase_timestamp": "Недопустимая метка времени. Используйте формат ГГГГ-ММ-ДД ЧЧ:ММ или ЧЧ:ММ.",
|
||
"overlapping_phase_ranges": "Диапазоны фаз перекрываются. Отрегулируйте диапазоны и повторите попытку.",
|
||
"incomplete_phase_row": "Каждая строка фазы должна включать фазу плюс полные значения начала/конца для выбранного режима.",
|
||
"timestamp_mode_cycle_required": "Пожалуйста, выберите исходный цикл при использовании режима метки времени.",
|
||
"no_phase_ranges": "Для этого действия диапазоны фаз пока недоступны.",
|
||
"feedback_notification_title": "WashData: проверка цикла ({device})",
|
||
"feedback_notification_message": "**Устройство**: {device}\n**Программа**: {program} (уверенность {confidence}%)\n**Время**: {time}\n\nWashData нуждается в вашей помощи для проверки обнаруженного цикла.\n\nОткройте **Настройки > Устройства и службы > WashData > Настройка > Отзывы об обучении**, чтобы подтвердить или исправить этот результат.",
|
||
"suggestions_ready_notification_title": "WashData: предложенные настройки готовы ({device})",
|
||
"suggestions_ready_notification_message": "Датчик **Предложенные настройки** теперь сообщает о **{count}** действенных рекомендациях.\n\nЧтобы просмотреть и применить их: **Настройки > Устройства и службы > WashData > Настройка > Расширенные настройки > Применить предложенные значения**.\n\nПредложения необязательны и отображаются для просмотра перед сохранением.",
|
||
"trim_range_invalid": "Начало должно быть раньше конца. Пожалуйста, откорректируйте точки обрезки.",
|
||
"trim_failed": "Обрезать не удалось. Возможно, цикл больше не существует или окно пусто.",
|
||
"invalid_split_timestamp": "Временная метка недействительна или находится вне окна цикла. Используйте HH:MM или HH:MM:SS в пределах окна цикла.",
|
||
"no_split_segments_found": "По этим временным меткам не удалось получить корректные сегменты. Убедитесь, что каждая временная метка находится в пределах окна цикла, а длина сегментов составляет не менее 1 минуты.",
|
||
"auto_tune_suggestion": "{device_type} {device_title} обнаружил ложные циклы. Рекомендуемое изменение min_power: {current_min}Вт -> {new_min}Вт (не применяется автоматически).",
|
||
"auto_tune_title": "Автоматическая настройка WashData",
|
||
"auto_tune_fallback": "{device_type} {device_title} обнаружил ложные циклы. Рекомендуемое изменение min_power: {current_min}Вт -> {new_min}Вт (не применяется автоматически)."
|
||
},
|
||
"abort": {
|
||
"no_cycles_found": "Циклы не найдены",
|
||
"no_split_segments_found": "В выбранном цикле не найдено сегментов, которые можно разделить.",
|
||
"cycle_not_found": "Не удалось загрузить выбранный цикл.",
|
||
"no_power_data": "Для выбранного цикла данные трассировки мощности отсутствуют.",
|
||
"no_profiles_found": "Профили не найдены. Сначала создайте профиль.",
|
||
"no_profiles_for_matching": "Профили для сопоставления недоступны. Сначала создайте профили.",
|
||
"no_unlabeled_cycles": "Все циклы уже отмечены",
|
||
"no_suggestions": "Предложенных значений пока нет. Проведите несколько циклов и повторите попытку.",
|
||
"no_predictions": "Нет прогнозов",
|
||
"no_custom_phases": "Пользовательские фазы не найдены.",
|
||
"reprocess_success": "Успешно повторно обработано {count} циклов.",
|
||
"debug_data_cleared": "Данные отладки из {count} циклов успешно удалены."
|
||
}
|
||
},
|
||
"selector": {
|
||
"notify_events_option": {
|
||
"options": {
|
||
"cycle_start": "Начало цикла",
|
||
"cycle_finish": "Окончание цикла",
|
||
"cycle_live": "Прогресс в реальном времени"
|
||
}
|
||
},
|
||
"common_text": {
|
||
"options": {
|
||
"unlabeled": "(без маркировки)",
|
||
"create_new_profile": "Создать новый профиль",
|
||
"remove_label": "Удалить метку",
|
||
"no_reference_cycle": "(нет эталонного цикла)",
|
||
"all_device_types": "Все типы устройств",
|
||
"current_suffix": "(текущий)",
|
||
"editor_select_info": "Выберите 1 цикл для разделения или 2+ цикла для объединения.",
|
||
"editor_select_info_split": "Выберите 1 цикл для разделения.",
|
||
"editor_select_info_merge": "Выберите 2+ цикла для объединения.",
|
||
"editor_select_info_delete": "Выберите 1+ циклов для удаления.",
|
||
"no_cycles_recorded": "Циклы пока не зарегистрированы.",
|
||
"profile_summary_line": "- **{name}**: {count} циклов, в среднем {avg} мин",
|
||
"no_profiles_created": "Профили ещё не созданы.",
|
||
"phase_preview": "Предварительный просмотр фазы",
|
||
"phase_preview_no_curve": "Кривая среднего профиля пока недоступна. Запустите/маркируйте дополнительные циклы для этого профиля.",
|
||
"average_power_curve": "Кривая средней мощности",
|
||
"unit_min": "мин",
|
||
"profile_option_fmt": "{name} ({count} циклов, в среднем ~{duration} мин)",
|
||
"profile_option_short_fmt": "{name} ({count} циклов, ~{duration} мин)",
|
||
"deleted_cycles_from_profile": "Удалено {count} циклов из {profile}.",
|
||
"not_enough_data_graph": "Недостаточно данных для построения графика.",
|
||
"no_profiles_found": "Профили не найдены.",
|
||
"cycle_info_fmt": "Цикл: {start}, {duration} мин, метка: {label}",
|
||
"top_candidates_header": "### Лучшие кандидаты",
|
||
"tbl_profile": "Профиль",
|
||
"tbl_confidence": "Уверенность",
|
||
"tbl_correlation": "Корреляция",
|
||
"tbl_duration_match": "Совпадение по длительности",
|
||
"detected_profile": "Обнаруженный профиль",
|
||
"estimated_duration": "Расчётная продолжительность",
|
||
"actual_duration": "Фактическая продолжительность",
|
||
"choose_action": "__Выберите действие ниже:__",
|
||
"tbl_count": "Кол-во",
|
||
"tbl_avg": "Среднее",
|
||
"tbl_min": "Мин.",
|
||
"tbl_max": "Макс.",
|
||
"tbl_energy_avg": "Энергия (средн.)",
|
||
"tbl_energy_total": "Энергия (итого)",
|
||
"tbl_consistency": "Конс.",
|
||
"tbl_last_run": "Последний запуск",
|
||
"graph_legend_title": "Легенда графика",
|
||
"graph_legend_body": "Синяя полоса представляет наблюдаемый минимальный и максимальный диапазон энергопотребления. Линия показывает кривую средней мощности.",
|
||
"recording_preview": "Предварительный просмотр записи",
|
||
"trim_start": "Начало обрезки",
|
||
"trim_end": "Конец обрезки",
|
||
"split_preview_title": "Предварительный просмотр разделения",
|
||
"split_preview_found_fmt": "Найдено {count} сегментов.",
|
||
"split_preview_confirm_fmt": "Нажмите «Подтвердить», чтобы разделить этот цикл на {count} отдельных цикла.",
|
||
"merge_preview_title": "Предварительный просмотр объединения",
|
||
"merge_preview_joining_fmt": "Объединение {count} циклов. Пробелы будут заполнены показаниями 0 Вт.",
|
||
"editor_delete_preview_title": "Предпросмотр удаления",
|
||
"editor_delete_preview_intro": "Выбранные циклы будут удалены безвозвратно:",
|
||
"editor_delete_preview_confirm": "Нажмите Подтвердить, чтобы навсегда удалить эти записи циклов.",
|
||
"no_power_preview": "*Данные о мощности недоступны для предварительного просмотра.*",
|
||
"profile_comparison": "Сравнение профилей",
|
||
"actual_cycle_label": "Этот цикл (фактический)",
|
||
"storage_usage_header": "Использование хранилища",
|
||
"storage_file_size": "Размер файла",
|
||
"storage_cycles": "Циклы",
|
||
"storage_profiles": "Профили",
|
||
"storage_debug_traces": "Трассировки отладки",
|
||
"overview_suffix": "Обзор",
|
||
"phase_preview_for_profile": "Предварительный просмотр фазы для профиля",
|
||
"current_ranges_header": "Текущие диапазоны",
|
||
"assign_phases_help": "Используйте действия ниже, чтобы добавлять, редактировать, удалять или сохранять диапазоны.",
|
||
"profile_summary_header": "Сводка профилей",
|
||
"recent_cycles_header": "Последние циклы",
|
||
"trim_cycle_preview_title": "Предварительный просмотр обрезки цикла",
|
||
"trim_cycle_preview_no_data": "Для этого цикла данные о мощности отсутствуют.",
|
||
"trim_cycle_preview_kept_suffix": "сохраняется",
|
||
"table_program": "Программа",
|
||
"table_when": "Когда",
|
||
"table_length": "Длительность",
|
||
"table_match": "Совпадение",
|
||
"table_profile": "Профиль",
|
||
"table_cycles": "Циклы",
|
||
"table_avg_length": "Средн. длительность",
|
||
"table_last_run": "Последний запуск",
|
||
"table_avg_energy": "Средн. энергия",
|
||
"table_detected_program": "Обнаруженная программа",
|
||
"table_confidence": "Уверенность",
|
||
"table_reported": "Сообщено",
|
||
"phase_builtin_suffix": "(Встроенный)",
|
||
"phase_none_available": "Нет доступных фаз.",
|
||
"settings_deprecation_warning": "⚠️ **Устаревший тип устройства:** {device_type} планируется удалить в будущем выпуске. Конвейер сопоставления WashData не дает надежных результатов для этого класса устройств. Ваша интеграция продолжает работать в течение периода устаревания; Чтобы отключить это предупреждение, переключите **Тип устройства** ниже на один из поддерживаемых типов (стиральная машина, сушильная машина, комбинированная стирально-сушильная машина, посудомоечная машина, аэрофритюрница, хлебопечка или насос) или на **Другое (расширенное)**, если ваше устройство не соответствует ни одному из поддерживаемых типов. **Другое (расширенное)** намеренно предоставляет общие параметры по умолчанию, которые не настроены для какого-либо конкретного устройства, поэтому вам придется самостоятельно настраивать пороговые значения, тайм-ауты и соответствующие параметры; все существующие настройки сохраняются при переключении.",
|
||
"phase_other_device_types": "Другие типы устройств:"
|
||
}
|
||
},
|
||
"interactive_editor_action": {
|
||
"options": {
|
||
"split": "Разделить цикл (найти промежутки)",
|
||
"merge": "Объединить циклы (сшить фрагменты)",
|
||
"delete": "Удалить цикл(ы)"
|
||
}
|
||
},
|
||
"split_mode": {
|
||
"options": {
|
||
"auto": "Автоматически находить паузы бездействия",
|
||
"manual": "Ручные временные метки"
|
||
}
|
||
},
|
||
"diagnostics_action": {
|
||
"options": {
|
||
"reprocess_history": "Обслуживание: повторная обработка и оптимизация данных",
|
||
"clear_debug_data": "Очистить данные отладки (освободить место)",
|
||
"wipe_history": "Удалить ВСЕ данные на этом устройстве (необратимо)",
|
||
"export_import": "Экспорт/импорт JSON с настройками (копировать/вставить)"
|
||
}
|
||
},
|
||
"export_import_mode": {
|
||
"options": {
|
||
"export": "Экспортировать все данные",
|
||
"import": "Импорт/объединение данных"
|
||
}
|
||
},
|
||
"manage_cycles_action": {
|
||
"options": {
|
||
"auto_label_cycles": "Автоматическая маркировка старых циклов",
|
||
"select_cycle_to_label": "Маркировка конкретного цикла",
|
||
"select_cycle_to_delete": "Удалить цикл",
|
||
"interactive_editor": "Интерактивный редактор слияния/разделения",
|
||
"trim_cycle": "Обрезать данные цикла"
|
||
}
|
||
},
|
||
"manage_profiles_action": {
|
||
"options": {
|
||
"create_profile": "Создать новый профиль",
|
||
"edit_profile": "Редактировать/переименовать профиль",
|
||
"delete_profile": "Удалить профиль",
|
||
"profile_stats": "Статистика профиля",
|
||
"cleanup_profile": "Очистка истории: график и удаление",
|
||
"assign_phases": "Назначить диапазоны фаз"
|
||
}
|
||
},
|
||
"manage_phase_catalog_action": {
|
||
"options": {
|
||
"create_custom_phase": "Создать новую фазу",
|
||
"edit_custom_phase": "Редактировать фазу",
|
||
"delete_custom_phase": "Удалить фазу"
|
||
}
|
||
},
|
||
"assign_profile_phases_action": {
|
||
"options": {
|
||
"add_range": "Добавить диапазон фаз",
|
||
"edit_range": "Редактировать диапазон фаз",
|
||
"delete_range": "Удалить диапазон фаз",
|
||
"clear_ranges": "Очистить все диапазоны",
|
||
"auto_detect_ranges": "Автоматическое определение фаз",
|
||
"save_ranges": "Сохранить и вернуться"
|
||
}
|
||
},
|
||
"record_cycle_action": {
|
||
"options": {
|
||
"refresh_status": "Обновить статус",
|
||
"stop_recording": "Остановить запись (сохранить и обработать)",
|
||
"start_recording": "Начать новую запись",
|
||
"process_recording": "Обработать последнюю запись (обрезать и сохранить)",
|
||
"discard_recording": "Отменить последнюю запись"
|
||
}
|
||
},
|
||
"record_process_save_mode": {
|
||
"options": {
|
||
"new_profile": "Создать новый профиль",
|
||
"existing_profile": "Добавить в существующий профиль",
|
||
"discard": "Отменить запись"
|
||
}
|
||
},
|
||
"resolve_feedback_action": {
|
||
"options": {
|
||
"confirm": "Подтвердить - обнаружение правильное",
|
||
"correct": "Исправить - выбрать программу/продолжительность",
|
||
"ignore": "Игнорировать - цикл ложного срабатывания/шума",
|
||
"delete": "Удалить - удалить из истории"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect_action": {
|
||
"options": {
|
||
"name_phases": "Назвать и применить фазы",
|
||
"cancel": "Вернуться без изменений"
|
||
}
|
||
},
|
||
"trim_cycle_action": {
|
||
"options": {
|
||
"set_start": "Установить начальную точку",
|
||
"set_end": "Установить конечную точку",
|
||
"reset": "Сбросить до полной продолжительности",
|
||
"apply": "Применить обрезку",
|
||
"cancel": "Отмена"
|
||
}
|
||
},
|
||
"device_type": {
|
||
"options": {
|
||
"washing_machine": "Стиральная машина",
|
||
"dryer": "Сушилка",
|
||
"washer_dryer": "Комбинированная стиральная машина с сушкой",
|
||
"dishwasher": "Посудомоечная машина",
|
||
"coffee_machine": "Кофемашина (устарела)",
|
||
"ev": "Электромобиль (устарело)",
|
||
"air_fryer": "Воздушная фритюрница",
|
||
"heat_pump": "Тепловой насос (устарело)",
|
||
"bread_maker": "Хлебопечка",
|
||
"pump": "Насос / Отстойный насос",
|
||
"oven": "Духовка (устарела)",
|
||
"other": "Другое (продвинутый уровень)"
|
||
}
|
||
}
|
||
},
|
||
"services": {
|
||
"label_cycle": {
|
||
"name": "Отметить цикл",
|
||
"description": "Назначьте существующий профиль предыдущему циклу или удалите метку.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины для маркировки."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Идентификатор цикла",
|
||
"description": "Идентификатор цикла, который необходимо пометить."
|
||
},
|
||
"profile_name": {
|
||
"name": "Имя профиля",
|
||
"description": "Имя существующего профиля (создайте профили в меню «Управление профилями»). Оставьте пустым, чтобы удалить метку."
|
||
}
|
||
}
|
||
},
|
||
"create_profile": {
|
||
"name": "Создать профиль",
|
||
"description": "Создайте новый профиль (автономный или на основе эталонного цикла).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины."
|
||
},
|
||
"profile_name": {
|
||
"name": "Имя профиля",
|
||
"description": "Имя нового профиля (например, «Интенсивный», «Деликатное»)."
|
||
},
|
||
"reference_cycle_id": {
|
||
"name": "Идентификатор эталонного цикла",
|
||
"description": "Необязательный идентификатор цикла, на котором будет основан этот профиль."
|
||
}
|
||
}
|
||
},
|
||
"delete_profile": {
|
||
"name": "Удалить профиль",
|
||
"description": "Удалите профиль и, при необходимости, снимите маркировку с циклов, использующих его.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины."
|
||
},
|
||
"profile_name": {
|
||
"name": "Имя профиля",
|
||
"description": "Профиль, который нужно удалить."
|
||
},
|
||
"unlabel_cycles": {
|
||
"name": "Снять маркировку с циклов",
|
||
"description": "Удалите метку профиля из циклов, использующих этот профиль."
|
||
}
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"name": "Автоматическая маркировка старых циклов",
|
||
"description": "Маркируйте немаркированные циклы задним числом, используя сопоставление профилей.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины."
|
||
},
|
||
"confidence_threshold": {
|
||
"name": "Порог уверенности",
|
||
"description": "Минимальная уверенность в совпадении (0,50–0,95) для применения меток."
|
||
}
|
||
}
|
||
},
|
||
"export_config": {
|
||
"name": "Экспортировать конфигурацию",
|
||
"description": "Экспортируйте профили, циклы и настройки этого устройства в файл JSON (для каждого устройства).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины для экспорта."
|
||
},
|
||
"path": {
|
||
"name": "Путь",
|
||
"description": "Необязательный абсолютный путь к файлу для записи (по умолчанию /config/ha_washdata_export_{entry}.json)."
|
||
}
|
||
}
|
||
},
|
||
"import_config": {
|
||
"name": "Импортировать конфигурацию",
|
||
"description": "Импортируйте профили, циклы и настройки для этого устройства из файла экспорта JSON (настройки могут быть перезаписаны).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины, в которое нужно импортировать."
|
||
},
|
||
"path": {
|
||
"name": "Путь",
|
||
"description": "Абсолютный путь к экспортному файлу JSON для импорта."
|
||
}
|
||
}
|
||
},
|
||
"submit_cycle_feedback": {
|
||
"name": "Отправить отзыв о цикле",
|
||
"description": "Подтвердите или исправьте автоматически определённую программу после завершения цикла. Укажите либо `entry_id` (дополнительно), либо `device_id` (рекомендуется).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство WashData (рекомендуется вместо entry_id)."
|
||
},
|
||
"entry_id": {
|
||
"name": "Идентификатор записи",
|
||
"description": "Идентификатор записи конфигурации для устройства (альтернатива device_id)."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Идентификатор цикла",
|
||
"description": "Идентификатор цикла, отображаемый в уведомлении/журналах обратной связи."
|
||
},
|
||
"user_confirmed": {
|
||
"name": "Подтвердить обнаруженную программу",
|
||
"description": "Установите true, если обнаруженная программа верна."
|
||
},
|
||
"corrected_profile": {
|
||
"name": "Исправленный профиль",
|
||
"description": "Если не подтверждено, укажите правильное имя профиля/программы."
|
||
},
|
||
"corrected_duration": {
|
||
"name": "Исправленная продолжительность (секунды)",
|
||
"description": "Необязательная исправленная продолжительность в секундах."
|
||
},
|
||
"notes": {
|
||
"name": "Примечания",
|
||
"description": "Дополнительные примечания об этом цикле."
|
||
}
|
||
}
|
||
},
|
||
"record_start": {
|
||
"name": "Начать запись цикла",
|
||
"description": "Запустите вручную запись чистого цикла (обходит всю логику сопоставления).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины для записи."
|
||
}
|
||
}
|
||
},
|
||
"record_stop": {
|
||
"name": "Остановить запись цикла",
|
||
"description": "Остановите запись вручную.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство стиральной машины для остановки записи."
|
||
}
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"name": "Обрезать цикл",
|
||
"description": "Обрезать данные мощности прошлого цикла до определённого временного окна.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство WashData."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Идентификатор цикла",
|
||
"description": "Идентификатор цикла для обрезки."
|
||
},
|
||
"trim_start_s": {
|
||
"name": "Начало обрезки (секунды)",
|
||
"description": "Сохранять данные начиная с этого смещения в секундах. По умолчанию 0."
|
||
},
|
||
"trim_end_s": {
|
||
"name": "Конец обрезки (секунды)",
|
||
"description": "Сохранять данные до этого смещения в секундах. По умолчанию = полная продолжительность."
|
||
}
|
||
}
|
||
},
|
||
"pause_cycle": {
|
||
"name": "Пауза цикла",
|
||
"description": "Приостановите активный цикл устройства WashData.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство WashData, которое необходимо приостановить."
|
||
}
|
||
}
|
||
},
|
||
"resume_cycle": {
|
||
"name": "Возобновить цикл",
|
||
"description": "Возобновите приостановленный цикл для устройства WashData.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Устройство",
|
||
"description": "Устройство WashData для возобновления работы."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"entity": {
|
||
"binary_sensor": {
|
||
"running": {
|
||
"name": "В работе"
|
||
},
|
||
"match_ambiguity": {
|
||
"name": "Неоднозначность сопоставления"
|
||
}
|
||
},
|
||
"sensor": {
|
||
"washer_state": {
|
||
"name": "Состояние",
|
||
"state": {
|
||
"off": "Выключено",
|
||
"idle": "Ожидание",
|
||
"starting": "Запуск",
|
||
"running": "Работает",
|
||
"paused": "Пауза",
|
||
"user_paused": "Приостановлено пользователем",
|
||
"ending": "Завершение",
|
||
"finished": "Завершено",
|
||
"anti_wrinkle": "Защита от морщин",
|
||
"delay_wait": "Ожидание начала",
|
||
"interrupted": "Прервано",
|
||
"force_stopped": "Принудительная остановка",
|
||
"rinse": "Полоскание",
|
||
"unknown": "Неизвестно",
|
||
"clean": "Чистый"
|
||
}
|
||
},
|
||
"washer_program": {
|
||
"name": "Программа"
|
||
},
|
||
"time_remaining": {
|
||
"name": "Оставшееся время"
|
||
},
|
||
"total_duration": {
|
||
"name": "Общая продолжительность"
|
||
},
|
||
"cycle_progress": {
|
||
"name": "Прогресс"
|
||
},
|
||
"current_power": {
|
||
"name": "Текущая мощность"
|
||
},
|
||
"elapsed_time": {
|
||
"name": "Прошедшее время"
|
||
},
|
||
"debug_info": {
|
||
"name": "Отладочная информация"
|
||
},
|
||
"match_confidence": {
|
||
"name": "Уверенность в сопоставлении"
|
||
},
|
||
"top_candidates": {
|
||
"name": "Лучшие кандидаты",
|
||
"state": {
|
||
"none": "Нет"
|
||
}
|
||
},
|
||
"current_phase": {
|
||
"name": "Текущая фаза"
|
||
},
|
||
"wash_phase": {
|
||
"name": "Фаза"
|
||
},
|
||
"profile_cycle_count": {
|
||
"name": "Количество циклов профиля {profile_name}",
|
||
"unit_of_measurement": "циклов"
|
||
},
|
||
"suggestions": {
|
||
"name": "Доступные предложенные настройки"
|
||
},
|
||
"pump_runs_today": {
|
||
"name": "Работа насоса (последние 24 часа)"
|
||
},
|
||
"cycle_count": {
|
||
"name": "Количество циклов"
|
||
}
|
||
},
|
||
"select": {
|
||
"program_select": {
|
||
"name": "Программа цикла",
|
||
"state": {
|
||
"auto_detect": "Автоопределение"
|
||
}
|
||
}
|
||
},
|
||
"button": {
|
||
"force_end_cycle": {
|
||
"name": "Принудительное завершение цикла"
|
||
},
|
||
"pause_cycle": {
|
||
"name": "Пауза цикла"
|
||
},
|
||
"resume_cycle": {
|
||
"name": "Возобновить цикл"
|
||
}
|
||
}
|
||
},
|
||
"exceptions": {
|
||
"device_id_required": {
|
||
"message": "Требуется действительный идентификатор устройства."
|
||
},
|
||
"cycle_id_required": {
|
||
"message": "Требуется действительный Cycl_id."
|
||
},
|
||
"profile_name_required": {
|
||
"message": "Требуется действительное имя_профиля."
|
||
},
|
||
"device_not_found": {
|
||
"message": "Устройство не найдено."
|
||
},
|
||
"no_config_entry": {
|
||
"message": "Для устройства не найдена запись конфигурации."
|
||
},
|
||
"integration_not_loaded": {
|
||
"message": "Интеграция не загружена для этого устройства."
|
||
},
|
||
"cycle_not_found_or_no_power": {
|
||
"message": "Цикл не найден или не имеет данных о мощности."
|
||
},
|
||
"trim_failed_empty_window": {
|
||
"message": "Не удалось выполнить обрезку - цикл не найден, данные о мощности отсутствуют или результирующее окно пусто."
|
||
},
|
||
"trim_invalid_range": {
|
||
"message": "trim_end_s должно быть больше, чем trim_start_s."
|
||
}
|
||
}
|
||
}
|