Add Art-Net / sACN (E1.31) DMX device support

Full-stack implementation of DMX output for stage lighting and LED controllers:
- DMXClient with Art-Net and sACN packet builders, multi-universe splitting
- DMXDeviceProvider with manual_led_count capability and URL parsing
- Device store, API schemas, routes wired with dmx_protocol/start_universe/start_channel
- Frontend: add/settings modals with DMX fields, IconSelect protocol picker
- Fix add device modal dirty check on type change (re-snapshot after switch)
- i18n keys for DMX in en/ru/zh locales

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 16:46:40 +03:00
parent 18c886cbc5
commit ff24ec95e6
18 changed files with 607 additions and 7 deletions

View File

@@ -142,8 +142,21 @@
"device.type.ws.desc": "Стриминг LED данных через WebSocket",
"device.type.openrgb": "OpenRGB",
"device.type.openrgb.desc": "Управление RGB через OpenRGB",
"device.type.dmx": "DMX",
"device.type.dmx.desc": "Art-Net / sACN (E1.31) сценическое освещение",
"device.type.mock": "Mock",
"device.type.mock.desc": "Виртуальное устройство для тестов",
"device.dmx_protocol": "Протокол DMX:",
"device.dmx_protocol.hint": "Art-Net использует UDP порт 6454, sACN (E1.31) — UDP порт 5568",
"device.dmx_protocol.artnet.desc": "UDP unicast, порт 6454",
"device.dmx_protocol.sacn.desc": "Multicast/unicast, порт 5568",
"device.dmx_start_universe": "Начальный Universe:",
"device.dmx_start_universe.hint": "Первый DMX-юниверс (0-32767). Дополнительные юниверсы используются автоматически при >170 светодиодах.",
"device.dmx_start_channel": "Начальный канал:",
"device.dmx_start_channel.hint": "Первый DMX-канал в юниверсе (1-512)",
"device.dmx.url": "IP адрес:",
"device.dmx.url.hint": "IP адрес DMX-узла (напр. 192.168.1.50)",
"device.dmx.url.placeholder": "192.168.1.50",
"device.serial_port": "Серийный порт:",
"device.serial_port.hint": "Выберите COM порт устройства Adalight",
"device.serial_port.none": "Серийные порты не найдены",