Lüftersteuerung
Plugins können der Lüfterdrehzahlsteuerung und Temperaturmeldung im Kühlsystem von SignalRGB ausgesetzt werden. Wenn aktiviert, können Benutzer Lüfterkurven einstellen, die Drehzahl überwachen und Temperaturwerte direkt in SignalRGB anzeigen.
Das allgemeine Muster für ein Plugin mit Lüftersteuerung ist:
SupportsFanControl()exportieren undtruezurückgeben, um SignalRGB mitzuteilen, dass dieses Gerät steuerbare Lüfter hat.- Erkennen, welche Lüfter angeschlossen sind (über gerätespezifische Befehle oder RPM-Abfragen).
- In
Initialize()für jeden erkannten Lüfterdevice.createFanControl()aufrufen. - In jedem Frame in
Render(): die aktuelle Drehzahl vom Gerät lesen und mitdevice.setRPM()melden, dann die gewünschte Geschwindigkeit vondevice.getFanLevel()lesen und auf das Gerät anwenden.
Prüfe immer device.fanControlDisabled() bevor du Lüfterpegel-Funktionen aufrufst. Die Lüftersteuerung kann nicht verfügbar sein, weil der Benutzer kein SignalRGB Pro hat oder weil er sie manuell deaktiviert hat.
Plugin-Export
Abschnitt betitelt „Plugin-Export“SupportsFanControl()
Abschnitt betitelt „SupportsFanControl()“Wird vom Plugin exportiert, um anzuzeigen, dass dieses Gerät Lüftersteuerung unterstützt. SignalRGB ruft dies während der Initialisierung auf, um zu entscheiden, ob die Cooling-UI für das Gerät angezeigt werden soll.
export function SupportsFanControl() { return true; }Wenn dieser Export fehlt oder false zurückgibt, ist die Lüftersteuerungs-API zwar zugänglich, aber die Cooling-UI wird für das Gerät nicht erscheinen.
Lüfteregler-Methoden
Abschnitt betitelt „Lüfteregler-Methoden“device.fanControlDisabled()
Abschnitt betitelt „device.fanControlDisabled()“Gibt true zurück, wenn die Lüftersteuerung aktuell nicht verfügbar ist — entweder weil der Benutzer kein SignalRGB Pro hat oder weil er das Kühlsystem manuell deaktiviert hat.
Prüfe dies immer vor dem Aufruf von device.getFanLevel() oder device.getNormalizedFanLevel().
| Rückgabe | Typ | Beschreibung |
|---|---|---|
| Disabled | boolean | true, wenn die Cooling-API nicht verfügbar ist |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Abschnitt betitelt „device.createFanControl(fanId)“Erstellt einen Lüfteregler mit der angegebenen ID. Ruf dies in Initialize() für jeden Lüfter auf, den das Gerät anbietet. Wenn bereits ein Regler mit dieser ID existiert, wird der Aufruf ignoriert.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanId | string | Eindeutige Kennung für diesen Lüfteregler | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Abschnitt betitelt „device.removeFanControl(fanId)“Entfernt den Lüfteregler mit der angegebenen ID. Verwende dies, wenn ein Lüfter nicht mehr erkannt wird oder das Gerät getrennt wird.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanId | string | ID des zu entfernenden Lüfterreglers | "Fan1" |
device.getFanLevel(fanId)
Abschnitt betitelt „device.getFanLevel(fanId)“Gibt die gewünschte Lüftergeschwindigkeit für den angegebenen Lüfteregler als Prozentwert (0–100) zurück, abgeleitet aus den aktuellen Lüfterkurven-Einstellungen des Benutzers.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanId | string | Lüfteregler-ID | "Fan1" |
| Rückgabe | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanSpeed | int | Gewünschte Geschwindigkeit, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // z. B. 42 (bedeutet 42 %)device.getNormalizedFanLevel(fanId)
Abschnitt betitelt „device.getNormalizedFanLevel(fanId)“Gibt die gewünschte Lüftergeschwindigkeit als normalisierten Float (0.0–1.0) zurück. Nützlich, wenn das Gerät einen fraktionalen Tastgrad anstelle eines Prozentwerts erwartet.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanId | string | Lüfteregler-ID | "Fan1" |
| Rückgabe | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanSpeed | float | Gewünschte Geschwindigkeit, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // z. B. 0.42device.setRPM(fanId, rpm)
Abschnitt betitelt „device.setRPM(fanId, rpm)“Meldet die aktuell gemessene Drehzahl für einen Lüfteregler. Dieser Wert wird in der Cooling-UI und den Systemüberwachungsgraphen angezeigt.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| FanId | string | Lüfteregler-ID | "Fan1" |
| RPM | int | Aktuelle Lüftergeschwindigkeit in U/min | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Temperatursensor-Methoden
Abschnitt betitelt „Temperatursensor-Methoden“Plugins können auch Temperaturmessungen an das Kühlsystem von SignalRGB melden. Diese Werte erscheinen in der Systemüberwachung und können als Eingangsquelle für Lüfterkurven verwendet werden.
device.createTemperatureSensor(sensorId)
Abschnitt betitelt „device.createTemperatureSensor(sensorId)“Erstellt einen Temperatursensor mit der angegebenen ID. Ruf dies in Initialize() für jede Temperaturquelle auf, die das Gerät anbietet.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| SensorId | string | Eindeutige Kennung für diesen Sensor | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Abschnitt betitelt „device.removeTemperatureSensor(sensorId)“Entfernt den Temperatursensor mit der angegebenen ID.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| SensorId | string | ID des zu entfernenden Sensors | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Abschnitt betitelt „device.SetTemperature(sensorId, temperature)“Meldet die aktuelle Temperatur für den angegebenen Sensor. Ruf dies in jedem Frame auf, nachdem du den Wert vom Gerät gelesen hast.
| Parameter | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| SensorId | string | Sensor-ID | "Coolant Temp" |
| Temperature | float | Aktuelle Temperatur in Grad Celsius | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Vollständiges Beispiel
Abschnitt betitelt „Vollständiges Beispiel“export function SupportsFanControl() { return true; }
export function Initialize() { device.createFanControl("Fan1"); device.createFanControl("Fan2"); device.createTemperatureSensor("Coolant Temp");}
export function Render() { // Aktuelle Drehzahl melden — jedes Frame erforderlich, sonst friert die Geschwindigkeit ein device.setRPM("Fan1", ReadRPM(1)); device.setRPM("Fan2", ReadRPM(2));
// Aktuelle Temperatur melden device.SetTemperature("Coolant Temp", ReadTemp());
// Gewünschte Geschwindigkeit auf Hardware anwenden 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");}