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 é:
- Exportar
SupportsFanControl()retornandotruepara informar ao SignalRGB que este dispositivo possui ventiladores controláveis. - Detectar quais ventiladores estão conectados (via comandos específicos do dispositivo ou verificações de RPM).
- Chamar
device.createFanControl()para cada ventilador detectado 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.
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.
Export do Plugin
Seção intitulada “Export do Plugin”SupportsFanControl()
Seção intitulada “SupportsFanControl()”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.
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 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().
| Retorno | Tipo | Descrição |
|---|---|---|
| Disabled | boolean | true se a API de Resfriamento 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 isso 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 isso se um ventilador não for mais detectado ou o dispositivo for desconectado.
| 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 porcentagem (0–100), derivada das configurações atuais de curva de ventilador do usuário.
| 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 porcentagem.
| 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 é exibido na UI de Resfriamento e nos gráficos de monitoramento 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”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.
device.createTemperatureSensor(sensorId)
Seção intitulada “device.createTemperatureSensor(sensorId)”Cria um sensor de temperatura com o ID fornecido. Chame isso 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 isso 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 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");}