Bỏ qua để đến nội dung

Điều khiển quạt

Các plugin có thể hiển thị điều khiển tốc độ quạt và báo cáo nhiệt độ cho hệ thống làm mát của SignalRGB. Khi được bật, người dùng có thể điều chỉnh đường cong quạt, theo dõi tốc độ và hiển thị giá trị nhiệt độ trực tiếp trong SignalRGB.

Mẫu chung cho plugin có điều khiển quạt là:

  1. Export SupportsFanControl() và trả về true để thông báo cho SignalRGB rằng thiết bị này có quạt có thể điều khiển được.
  2. Phát hiện quạt nào đang được kết nối (thông qua các lệnh dành riêng cho thiết bị hoặc truy vấn tốc độ vòng quay).
  3. Trong Initialize(), gọi device.createFanControl() cho mỗi quạt được phát hiện.
  4. Trong mỗi khung trong Render(): đọc tốc độ hiện tại từ thiết bị và báo cáo nó qua device.setRPM(), sau đó đọc tốc độ mong muốn từ device.getFanLevel() và áp dụng nó cho thiết bị.

Luôn kiểm tra device.fanControlDisabled() trước khi gọi các hàm mức quạt. Điều khiển quạt có thể không khả dụng vì người dùng không có SignalRGB Pro hoặc đã tắt thủ công.


Được export bởi plugin để chỉ ra rằng thiết bị này hỗ trợ điều khiển quạt. SignalRGB gọi hàm này trong quá trình khởi tạo để quyết định có hiển thị giao diện làm mát cho thiết bị hay không.

export function SupportsFanControl() { return true; }

Nếu export này bị thiếu hoặc trả về false, API điều khiển quạt vẫn có sẵn nhưng giao diện làm mát sẽ không xuất hiện cho thiết bị.


Trả về true nếu điều khiển quạt hiện không khả dụng — hoặc vì người dùng không có SignalRGB Pro hoặc vì họ đã tắt thủ công hệ thống làm mát.

Luôn kiểm tra điều này trước khi gọi device.getFanLevel() hoặc device.getNormalizedFanLevel().

Trả vềKiểuMô tả
Disabledbooleantrue nếu API làm mát không khả dụng
if (device.fanControlDisabled()) {
return;
}

Tạo bộ điều khiển quạt với ID được chỉ định. Gọi hàm này trong Initialize() cho mỗi quạt mà thiết bị cung cấp. Nếu bộ điều khiển với ID này đã tồn tại, lời gọi sẽ bị bỏ qua.

Tham sốKiểuMô tảVí dụ
FanIdstringĐịnh danh duy nhất cho bộ điều khiển quạt này"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

Xóa bộ điều khiển quạt với ID được chỉ định. Sử dụng hàm này khi quạt không còn được phát hiện hoặc khi thiết bị ngắt kết nối.

Tham sốKiểuMô tảVí dụ
FanIdstringID của bộ điều khiển quạt cần xóa"Fan1"

Trả về tốc độ quạt mong muốn cho bộ điều khiển được chỉ định dưới dạng giá trị phần trăm (0–100), được suy ra từ cài đặt đường cong quạt hiện tại của người dùng.

Tham sốKiểuMô tảVí dụ
FanIdstringID của bộ điều khiển quạt"Fan1"
Trả vềKiểuMô tảVí dụ
FanSpeedintTốc độ mong muốn, 0–10042
let speed = device.getFanLevel("Fan1"); // ví dụ: 42 (nghĩa là 42%)

Trả về tốc độ quạt mong muốn dưới dạng float chuẩn hóa (0.0–1.0). Hữu ích khi thiết bị yêu cầu chu kỳ làm việc phân số thay vì giá trị phần trăm.

Tham sốKiểuMô tảVí dụ
FanIdstringID của bộ điều khiển quạt"Fan1"
Trả vềKiểuMô tảVí dụ
FanSpeedfloatTốc độ mong muốn, 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // ví dụ: 0.42

Báo cáo tốc độ vòng quay hiện tại được đo cho bộ điều khiển quạt. Giá trị này được hiển thị trong giao diện làm mát và biểu đồ theo dõi hệ thống.

Tham sốKiểuMô tảVí dụ
FanIdstringID của bộ điều khiển quạt"Fan1"
RPMintTốc độ quạt hiện tại tính bằng vòng/phút1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

Các plugin cũng có thể báo cáo các số đo nhiệt độ cho hệ thống làm mát SignalRGB. Các giá trị này xuất hiện trong theo dõi hệ thống và có thể được sử dụng làm nguồn đầu vào cho các đường cong quạt.

Tạo cảm biến nhiệt độ với ID được chỉ định. Gọi hàm này trong Initialize() cho mỗi nguồn nhiệt độ mà thiết bị cung cấp.

Tham sốKiểuMô tảVí dụ
SensorIdstringĐịnh danh duy nhất cho cảm biến này"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

Xóa cảm biến nhiệt độ với ID được chỉ định.

Tham sốKiểuMô tảVí dụ
SensorIdstringID của cảm biến cần xóa"Coolant Temp"

Báo cáo nhiệt độ hiện tại cho cảm biến được chỉ định. Gọi hàm này trong mỗi khung sau khi đọc giá trị từ thiết bị.

Tham sốKiểuMô tảVí dụ
SensorIdstringID của cảm biến"Coolant Temp"
TemperaturefloatNhiệt độ hiện tại tính bằng độ 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() {
// 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");
}