Управление вентиляторами
Плагины могут предоставлять управление скоростью вентиляторов и данные датчиков температуры системе охлаждения SignalRGB. При включении пользователи могут задавать кривые вентиляторов, отслеживать RPM и просматривать показания температуры непосредственно в SignalRGB.
Общий шаблон плагина с поддержкой управления вентиляторами:
- Экспортировать
SupportsFanControl(), возвращающуюtrue, чтобы сообщить SignalRGB, что это устройство имеет управляемые вентиляторы. - Обнаружить, какие вентиляторы подключены (с помощью команд, специфичных для устройства, или опроса RPM).
- Вызвать
device.createFanControl()для каждого обнаруженного вентилятора вInitialize(). - В каждом кадре в
Render(): считать текущий RPM с устройства и сообщить его черезdevice.setRPM(), затем считать желаемую скорость изdevice.getFanLevel()и применить её к устройству.
Всегда проверяйте device.fanControlDisabled() перед вызовом любых функций уровня вентилятора. Управление вентиляторами может быть недоступно, потому что у пользователя нет SignalRGB Pro или пользователь отключил его вручную.
Экспорт плагина
Заголовок раздела «Экспорт плагина»SupportsFanControl()
Заголовок раздела «SupportsFanControl()»Экспортируется из плагина для объявления поддержки управления вентиляторами. SignalRGB вызывает это при инициализации, чтобы решить, показывать ли UI охлаждения для устройства.
export function SupportsFanControl() { return true; }Если этот экспорт отсутствует или возвращает false, API управления вентиляторами всё равно доступен, но UI охлаждения для устройства не будет отображаться.
Методы контроллера вентиляторов
Заголовок раздела «Методы контроллера вентиляторов»device.fanControlDisabled()
Заголовок раздела «device.fanControlDisabled()»Возвращает true, если управление вентиляторами в данный момент недоступно — либо потому что у пользователя нет SignalRGB Pro, либо пользователь вручную отключил систему охлаждения.
Всегда проверяйте это перед вызовом device.getFanLevel() или device.getNormalizedFanLevel().
| Возврат | Тип | Описание |
|---|---|---|
| Disabled | boolean | true, если API охлаждения недоступен |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Заголовок раздела «device.createFanControl(fanId)»Создаёт контроллер вентилятора с указанным ID. Вызывайте в Initialize() для каждого вентилятора, которым управляет устройство. Если контроллер с таким ID уже существует, вызов игнорируется.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| FanId | string | Уникальный идентификатор этого контроллера вентилятора | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Заголовок раздела «device.removeFanControl(fanId)»Удаляет контроллер вентилятора с указанным ID. Используйте, если вентилятор больше не обнаруживается или устройство отключено.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| FanId | string | ID контроллера вентилятора для удаления | "Fan1" |
device.getFanLevel(fanId)
Заголовок раздела «device.getFanLevel(fanId)»Возвращает желаемую скорость вентилятора для указанного контроллера в процентах (0–100), производную от текущих настроек кривой вентилятора пользователя.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| FanId | string | ID контроллера вентилятора | "Fan1" |
| Возврат | Тип | Описание | Пример |
|---|---|---|---|
| FanSpeed | int | Желаемая скорость, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)device.getNormalizedFanLevel(fanId)
Заголовок раздела «device.getNormalizedFanLevel(fanId)»Возвращает желаемую скорость вентилятора как нормализованное число с плавающей точкой (0.0–1.0). Полезно, когда устройство ожидает дробный коэффициент заполнения, а не процент.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| FanId | string | ID контроллера вентилятора | "Fan1" |
| Возврат | Тип | Описание | Пример |
|---|---|---|---|
| FanSpeed | float | Желаемая скорость, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42device.setRPM(fanId, rpm)
Заголовок раздела «device.setRPM(fanId, rpm)»Сообщает текущие измеренные RPM для контроллера вентилятора. Это значение отображается в UI охлаждения и графиках мониторинга системы.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| FanId | string | ID контроллера вентилятора | "Fan1" |
| RPM | int | Текущая скорость вентилятора в RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Методы датчиков температуры
Заголовок раздела «Методы датчиков температуры»Плагины также могут предоставлять показания температуры системе охлаждения SignalRGB. Эти значения отображаются в мониторинге системы и могут использоваться как входной источник для кривых вентиляторов.
device.createTemperatureSensor(sensorId)
Заголовок раздела «device.createTemperatureSensor(sensorId)»Создаёт датчик температуры с указанным ID. Вызывайте в Initialize() для каждого источника температуры, которым управляет устройство.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| SensorId | string | Уникальный идентификатор этого датчика | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Заголовок раздела «device.removeTemperatureSensor(sensorId)»Удаляет датчик температуры с указанным ID.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| SensorId | string | ID датчика для удаления | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Заголовок раздела «device.SetTemperature(sensorId, temperature)»Сообщает текущую температуру для указанного датчика. Вызывайте в каждом кадре после чтения значения с устройства.
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| SensorId | string | ID датчика | "Coolant Temp" |
| Temperature | float | Текущая температура в градусах Цельсия | 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");}