Ventilatorbesturing
Plugins kunnen ventilatorsneelheidsbesturing en temperatuurrapportage beschikbaar stellen aan het koelsysteem van SignalRGB. Wanneer ingeschakeld, kunnen gebruikers ventilatorprofielen instellen, RPM bewaken en temperatuurmetingen rechtstreeks in SignalRGB bekijken.
Het algemene patroon voor een plugin die ventilatorbesturing ondersteunt is:
- Exporteer
SupportsFanControl()dietrueretourneert om SignalRGB te vertellen dat dit apparaat bestuurbare ventilatoren heeft. - Detecteer welke ventilatoren zijn aangesloten (via apparaatspecifieke opdrachten of RPM-polling).
- Roep
device.createFanControl()aan voor elke gedetecteerde ventilator inInitialize(). - Elk frame in
Render(): lees de huidige RPM van het apparaat en rapporteer het metdevice.setRPM(), lees dan de gewenste snelheid vandevice.getFanLevel()en pas deze toe op het apparaat.
Controleer altijd device.fanControlDisabled() voordat u ventilatorsneelheidsfuncties aanroept. Ventilatorbesturing kan niet beschikbaar zijn omdat de gebruiker geen SignalRGB Pro heeft, of omdat de gebruiker het handmatig heeft uitgeschakeld.
Plugin-export
Section titled “Plugin-export”SupportsFanControl()
Section titled “SupportsFanControl()”Wordt geëxporteerd vanuit de plugin om aan te geven dat dit apparaat ventilatorbesturing ondersteunt. SignalRGB roept dit aan tijdens initialisatie om te beslissen of de koeling-UI voor het apparaat wordt weergegeven.
export function SupportsFanControl() { return true; }Als deze export ontbreekt of false retourneert, is de ventilatorbesturing-API nog steeds toegankelijk, maar de koeling-UI verschijnt niet voor het apparaat.
Methoden van de ventilatorcontroller
Section titled “Methoden van de ventilatorcontroller”device.fanControlDisabled()
Section titled “device.fanControlDisabled()”Retourneert true als ventilatorbesturing momenteel niet beschikbaar is — ofwel omdat de gebruiker geen SignalRGB Pro heeft, of de gebruiker het koelsysteem handmatig heeft uitgeschakeld.
Controleer dit altijd voordat u device.getFanLevel() of device.getNormalizedFanLevel() aanroept.
| Retour | Type | Beschrijving |
|---|---|---|
| Disabled | boolean | true als de koeling-API niet beschikbaar is |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Section titled “device.createFanControl(fanId)”Maakt een ventilatorcontroller aan met het opgegeven ID. Roep dit aan in Initialize() voor elke ventilator die het apparaat beschikbaar stelt. Als er al een controller met het opgegeven ID bestaat, wordt de aanroep genegeerd.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanId | string | Unieke identificatie voor deze ventilatorcontroller | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Section titled “device.removeFanControl(fanId)”Verwijdert de ventilatorcontroller met het opgegeven ID. Gebruik dit als een ventilator niet meer wordt gedetecteerd of het apparaat de verbinding verbreekt.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanId | string | ID van de te verwijderen ventilatorcontroller | "Fan1" |
device.getFanLevel(fanId)
Section titled “device.getFanLevel(fanId)”Retourneert de gewenste ventilatorsnelheid voor de opgegeven ventilatorcontroller als een percentage (0–100), afgeleid van de huidige ventilatorkurve-instellingen van de gebruiker.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanId | string | Ventilatorcontroller-ID | "Fan1" |
| Retour | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanSpeed | int | Gewenste snelheid, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // bijv. 42 (betekent 42%)device.getNormalizedFanLevel(fanId)
Section titled “device.getNormalizedFanLevel(fanId)”Retourneert de gewenste ventilatorsnelheid als een genormaliseerde float (0.0–1.0). Handig wanneer het apparaat een fractionele arbeidscyclus verwacht in plaats van een percentage.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanId | string | Ventilatorcontroller-ID | "Fan1" |
| Retour | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanSpeed | float | Gewenste snelheid, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // bijv. 0.42device.setRPM(fanId, rpm)
Section titled “device.setRPM(fanId, rpm)”Rapporteert de huidige gemeten RPM voor een ventilatorcontroller. Deze waarde wordt weergegeven in de koeling-UI en systeembewakingsgrafieken.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| FanId | string | Ventilatorcontroller-ID | "Fan1" |
| RPM | int | Huidige ventilatorsnelheid in RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Methoden van de temperatuursensor
Section titled “Methoden van de temperatuursensor”Plugins kunnen ook temperatuurmetingen beschikbaar stellen aan het koelsysteem van SignalRGB. Deze waarden verschijnen in systeembewaking en kunnen worden gebruikt als invoerbron voor ventilatorkurven.
device.createTemperatureSensor(sensorId)
Section titled “device.createTemperatureSensor(sensorId)”Maakt een temperatuursensor aan met het opgegeven ID. Roep dit aan in Initialize() voor elke temperatuurbron die het apparaat beschikbaar stelt.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| SensorId | string | Unieke identificatie voor deze sensor | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Section titled “device.removeTemperatureSensor(sensorId)”Verwijdert de temperatuursensor met het opgegeven ID.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| SensorId | string | ID van de te verwijderen sensor | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Section titled “device.SetTemperature(sensorId, temperature)”Rapporteert de huidige temperatuur voor de opgegeven sensor. Roep dit elk frame aan na het lezen van de waarde van het apparaat.
| Parameter | Type | Beschrijving | Voorbeeld |
|---|---|---|---|
| SensorId | string | Sensor-ID | "Coolant Temp" |
| Temperature | float | Huidige temperatuur in graden Celsius | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Volledig voorbeeld
Section titled “Volledig voorbeeld”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");}