Przejdź do głównej zawartości

Sterowanie wentylatorami

Wtyczki mogą udostępniać sterowanie prędkością wentylatorów i raportowanie temperatury systemowi chłodzenia SignalRGB. Po włączeniu użytkownicy mogą ustawiać profile wentylatorów, monitorować RPM i przeglądać odczyty temperatury bezpośrednio w SignalRGB.

Ogólny schemat wtyczki obsługującej sterowanie wentylatorami:

  1. Eksportuj SupportsFanControl() zwracające true, aby poinformować SignalRGB, że to urządzenie ma wentylatory z możliwością sterowania.
  2. Wykryj, które wentylatory są podłączone (poprzez polecenia specyficzne dla urządzenia lub odpytywanie RPM).
  3. Wywołaj device.createFanControl() dla każdego wykrytego wentylatora w Initialize().
  4. W każdej klatce w Render(): odczytaj aktualne RPM z urządzenia i zaraportuj je przez device.setRPM(), następnie odczytaj żądaną prędkość z device.getFanLevel() i zastosuj ją do urządzenia.

Zawsze sprawdzaj device.fanControlDisabled() przed wywołaniem funkcji prędkości wentylatora. Sterowanie wentylatorami może być niedostępne, ponieważ użytkownik nie ma SignalRGB Pro lub ręcznie je wyłączył.


Eksportowane z wtyczki, aby wskazać, że to urządzenie obsługuje sterowanie wentylatorami. SignalRGB wywołuje to podczas inicjalizacji, aby zdecydować, czy wyświetlić interfejs chłodzenia dla urządzenia.

export function SupportsFanControl() { return true; }

Jeśli ten eksport jest nieobecny lub zwraca false, API sterowania wentylatorami jest nadal dostępne, ale interfejs chłodzenia nie pojawi się dla urządzenia.


Zwraca true, jeśli sterowanie wentylatorami jest obecnie niedostępne — albo dlatego, że użytkownik nie ma SignalRGB Pro, albo ręcznie wyłączył system chłodzenia.

Zawsze sprawdzaj to przed wywołaniem device.getFanLevel() lub device.getNormalizedFanLevel().

ZwrotTypOpis
Disabledbooleantrue jeśli API chłodzenia jest niedostępne
if (device.fanControlDisabled()) {
return;
}

Tworzy kontroler wentylatora o podanym ID. Wywołaj to w Initialize() dla każdego wentylatora udostępnianego przez urządzenie. Jeśli kontroler o podanym ID już istnieje, wywołanie jest ignorowane.

ParametrTypOpisPrzykład
FanIdstringUnikalny identyfikator dla tego kontrolera wentylatora"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

Usuwa kontroler wentylatora o podanym ID. Użyj tego, gdy wentylator nie jest już wykrywany lub urządzenie się rozłącza.

ParametrTypOpisPrzykład
FanIdstringID kontrolera wentylatora do usunięcia"Fan1"

Zwraca żądaną prędkość wentylatora dla podanego kontrolera wentylatora jako procent (0–100), wynikający z bieżących ustawień krzywej wentylatora użytkownika.

ParametrTypOpisPrzykład
FanIdstringID kontrolera wentylatora"Fan1"
ZwrotTypOpisPrzykład
FanSpeedintŻądana prędkość, 0–10042
let speed = device.getFanLevel("Fan1"); // np. 42 (oznacza 42%)

Zwraca żądaną prędkość wentylatora jako znormalizowany float (0.0–1.0). Przydatne, gdy urządzenie oczekuje ułamkowego cyklu pracy zamiast procentu.

ParametrTypOpisPrzykład
FanIdstringID kontrolera wentylatora"Fan1"
ZwrotTypOpisPrzykład
FanSpeedfloatŻądana prędkość, 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // np. 0.42

Raportuje aktualnie zmierzone RPM dla kontrolera wentylatora. Ta wartość jest wyświetlana w interfejsie chłodzenia i wykresach monitorowania systemu.

ParametrTypOpisPrzykład
FanIdstringID kontrolera wentylatora"Fan1"
RPMintAktualna prędkość wentylatora w RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

Wtyczki mogą również udostępniać odczyty temperatury systemowi chłodzenia SignalRGB. Te wartości pojawiają się w monitorowaniu systemu i mogą być używane jako źródło wejściowe dla krzywych wentylatorów.

Tworzy czujnik temperatury o podanym ID. Wywołaj to w Initialize() dla każdego źródła temperatury udostępnianego przez urządzenie.

ParametrTypOpisPrzykład
SensorIdstringUnikalny identyfikator dla tego czujnika"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

Usuwa czujnik temperatury o podanym ID.

ParametrTypOpisPrzykład
SensorIdstringID czujnika do usunięcia"Coolant Temp"

Raportuje aktualną temperaturę dla podanego czujnika. Wywołuj to w każdej klatce po odczytaniu wartości z urządzenia.

ParametrTypOpisPrzykład
SensorIdstringID czujnika"Coolant Temp"
TemperaturefloatAktualna temperatura w stopniach Celsjusza34.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");
}