Pular para o conteúdo

Controle de Ventiladores

Plugins podem expor o controle de velocidade de ventiladores e relatório de temperatura ao sistema de Resfriamento do SignalRGB. Quando ativado, os usuários podem definir curvas de ventilador, monitorar o RPM e visualizar leituras de temperatura diretamente no SignalRGB.

O padrão geral para um plugin que suporta controle de ventiladores é:

  1. Exportar SupportsFanControl() retornando true para informar ao SignalRGB que este dispositivo possui ventiladores controláveis.
  2. Detectar quais ventiladores estão conectados (via comandos específicos do dispositivo ou verificações de RPM).
  3. Chamar device.createFanControl() para cada ventilador detectado em Initialize().
  4. A cada frame em Render(): ler o RPM atual do dispositivo e reportá-lo com device.setRPM(), depois ler a velocidade desejada de device.getFanLevel() e aplicá-la ao dispositivo.

Sempre verifique device.fanControlDisabled() antes de chamar funções de nível de ventilador. O controle de ventiladores pode estar indisponível porque o usuário não tem SignalRGB Pro, ou porque o desativou manualmente.


Exportado do plugin para declarar que este dispositivo suporta controle de ventiladores. O SignalRGB chama isso durante a inicialização para decidir se deve mostrar a UI de Resfriamento para o dispositivo.

export function SupportsFanControl() { return true; }

Se este export estiver ausente ou retornar false, a API de controle de ventiladores ainda estará acessível, mas a UI de Resfriamento não aparecerá para o dispositivo.


Retorna true se o controle de ventiladores estiver atualmente indisponível — seja porque o usuário não tem SignalRGB Pro, ou porque desativou manualmente o sistema de Resfriamento.

Sempre verifique isso antes de chamar device.getFanLevel() ou device.getNormalizedFanLevel().

RetornoTipoDescrição
Disabledbooleantrue se a API de Resfriamento estiver indisponível
if (device.fanControlDisabled()) {
return;
}

Cria um controlador de ventilador com o ID fornecido. Chame isso em Initialize() para cada ventilador que o dispositivo expõe. Se já existir um controlador com o ID fornecido, a chamada é ignorada.

ParâmetroTipoDescriçãoExemplo
FanIdstringIdentificador único para este controlador de ventilador"Fan1"
device.createFanControl("Fan1");
device.createFanControl("Fan2");

Remove o controlador de ventilador com o ID fornecido. Use isso se um ventilador não for mais detectado ou o dispositivo for desconectado.

ParâmetroTipoDescriçãoExemplo
FanIdstringID do controlador de ventilador a remover"Fan1"

Retorna a velocidade de ventilador desejada para o controlador de ventilador fornecido como porcentagem (0–100), derivada das configurações atuais de curva de ventilador do usuário.

ParâmetroTipoDescriçãoExemplo
FanIdstringID do controlador de ventilador"Fan1"
RetornoTipoDescriçãoExemplo
FanSpeedintVelocidade desejada, 0–10042
let speed = device.getFanLevel("Fan1"); // ex. 42 (ou seja, 42%)

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 porcentagem.

ParâmetroTipoDescriçãoExemplo
FanIdstringID do controlador de ventilador"Fan1"
RetornoTipoDescriçãoExemplo
FanSpeedfloatVelocidade desejada, 0.0–1.00.42
let speed = device.getNormalizedFanLevel("Fan1"); // ex. 0.42

Reporta o RPM atual medido para um controlador de ventilador. Este valor é exibido na UI de Resfriamento e nos gráficos de monitoramento do sistema.

ParâmetroTipoDescriçãoExemplo
FanIdstringID do controlador de ventilador"Fan1"
RPMintVelocidade atual do ventilador em RPM1337
let rpm = ReadRPMFromDevice("Fan1");
device.setRPM("Fan1", rpm);

Plugins também podem expor leituras de temperatura ao sistema de Resfriamento do SignalRGB. Esses valores aparecem no monitoramento do sistema e podem ser usados como fonte de entrada para curvas de ventilador.

Cria um sensor de temperatura com o ID fornecido. Chame isso em Initialize() para cada fonte de temperatura que o dispositivo expõe.

ParâmetroTipoDescriçãoExemplo
SensorIdstringIdentificador único para este sensor"Coolant Temp"
device.createTemperatureSensor("Coolant Temp");

Remove o sensor de temperatura com o ID fornecido.

ParâmetroTipoDescriçãoExemplo
SensorIdstringID do sensor a remover"Coolant Temp"

Reporta a temperatura atual para o sensor fornecido. Chame isso a cada frame após ler o valor do dispositivo.

ParâmetroTipoDescriçãoExemplo
SensorIdstringID do sensor"Coolant Temp"
TemperaturefloatTemperatura atual em graus 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() {
// Reportar o RPM atual — necessário a cada frame ou a velocidade travará
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");
}