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:
- Ekspor
SupportsFanControl()yang mengembalikantrueuntuk memberi tahu SignalRGB bahwa perangkat ini memiliki fan yang dapat dikontrol. - Deteksi fan mana yang terhubung (melalui perintah khusus perangkat atau polling RPM).
- Panggil
device.createFanControl()untuk setiap fan yang terdeteksi dalamInitialize(). - Setiap frame dalam
Render(): baca RPM saat ini dari perangkat dan laporkan dengandevice.setRPM(), kemudian baca kecepatan yang diinginkan daridevice.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.
Ekspor Plugin
Section titled “Ekspor Plugin”SupportsFanControl()
Section titled “SupportsFanControl()”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.
Metode Fan Controller
Section titled “Metode Fan Controller”device.fanControlDisabled()
Section titled “device.fanControlDisabled()”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().
| Return | Tipe | Deskripsi |
|---|---|---|
| Disabled | boolean | true jika Cooling API tidak tersedia |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Section titled “device.createFanControl(fanId)”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.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanId | string | Pengidentifikasi unik untuk pengontrol fan ini | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Section titled “device.removeFanControl(fanId)”Menghapus pengontrol fan dengan ID yang diberikan. Gunakan ini jika fan tidak lagi terdeteksi atau perangkat terputus.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanId | string | ID pengontrol fan yang akan dihapus | "Fan1" |
device.getFanLevel(fanId)
Section titled “device.getFanLevel(fanId)”Mengembalikan kecepatan fan yang diinginkan untuk pengontrol fan yang diberikan sebagai persentase (0–100), yang berasal dari pengaturan kurva fan pengguna saat ini.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanId | string | ID pengontrol fan | "Fan1" |
| Return | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanSpeed | int | Kecepatan yang diinginkan, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)device.getNormalizedFanLevel(fanId)
Section titled “device.getNormalizedFanLevel(fanId)”Mengembalikan kecepatan fan yang diinginkan sebagai float yang dinormalisasi (0.0–1.0). Berguna ketika perangkat mengharapkan duty cycle fraksional daripada persentase.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanId | string | ID pengontrol fan | "Fan1" |
| Return | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanSpeed | float | Kecepatan yang diinginkan, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42device.setRPM(fanId, rpm)
Section titled “device.setRPM(fanId, rpm)”Melaporkan RPM terukur saat ini untuk pengontrol fan. Nilai ini ditampilkan di UI Cooling dan grafik pemantauan sistem.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| FanId | string | ID pengontrol fan | "Fan1" |
| RPM | int | Kecepatan fan saat ini dalam RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Metode Sensor Suhu
Section titled “Metode Sensor Suhu”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.
device.createTemperatureSensor(sensorId)
Section titled “device.createTemperatureSensor(sensorId)”Membuat sensor suhu dengan ID yang diberikan. Panggil ini dalam Initialize() untuk setiap sumber suhu yang diekspos perangkat.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| SensorId | string | Pengidentifikasi unik untuk sensor ini | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Section titled “device.removeTemperatureSensor(sensorId)”Menghapus sensor suhu dengan ID yang diberikan.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| SensorId | string | ID 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.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| SensorId | string | ID sensor | "Coolant Temp" |
| Temperature | float | Suhu saat ini dalam derajat Celsius | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Contoh Lengkap
Section titled “Contoh Lengkap”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");}