Add profile conditions, scene presets, MQTT integration, and Scenes tab
Feature 1 — Profile Conditions: time-of-day, system idle (Win32 GetLastInputInfo), and display state (GUID_CONSOLE_DISPLAY_STATE) condition types for automatic profile activation. Feature 2 — Scene Presets: snapshot/restore system that captures target running states, device brightness, and profile enables. Server-side capture with 5-step activation order. Dedicated Scenes tab with CardSection-based card grid, command palette integration, and dashboard quick-activate section. Feature 3 — MQTT Integration: MQTTService singleton with aiomqtt, MQTTLEDClient device provider for pixel output, MQTT profile condition type with topic/payload matching, and frontend support for MQTT device type and condition editor. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -128,6 +128,9 @@
|
||||
"device.led_type.hint": "RGB (3 канала) или RGBW (4 канала с выделенным белым)",
|
||||
"device.send_latency": "Задержка отправки (мс):",
|
||||
"device.send_latency.hint": "Имитация сетевой/серийной задержки на кадр в миллисекундах",
|
||||
"device.mqtt_topic": "MQTT Топик:",
|
||||
"device.mqtt_topic.hint": "MQTT топик для публикации пиксельных данных (напр. mqtt://ledgrab/device/name)",
|
||||
"device.mqtt_topic.placeholder": "mqtt://ledgrab/device/гостиная",
|
||||
"device.url.hint": "IP адрес или имя хоста устройства (напр. http://192.168.1.100)",
|
||||
"device.name": "Имя Устройства:",
|
||||
"device.name.placeholder": "ТВ в Гостиной",
|
||||
@@ -529,6 +532,7 @@
|
||||
"dashboard.stop_all": "Остановить все",
|
||||
"dashboard.failed": "Не удалось загрузить обзор",
|
||||
"dashboard.section.profiles": "Профили",
|
||||
"dashboard.section.scenes": "Пресеты сцен",
|
||||
"dashboard.targets": "Цели",
|
||||
"dashboard.section.performance": "Производительность системы",
|
||||
"dashboard.perf.cpu": "ЦП",
|
||||
@@ -568,6 +572,27 @@
|
||||
"profiles.condition.application.match_type.topmost": "На переднем плане",
|
||||
"profiles.condition.application.match_type.topmost_fullscreen": "На переднем плане + Полный экран",
|
||||
"profiles.condition.application.match_type.fullscreen": "Полный экран",
|
||||
"profiles.condition.time_of_day": "Время суток",
|
||||
"profiles.condition.time_of_day.start_time": "Время начала:",
|
||||
"profiles.condition.time_of_day.end_time": "Время окончания:",
|
||||
"profiles.condition.time_of_day.overnight_hint": "Для ночных диапазонов (например 22:00–06:00) укажите время начала позже времени окончания.",
|
||||
"profiles.condition.system_idle": "Бездействие системы",
|
||||
"profiles.condition.system_idle.idle_minutes": "Тайм-аут бездействия (минуты):",
|
||||
"profiles.condition.system_idle.mode": "Режим срабатывания:",
|
||||
"profiles.condition.system_idle.when_idle": "При бездействии",
|
||||
"profiles.condition.system_idle.when_active": "При активности",
|
||||
"profiles.condition.display_state": "Состояние дисплея",
|
||||
"profiles.condition.display_state.state": "Состояние монитора:",
|
||||
"profiles.condition.display_state.on": "Включён",
|
||||
"profiles.condition.display_state.off": "Выключен (спящий режим)",
|
||||
"profiles.condition.mqtt": "MQTT",
|
||||
"profiles.condition.mqtt.topic": "Топик:",
|
||||
"profiles.condition.mqtt.payload": "Значение:",
|
||||
"profiles.condition.mqtt.match_mode": "Режим сравнения:",
|
||||
"profiles.condition.mqtt.match_mode.exact": "Точное совпадение",
|
||||
"profiles.condition.mqtt.match_mode.contains": "Содержит",
|
||||
"profiles.condition.mqtt.match_mode.regex": "Регулярное выражение",
|
||||
"profiles.condition.mqtt.hint": "Активировать при получении совпадающего значения по MQTT топику",
|
||||
"profiles.targets": "Цели:",
|
||||
"profiles.targets.hint": "Цели для запуска при активации профиля",
|
||||
"profiles.targets.empty": "Нет доступных целей",
|
||||
@@ -586,6 +611,36 @@
|
||||
"profiles.error.name_required": "Введите название",
|
||||
"profiles.toggle_all.start": "Запустить все цели",
|
||||
"profiles.toggle_all.stop": "Остановить все цели",
|
||||
"scenes.title": "Сцены",
|
||||
"scenes.add": "Захватить сцену",
|
||||
"scenes.edit": "Редактировать сцену",
|
||||
"scenes.name": "Название:",
|
||||
"scenes.name.hint": "Описательное имя для этого пресета сцены",
|
||||
"scenes.description": "Описание:",
|
||||
"scenes.description.hint": "Необязательное описание назначения этой сцены",
|
||||
"scenes.color": "Цвет карточки:",
|
||||
"scenes.color.hint": "Акцентный цвет для карточки сцены на панели управления",
|
||||
"scenes.capture": "Захват",
|
||||
"scenes.activate": "Активировать сцену",
|
||||
"scenes.recapture": "Перезахватить текущее состояние",
|
||||
"scenes.delete": "Удалить сцену",
|
||||
"scenes.targets_count": "целей",
|
||||
"scenes.devices_count": "устройств",
|
||||
"scenes.profiles_count": "профилей",
|
||||
"scenes.captured": "Сцена захвачена",
|
||||
"scenes.updated": "Сцена обновлена",
|
||||
"scenes.activated": "Сцена активирована",
|
||||
"scenes.activated_partial": "Сцена активирована частично",
|
||||
"scenes.errors": "ошибок",
|
||||
"scenes.recaptured": "Сцена перезахвачена",
|
||||
"scenes.deleted": "Сцена удалена",
|
||||
"scenes.recapture_confirm": "Перезахватить текущее состояние в \"{name}\"?",
|
||||
"scenes.delete_confirm": "Удалить сцену \"{name}\"?",
|
||||
"scenes.error.name_required": "Необходимо указать название",
|
||||
"scenes.error.save_failed": "Не удалось сохранить сцену",
|
||||
"scenes.error.activate_failed": "Не удалось активировать сцену",
|
||||
"scenes.error.recapture_failed": "Не удалось перезахватить сцену",
|
||||
"scenes.error.delete_failed": "Не удалось удалить сцену",
|
||||
"autostart.title": "Автозапуск целей",
|
||||
"autostart.toggle.enabled": "Автозапуск включён",
|
||||
"autostart.toggle.disabled": "Автозапуск отключён",
|
||||
@@ -961,6 +1016,7 @@
|
||||
"search.group.pattern_templates": "Шаблоны паттернов",
|
||||
"search.group.audio": "Аудиоисточники",
|
||||
"search.group.value": "Источники значений",
|
||||
"search.group.scenes": "Пресеты сцен",
|
||||
"settings.backup.label": "Резервное копирование",
|
||||
"settings.backup.hint": "Скачать всю конфигурацию (устройства, цели, потоки, шаблоны, профили) в виде одного JSON-файла.",
|
||||
"settings.backup.button": "Скачать резервную копию",
|
||||
|
||||
Reference in New Issue
Block a user