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:
- Eksportuj
SupportsFanControl()zwracającetrue, aby poinformować SignalRGB, że to urządzenie ma wentylatory z możliwością sterowania. - Wykryj, które wentylatory są podłączone (poprzez polecenia specyficzne dla urządzenia lub odpytywanie RPM).
- Wywołaj
device.createFanControl()dla każdego wykrytego wentylatora wInitialize(). - W każdej klatce w
Render(): odczytaj aktualne RPM z urządzenia i zaraportuj je przezdevice.setRPM(), następnie odczytaj żądaną prędkość zdevice.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ł.
Eksport wtyczki
Dział zatytułowany „Eksport wtyczki”SupportsFanControl()
Dział zatytułowany „SupportsFanControl()”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.
Metody kontrolera wentylatora
Dział zatytułowany „Metody kontrolera wentylatora”device.fanControlDisabled()
Dział zatytułowany „device.fanControlDisabled()”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().
| Zwrot | Typ | Opis |
|---|---|---|
| Disabled | boolean | true jeśli API chłodzenia jest niedostępne |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Dział zatytułowany „device.createFanControl(fanId)”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.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| FanId | string | Unikalny identyfikator dla tego kontrolera wentylatora | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Dział zatytułowany „device.removeFanControl(fanId)”Usuwa kontroler wentylatora o podanym ID. Użyj tego, gdy wentylator nie jest już wykrywany lub urządzenie się rozłącza.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| FanId | string | ID kontrolera wentylatora do usunięcia | "Fan1" |
device.getFanLevel(fanId)
Dział zatytułowany „device.getFanLevel(fanId)”Zwraca żądaną prędkość wentylatora dla podanego kontrolera wentylatora jako procent (0–100), wynikający z bieżących ustawień krzywej wentylatora użytkownika.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| FanId | string | ID kontrolera wentylatora | "Fan1" |
| Zwrot | Typ | Opis | Przykład |
|---|---|---|---|
| FanSpeed | int | Żądana prędkość, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // np. 42 (oznacza 42%)device.getNormalizedFanLevel(fanId)
Dział zatytułowany „device.getNormalizedFanLevel(fanId)”Zwraca żądaną prędkość wentylatora jako znormalizowany float (0.0–1.0). Przydatne, gdy urządzenie oczekuje ułamkowego cyklu pracy zamiast procentu.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| FanId | string | ID kontrolera wentylatora | "Fan1" |
| Zwrot | Typ | Opis | Przykład |
|---|---|---|---|
| FanSpeed | float | Żądana prędkość, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // np. 0.42device.setRPM(fanId, rpm)
Dział zatytułowany „device.setRPM(fanId, rpm)”Raportuje aktualnie zmierzone RPM dla kontrolera wentylatora. Ta wartość jest wyświetlana w interfejsie chłodzenia i wykresach monitorowania systemu.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| FanId | string | ID kontrolera wentylatora | "Fan1" |
| RPM | int | Aktualna prędkość wentylatora w RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Metody czujnika temperatury
Dział zatytułowany „Metody czujnika temperatury”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.
device.createTemperatureSensor(sensorId)
Dział zatytułowany „device.createTemperatureSensor(sensorId)”Tworzy czujnik temperatury o podanym ID. Wywołaj to w Initialize() dla każdego źródła temperatury udostępnianego przez urządzenie.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| SensorId | string | Unikalny identyfikator dla tego czujnika | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Dział zatytułowany „device.removeTemperatureSensor(sensorId)”Usuwa czujnik temperatury o podanym ID.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| SensorId | string | ID czujnika do usunięcia | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Dział zatytułowany „device.SetTemperature(sensorId, temperature)”Raportuje aktualną temperaturę dla podanego czujnika. Wywołuj to w każdej klatce po odczytaniu wartości z urządzenia.
| Parametr | Typ | Opis | Przykład |
|---|---|---|---|
| SensorId | string | ID czujnika | "Coolant Temp" |
| Temperature | float | Aktualna temperatura w stopniach Celsjusza | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Pełny przykład
Dział zatytułowany „Pełny przykład”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");}