Blæserstyring
Plugins kan eksponeres til blæseromdrejningsstyring og temperaturrapportering i SignalRGBs kølesystem. Når aktiveret, kan brugere indstille blæserkurver, overvåge omdrejningshastigheder og se temperaturværdier direkte i SignalRGB.
Det generelle mønster for et plugin med blæserstyring er:
- Eksportér
SupportsFanControl()og returnértruefor at informere SignalRGB om at denne enhed har styrbare blæsere. - Registrér hvilke blæsere der er tilsluttet (via enhedsspecifikke kommandoer eller RPM-forespørgsler).
- Kald
device.createFanControl()iInitialize()for hver registreret blæser. - I hvert frame i
Render(): læs den aktuelle omdrejningshastighed fra enheden og rapportér meddevice.setRPM(), læs derefter den ønskede hastighed fradevice.getFanLevel()og anvend den på enheden.
Kontrollér altid device.fanControlDisabled() inden du kalder blæserreguleringsfunktioner. Blæserstyring er muligvis ikke tilgængelig, fordi brugeren ikke har SignalRGB Pro, eller fordi han har deaktiveret den manuelt.
Plugin-eksport
Sektion kaldt “Plugin-eksport”SupportsFanControl()
Sektion kaldt “SupportsFanControl()”Eksporteres af pluginet for at indikere at denne enhed understøtter blæserstyring. SignalRGB kalder dette under initialisering for at beslutte om Cooling-UI’en skal vises for enheden.
export function SupportsFanControl() { return true; }Hvis denne eksport mangler eller returnerer false, er blæserstyrings-API’en stadig tilgængelig, men Cooling-UI’en vil ikke vises for enheden.
Blæserregulator-metoder
Sektion kaldt “Blæserregulator-metoder”device.fanControlDisabled()
Sektion kaldt “device.fanControlDisabled()”Returnerer true hvis blæserstyring ikke er tilgængelig — enten fordi brugeren ikke har SignalRGB Pro, eller fordi han har deaktiveret kølesystemet manuelt.
Kontrollér altid dette inden kald af device.getFanLevel() eller device.getNormalizedFanLevel().
| Returnering | Type | Beskrivelse |
|---|---|---|
| Disabled | boolean | true hvis Cooling-API’en ikke er tilgængelig |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Sektion kaldt “device.createFanControl(fanId)”Opretter en blæserregulator med det angivne ID. Kald dette i Initialize() for hver blæser enheden tilbyder. Hvis der allerede eksisterer en regulator med dette ID, ignoreres kaldet.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanId | string | Unik identifikation for denne blæserregulator | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Sektion kaldt “device.removeFanControl(fanId)”Fjerner blæseregulatoren med det angivne ID. Brug dette, når en blæser ikke længere registreres, eller enheden frakobles.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanId | string | ID på den blæserregulator der skal fjernes | "Fan1" |
device.getFanLevel(fanId)
Sektion kaldt “device.getFanLevel(fanId)”Returnerer den ønskede blæserhastighed for den angivne blæserregulator som en procentværdi (0–100), afledt fra brugerens aktuelle blæserkurveindstillinger.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanId | string | Blæserregulator-ID | "Fan1" |
| Returnering | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanSpeed | int | Ønsket hastighed, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // f.eks. 42 (betyder 42 %)device.getNormalizedFanLevel(fanId)
Sektion kaldt “device.getNormalizedFanLevel(fanId)”Returnerer den ønskede blæserhastighed som et normaliseret float (0,0–1,0). Nyttigt når enheden forventer en fraktionel arbejdscyklus i stedet for en procentværdi.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanId | string | Blæserregulator-ID | "Fan1" |
| Returnering | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanSpeed | float | Ønsket hastighed, 0,0–1,0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // f.eks. 0.42device.setRPM(fanId, rpm)
Sektion kaldt “device.setRPM(fanId, rpm)”Rapporterer den aktuelt målte omdrejningshastighed for en blæserregulator. Denne værdi vises i Cooling-UI’en og systemovervågningsgraferne.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| FanId | string | Blæserregulator-ID | "Fan1" |
| RPM | int | Aktuel blæserhastighed i o/min | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Temperatursensor-metoder
Sektion kaldt “Temperatursensor-metoder”Plugins kan også rapportere temperaturmålinger til SignalRGBs kølesystem. Disse værdier vises i systemovervågningen og kan bruges som inputkilde til blæserkurver.
device.createTemperatureSensor(sensorId)
Sektion kaldt “device.createTemperatureSensor(sensorId)”Opretter en temperatursensor med det angivne ID. Kald dette i Initialize() for hver temperaturkilde enheden tilbyder.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| SensorId | string | Unik identifikation for denne sensor | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Sektion kaldt “device.removeTemperatureSensor(sensorId)”Fjerner temperatursensoren med det angivne ID.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| SensorId | string | ID på den sensor der skal fjernes | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Sektion kaldt “device.SetTemperature(sensorId, temperature)”Rapporterer den aktuelle temperatur for den angivne sensor. Kald dette i hvert frame, efter du har læst værdien fra enheden.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| SensorId | string | Sensor-ID | "Coolant Temp" |
| Temperature | float | Aktuel temperatur i grader Celsius | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Komplet eksempel
Sektion kaldt “Komplet eksempel”export function SupportsFanControl() { return true; }
export function Initialize() { device.createFanControl("Fan1"); device.createFanControl("Fan2"); device.createTemperatureSensor("Coolant Temp");}
export function Render() { // Rapportér aktuel omdrejningshastighed — kræves hvert frame, ellers fryser hastigheden device.setRPM("Fan1", ReadRPM(1)); device.setRPM("Fan2", ReadRPM(2));
// Rapportér aktuel temperatur device.SetTemperature("Coolant Temp", ReadTemp());
// Anvend ønsket hastighed på 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");}