팬 제어
플러그인은 SignalRGB의 냉각 시스템에 팬 속도 제어 및 온도 보고를 노출할 수 있습니다. 활성화되면 사용자는 SignalRGB에서 직접 팬 곡선을 설정하고, RPM을 모니터링하며, 온도 수치를 확인할 수 있습니다.
팬 제어를 지원하는 플러그인의 일반적인 패턴은 다음과 같습니다:
SupportsFanControl()을 내보내어true를 반환하면 SignalRGB에 이 장치에 제어 가능한 팬이 있음을 알립니다.- 장치별 명령 또는 RPM 폴링을 통해 연결된 팬을 감지합니다.
Initialize()에서 감지된 각 팬에 대해device.createFanControl()을 호출합니다.Render()의 각 프레임에서: 장치에서 현재 RPM을 읽어device.setRPM()으로 보고하고,device.getFanLevel()에서 원하는 속도를 읽어 장치에 적용합니다.
팬 레벨 함수를 호출하기 전에 항상 device.fanControlDisabled()를 확인하십시오. 사용자에게 SignalRGB Pro가 없거나 수동으로 비활성화한 경우 팬 제어를 사용할 수 없을 수 있습니다.
플러그인 내보내기
섹션 제목: “플러그인 내보내기”SupportsFanControl()
섹션 제목: “SupportsFanControl()”이 장치가 팬 제어를 지원함을 선언하기 위해 플러그인에서 내보냅니다. SignalRGB는 초기화 중에 이를 호출하여 장치에 냉각 UI를 표시할지 결정합니다.
export function SupportsFanControl() { return true; }이 내보내기가 없거나 false를 반환하면 팬 제어 API에는 여전히 접근할 수 있지만 장치에 냉각 UI가 나타나지 않습니다.
팬 컨트롤러 방법
섹션 제목: “팬 컨트롤러 방법”device.fanControlDisabled()
섹션 제목: “device.fanControlDisabled()”팬 제어를 현재 사용할 수 없으면 true를 반환합니다 — 사용자에게 SignalRGB Pro가 없거나 냉각 시스템을 수동으로 비활성화한 경우.
device.getFanLevel() 또는 device.getNormalizedFanLevel()을 호출하기 전에 항상 이것을 확인하십시오.
| 반환값 | 유형 | 설명 |
|---|---|---|
| Disabled | boolean | 냉각 API를 사용할 수 없으면 true |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
섹션 제목: “device.createFanControl(fanId)”주어진 ID로 팬 컨트롤러를 생성합니다. Initialize()에서 장치가 노출하는 각 팬에 대해 이것을 호출하십시오. 주어진 ID의 컨트롤러가 이미 존재하면 호출이 무시됩니다.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanId | string | 이 팬 컨트롤러의 고유 식별자 | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
섹션 제목: “device.removeFanControl(fanId)”주어진 ID의 팬 컨트롤러를 제거합니다. 팬이 더 이상 감지되지 않거나 장치가 연결 해제되면 사용하십시오.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanId | string | 제거할 팬 컨트롤러의 ID | "Fan1" |
device.getFanLevel(fanId)
섹션 제목: “device.getFanLevel(fanId)”사용자의 현재 팬 곡선 설정에서 파생된 주어진 팬 컨트롤러의 원하는 팬 속도를 백분율(0–100)로 반환합니다.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanId | string | 팬 컨트롤러 ID | "Fan1" |
| 반환값 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanSpeed | int | 원하는 속도, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // e.g. 42 (meaning 42%)device.getNormalizedFanLevel(fanId)
섹션 제목: “device.getNormalizedFanLevel(fanId)”원하는 팬 속도를 정규화된 부동 소수점(0.0–1.0)으로 반환합니다. 장치가 백분율 대신 분수 듀티 사이클을 기대할 때 유용합니다.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanId | string | 팬 컨트롤러 ID | "Fan1" |
| 반환값 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanSpeed | float | 원하는 속도, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // e.g. 0.42device.setRPM(fanId, rpm)
섹션 제목: “device.setRPM(fanId, rpm)”팬 컨트롤러의 현재 측정 RPM을 보고합니다. 이 값은 냉각 UI 및 시스템 모니터링 그래프에 표시됩니다.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| FanId | string | 팬 컨트롤러 ID | "Fan1" |
| RPM | int | 현재 팬 속도(RPM) | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);온도 센서 방법
섹션 제목: “온도 센서 방법”플러그인은 SignalRGB의 냉각 시스템에 온도 수치도 노출할 수 있습니다. 이 값은 시스템 모니터링에 나타나며 팬 곡선의 입력 소스로 사용할 수 있습니다.
device.createTemperatureSensor(sensorId)
섹션 제목: “device.createTemperatureSensor(sensorId)”주어진 ID로 온도 센서를 생성합니다. Initialize()에서 장치가 노출하는 각 온도 소스에 대해 이것을 호출하십시오.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| SensorId | string | 이 센서의 고유 식별자 | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
섹션 제목: “device.removeTemperatureSensor(sensorId)”주어진 ID의 온도 센서를 제거합니다.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| SensorId | string | 제거할 센서의 ID | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
섹션 제목: “device.SetTemperature(sensorId, temperature)”주어진 센서의 현재 온도를 보고합니다. 장치에서 값을 읽은 후 매 프레임마다 이것을 호출하십시오.
| 매개변수 | 유형 | 설명 | 예시 |
|---|---|---|---|
| SensorId | string | 센서 ID | "Coolant Temp" |
| Temperature | float | 현재 온도(섭씨) | 34.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");}