Перейти к содержимому

Управление вентиляторами

Плагины могут предоставлять управление скоростью вентиляторов и данные датчиков температуры системе охлаждения SignalRGB. При включении пользователи могут задавать кривые вентиляторов, отслеживать RPM и просматривать показания температуры непосредственно в SignalRGB.

Общий шаблон плагина с поддержкой управления вентиляторами:

  1. Экспортировать SupportsFanControl(), возвращающую true, чтобы сообщить SignalRGB, что это устройство имеет управляемые вентиляторы.
  2. Обнаружить, какие вентиляторы подключены (с помощью команд, специфичных для устройства, или опроса RPM).
  3. Вызвать device.createFanControl() для каждого обнаруженного вентилятора в Initialize().
  4. В каждом кадре в Render(): считать текущий RPM с устройства и сообщить его через device.setRPM(), затем считать желаемую скорость из device.getFanLevel() и применить её к устройству.

Всегда проверяйте device.fanControlDisabled() перед вызовом любых функций уровня вентилятора. Управление вентиляторами может быть недоступно, потому что у пользователя нет SignalRGB Pro или пользователь отключил его вручную.


Экспортируется из плагина для объявления поддержки управления вентиляторами. SignalRGB вызывает это при инициализации, чтобы решить, показывать ли UI охлаждения для устройства.

export function SupportsFanControl() { return true; }

Если этот экспорт отсутствует или возвращает false, API управления вентиляторами всё равно доступен, но UI охлаждения для устройства не будет отображаться.


Возвращает true, если управление вентиляторами в данный момент недоступно — либо потому что у пользователя нет SignalRGB Pro, либо пользователь вручную отключил систему охлаждения.

Всегда проверяйте это перед вызовом device.getFanLevel() или device.getNormalizedFanLevel().

ВозвратТипОписание
Disabledbooleantrue, если API охлаждения недоступен
if (device.fanControlDisabled()) {
return;
}

Создаёт контроллер вентилятора с указанным ID. Вызывайте в Initialize() для каждого вентилятора, которым управляет устройство. Если контроллер с таким ID уже существует, вызов игнорируется.

ПараметрТипОписаниеПример
FanIdstringУникальный идентификатор этого контроллера вентилятора"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

Удаляет контроллер вентилятора с указанным ID. Используйте, если вентилятор больше не обнаруживается или устройство отключено.

ПараметрТипОписаниеПример
FanIdstringID контроллера вентилятора для удаления"Fan1"

Возвращает желаемую скорость вентилятора для указанного контроллера в процентах (0–100), производную от текущих настроек кривой вентилятора пользователя.

ПараметрТипОписаниеПример
FanIdstringID контроллера вентилятора"Fan1"
ВозвратТипОписаниеПример
FanSpeedintЖелаемая скорость, 0–10042
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)

Возвращает желаемую скорость вентилятора как нормализованное число с плавающей точкой (0.0–1.0). Полезно, когда устройство ожидает дробный коэффициент заполнения, а не процент.

ПараметрТипОписаниеПример
FanIdstringID контроллера вентилятора"Fan1"
ВозвратТипОписаниеПример
FanSpeedfloatЖелаемая скорость, 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42

Сообщает текущие измеренные RPM для контроллера вентилятора. Это значение отображается в UI охлаждения и графиках мониторинга системы.

ПараметрТипОписаниеПример
FanIdstringID контроллера вентилятора"Fan1"
RPMintТекущая скорость вентилятора в RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

Плагины также могут предоставлять показания температуры системе охлаждения SignalRGB. Эти значения отображаются в мониторинге системы и могут использоваться как входной источник для кривых вентиляторов.

Создаёт датчик температуры с указанным ID. Вызывайте в Initialize() для каждого источника температуры, которым управляет устройство.

ПараметрТипОписаниеПример
SensorIdstringУникальный идентификатор этого датчика"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

Удаляет датчик температуры с указанным ID.

ПараметрТипОписаниеПример
SensorIdstringID датчика для удаления"Coolant Temp"

Сообщает текущую температуру для указанного датчика. Вызывайте в каждом кадре после чтения значения с устройства.

ПараметрТипОписаниеПример
SensorIdstringID датчика"Coolant Temp"
TemperaturefloatТекущая температура в градусах Цельсия34.5
let temp = ReadTemperatureFromDevice();
device.SetTemperature("Coolant Temp", temp);

export function SupportsFanControl() { return true; }
export function Initialize() {
device.createFanControl("Fan1");
device.createFanControl("Fan2");
device.createTemperatureSensor("Coolant Temp");
}
export function Render() {
// Report current RPM — required every frame or speed will hardlock
device.setRPM("Fan1", ReadRPM(1));
device.setRPM("Fan2", ReadRPM(2));
// Report current temperature
device.SetTemperature("Coolant Temp", ReadTemp());
// Apply desired speed to hardware
if (!device.fanControlDisabled()) {
SetDeviceFanSpeed(1, device.getFanLevel("Fan1"));
SetDeviceFanSpeed(2, device.getFanLevel("Fan2"));
}
}
export function Shutdown() {
device.removeFanControl("Fan1");
device.removeFanControl("Fan2");
device.removeTemperatureSensor("Coolant Temp");
}