Что такое компоненты?
RGB-контроллеры — концентраторы вентиляторов, заголовки ARGB, контроллеры светодиодных лент — управляют своими выходами как простой цепочкой светодиодов по порядку. Контроллеру не важно, что физически подключено: он просто передаёт цвета по проводу, один светодиод за раз.
Проблема в том, что разные продукты располагают эти светодиоды совершенно по-разному. Вентилятор с 16 светодиодами расставляет их по кругу. Лента с 30 светодиодами — в линию. Двухкольцевой вентилятор может иметь внутреннее кольцо из 8 и внешнее из 16 светодиодов. Если вы хотите, чтобы эти светодиоды находились в правильном положении на canvas SignalRGB — чтобы световые эффекты корректно согласовывались по всей системе — вам нужно знать форму, а не только количество.
Компоненты решают эту задачу. Компонент — это JSON-описание конкретного RGB-продукта: сколько в нём светодиодов, где каждый из них расположен в 2D-пространстве и как каждый называется. SignalRGB использует это описание для правильного отображения цветов canvas на нужные позиции в цепочке светодиодов, независимо от того, какой контроллер управляет ими.
Библиотека компонентов
Заголовок раздела «Библиотека компонентов»SignalRGB поставляется с большой встроенной библиотекой компонентов, охватывающей вентиляторы, ленты, головки помп и другие RGB-аксессуары от широкого круга производителей. Библиотека также открыта для вклада сообщества — если продукт ещё не охвачен, вы можете создать для него JSON-файл компонента и отправить его.
Формат JSON см. в разделе Структура компонента.
Как используются компоненты
Заголовок раздела «Как используются компоненты»Пользователь назначает компоненты каналам контроллерного устройства через UI выбора компонентов в SignalRGB. Например, пользователь с тремя вентиляторами Corsair LL120, подключёнными к Corsair Lighting Node Pro, может настроить:
- Канал 1 → Corsair LL120 · Corsair LL120 · Corsair LL120
SignalRGB выстраивает компоненты по порядку вдоль цепочки светодиодов канала и позиционирует каждый на canvas в соответствии с его LED-координатами. Пользователь может расположить их как угодно — три вентилятора в ряд, Г-образно, в любом месте, где они физически находятся в корпусе.
Плагину не нужно знать, какие продукты подключены. Он просто вызывает device.channel("Channel 1").getColors() и получает правильно отображённые цветовые данные для любой пользовательской конфигурации. Абстракция работает независимо от того, находится ли на этом канале вентилятор с 16 светодиодами или лента с 30 светодиодами.
Почему это важно для авторов плагинов
Заголовок раздела «Почему это важно для авторов плагинов»Если вы пишете плагин для контроллера освещения (устройства с одним или несколькими выходными каналами, управляющими обобщёнными цепочками светодиодов), вам не нужно встраивать в плагин привязки светодиодов для конкретных продуктов. Вы определяете каналы, а система компонентов берёт на себя остальное.
Это означает:
- Ваш плагин автоматически работает с любым продуктом из библиотеки компонентов
- Пользователи могут смешивать разные продукты на одном контроллере
- Новые продукты могут поддерживаться простым добавлением JSON-файла компонента — без изменений плагина
Описание плагинового API см. в разделе Использование компонентов, описание создания файла компонента — в разделе Структура компонента.