Lewati ke konten

Fan Control

Plugin dapat mengekspos kontrol kecepatan fan dan pelaporan suhu ke sistem Cooling SignalRGB. Ketika diaktifkan, pengguna dapat menetapkan kurva fan, memantau RPM, dan melihat pembacaan suhu langsung di SignalRGB.

Pola umum untuk plugin yang mendukung kontrol fan adalah:

  1. Ekspor SupportsFanControl() yang mengembalikan true untuk memberi tahu SignalRGB bahwa perangkat ini memiliki fan yang dapat dikontrol.
  2. Deteksi fan mana yang terhubung (melalui perintah khusus perangkat atau polling RPM).
  3. Panggil device.createFanControl() untuk setiap fan yang terdeteksi dalam Initialize().
  4. Setiap frame dalam Render(): baca RPM saat ini dari perangkat dan laporkan dengan device.setRPM(), kemudian baca kecepatan yang diinginkan dari device.getFanLevel() dan terapkan ke perangkat.

Selalu periksa device.fanControlDisabled() sebelum memanggil fungsi level fan apa pun. Kontrol fan mungkin tidak tersedia karena pengguna tidak memiliki SignalRGB Pro, atau karena pengguna telah menonaktifkannya secara manual.


Diekspor dari plugin untuk menyatakan bahwa perangkat ini mendukung kontrol fan. SignalRGB memanggil ini selama inisialisasi untuk memutuskan apakah akan menampilkan UI Cooling untuk perangkat tersebut.

export function SupportsFanControl() { return true; }

Jika ekspor ini tidak ada atau mengembalikan false, API kontrol fan masih dapat diakses tetapi UI Cooling tidak akan muncul untuk perangkat tersebut.


Mengembalikan true jika kontrol fan saat ini tidak tersedia — baik karena pengguna tidak memiliki SignalRGB Pro, atau pengguna telah menonaktifkan sistem Cooling secara manual.

Selalu periksa ini sebelum memanggil device.getFanLevel() atau device.getNormalizedFanLevel().

ReturnTipeDeskripsi
Disabledbooleantrue jika Cooling API tidak tersedia
if (device.fanControlDisabled()) {
return;
}

Membuat pengontrol fan dengan ID yang diberikan. Panggil ini dalam Initialize() untuk setiap fan yang diekspos perangkat. Jika pengontrol dengan ID yang diberikan sudah ada, panggilan tersebut diabaikan.

ParameterTipeDeskripsiContoh
FanIdstringPengidentifikasi unik untuk pengontrol fan ini"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

Menghapus pengontrol fan dengan ID yang diberikan. Gunakan ini jika fan tidak lagi terdeteksi atau perangkat terputus.

ParameterTipeDeskripsiContoh
FanIdstringID pengontrol fan yang akan dihapus"Fan1"

Mengembalikan kecepatan fan yang diinginkan untuk pengontrol fan yang diberikan sebagai persentase (0–100), yang berasal dari pengaturan kurva fan pengguna saat ini.

ParameterTipeDeskripsiContoh
FanIdstringID pengontrol fan"Fan1"
ReturnTipeDeskripsiContoh
FanSpeedintKecepatan yang diinginkan, 0–10042
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)

Mengembalikan kecepatan fan yang diinginkan sebagai float yang dinormalisasi (0.0–1.0). Berguna ketika perangkat mengharapkan duty cycle fraksional daripada persentase.

ParameterTipeDeskripsiContoh
FanIdstringID pengontrol fan"Fan1"
ReturnTipeDeskripsiContoh
FanSpeedfloatKecepatan yang diinginkan, 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42

Melaporkan RPM terukur saat ini untuk pengontrol fan. Nilai ini ditampilkan di UI Cooling dan grafik pemantauan sistem.

ParameterTipeDeskripsiContoh
FanIdstringID pengontrol fan"Fan1"
RPMintKecepatan fan saat ini dalam RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

Plugin juga dapat mengekspos pembacaan suhu ke sistem Cooling SignalRGB. Nilai-nilai ini muncul dalam pemantauan sistem dan dapat digunakan sebagai sumber input untuk kurva fan.

Membuat sensor suhu dengan ID yang diberikan. Panggil ini dalam Initialize() untuk setiap sumber suhu yang diekspos perangkat.

ParameterTipeDeskripsiContoh
SensorIdstringPengidentifikasi unik untuk sensor ini"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

Menghapus sensor suhu dengan ID yang diberikan.

ParameterTipeDeskripsiContoh
SensorIdstringID sensor yang akan dihapus"Coolant Temp"

device.SetTemperature(sensorId, temperature)

Section titled “device.SetTemperature(sensorId, temperature)”

Melaporkan suhu saat ini untuk sensor yang diberikan. Panggil ini setiap frame setelah membaca nilai dari perangkat.

ParameterTipeDeskripsiContoh
SensorIdstringID sensor"Coolant Temp"
TemperaturefloatSuhu saat ini dalam derajat Celsius34.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");
}