Controlo de Ventiladores
Os plugins podem expor o controlo de velocidade de ventiladores e relatório de temperatura ao sistema de Arrefecimento do SignalRGB. Quando ativado, os utilizadores podem definir curvas de ventilador, monitorizar o RPM e visualizar leituras de temperatura diretamente no SignalRGB.
O padrão geral para um plugin que suporta controlo de ventiladores é:
- Exportar
SupportsFanControl()retornandotruepara informar ao SignalRGB que este dispositivo possui ventiladores controláveis. - Detetar quais ventiladores estão ligados (via comandos específicos do dispositivo ou verificações de RPM).
- Chamar
device.createFanControl()para cada ventilador detetado emInitialize(). - A cada frame em
Render(): ler o RPM atual do dispositivo e reportá-lo comdevice.setRPM(), depois ler a velocidade desejada dedevice.getFanLevel()e aplicá-la ao dispositivo.
Verifique sempre device.fanControlDisabled() antes de chamar funções de nível de ventilador. O controlo de ventiladores pode estar indisponível porque o utilizador não tem SignalRGB Pro, ou porque o desativou manualmente.
Export do Plugin
Seção intitulada “Export do Plugin”SupportsFanControl()
Seção intitulada “SupportsFanControl()”Exportado do plugin para declarar que este dispositivo suporta controlo de ventiladores. O SignalRGB chama isto durante a inicialização para decidir se deve mostrar a UI de Arrefecimento para o dispositivo.
export function SupportsFanControl() { return true; }Se este export estiver ausente ou retornar false, a API de controlo de ventiladores ainda estará acessível, mas a UI de Arrefecimento não aparecerá para o dispositivo.
Métodos do Controlador de Ventilador
Seção intitulada “Métodos do Controlador de Ventilador”device.fanControlDisabled()
Seção intitulada “device.fanControlDisabled()”Retorna true se o controlo de ventiladores estiver atualmente indisponível — seja porque o utilizador não tem SignalRGB Pro, ou porque desativou manualmente o sistema de Arrefecimento.
Verifique sempre isto antes de chamar device.getFanLevel() ou device.getNormalizedFanLevel().
| Retorno | Tipo | Descrição |
|---|---|---|
| Disabled | boolean | true se a API de Arrefecimento estiver indisponível |
if (device.fanControlDisabled()) { return;}device.createFanControl(fanId)
Seção intitulada “device.createFanControl(fanId)”Cria um controlador de ventilador com o ID fornecido. Chame isto em Initialize() para cada ventilador que o dispositivo expõe. Se já existir um controlador com o ID fornecido, a chamada é ignorada.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanId | string | Identificador único para este controlador de ventilador | "Fan1" |
device.createFanControl("Fan1");device.createFanControl("Fan2");device.removeFanControl(fanId)
Seção intitulada “device.removeFanControl(fanId)”Remove o controlador de ventilador com o ID fornecido. Use isto se um ventilador deixar de ser detetado ou o dispositivo for desligado.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanId | string | ID do controlador de ventilador a remover | "Fan1" |
device.getFanLevel(fanId)
Seção intitulada “device.getFanLevel(fanId)”Retorna a velocidade de ventilador desejada para o controlador de ventilador fornecido como percentagem (0–100), derivada das configurações atuais de curva de ventilador do utilizador.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanId | string | ID do controlador de ventilador | "Fan1" |
| Retorno | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanSpeed | int | Velocidade desejada, 0–100 | 42 |
let speed = device.getFanLevel("Fan1"); // ex. 42 (ou seja, 42%)device.getNormalizedFanLevel(fanId)
Seção intitulada “device.getNormalizedFanLevel(fanId)”Retorna a velocidade de ventilador desejada como um float normalizado (0.0–1.0). Útil quando o dispositivo espera um ciclo de trabalho fracionário em vez de uma percentagem.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanId | string | ID do controlador de ventilador | "Fan1" |
| Retorno | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanSpeed | float | Velocidade desejada, 0.0–1.0 | 0.42 |
let speed = device.getNormalizedFanLevel("Fan1"); // ex. 0.42device.setRPM(fanId, rpm)
Seção intitulada “device.setRPM(fanId, rpm)”Reporta o RPM atual medido para um controlador de ventilador. Este valor é apresentado na UI de Arrefecimento e nos gráficos de monitorização do sistema.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| FanId | string | ID do controlador de ventilador | "Fan1" |
| RPM | int | Velocidade atual do ventilador em RPM | 1337 |
let rpm = ReadRPMFromDevice("Fan1");device.setRPM("Fan1", rpm);Métodos do Sensor de Temperatura
Seção intitulada “Métodos do Sensor de Temperatura”Os plugins também podem expor leituras de temperatura ao sistema de Arrefecimento do SignalRGB. Estes valores aparecem na monitorização do sistema e podem ser usados como fonte de entrada para curvas de ventilador.
device.createTemperatureSensor(sensorId)
Seção intitulada “device.createTemperatureSensor(sensorId)”Cria um sensor de temperatura com o ID fornecido. Chame isto em Initialize() para cada fonte de temperatura que o dispositivo expõe.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| SensorId | string | Identificador único para este sensor | "Coolant Temp" |
device.createTemperatureSensor("Coolant Temp");device.removeTemperatureSensor(sensorId)
Seção intitulada “device.removeTemperatureSensor(sensorId)”Remove o sensor de temperatura com o ID fornecido.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| SensorId | string | ID do sensor a remover | "Coolant Temp" |
device.SetTemperature(sensorId, temperature)
Seção intitulada “device.SetTemperature(sensorId, temperature)”Reporta a temperatura atual para o sensor fornecido. Chame isto a cada frame após ler o valor do dispositivo.
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
| SensorId | string | ID do sensor | "Coolant Temp" |
| Temperature | float | Temperatura atual em graus Celsius | 34.5 |
let temp = ReadTemperatureFromDevice();device.SetTemperature("Coolant Temp", temp);Exemplo Completo
Seção intitulada “Exemplo Completo”export function SupportsFanControl() { return true; }
export function Initialize() { device.createFanControl("Fan1"); device.createFanControl("Fan2"); device.createTemperatureSensor("Coolant Temp");}
export function Render() { // Reportar o RPM atual — necessário a cada frame ou a velocidade ficará bloqueada device.setRPM("Fan1", ReadRPM(1)); device.setRPM("Fan2", ReadRPM(2));
// Reportar a temperatura atual device.SetTemperature("Coolant Temp", ReadTemp());
// Aplicar a velocidade desejada ao 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");}