Pular para o conteúdo

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 é:

  1. Exportar SupportsFanControl() retornando true para informar ao SignalRGB que este dispositivo possui ventiladores controláveis.
  2. Detetar quais ventiladores estão ligados (via comandos específicos do dispositivo ou verificações de RPM).
  3. Chamar device.createFanControl() para cada ventilador detetado 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.

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.


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.


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().

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

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â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 isto se um ventilador deixar de ser detetado ou o dispositivo for desligado.

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

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â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 percentagem.

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 é apresentado na UI de Arrefecimento e nos gráficos de monitorização 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);

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.

Cria um sensor de temperatura com o ID fornecido. Chame isto 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 isto 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 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");
}