Um serviço em Python para Linux projetado para monitorar a temperatura da CPU ou o consumo de energia (via RAPL) e exibir essas informações em tempo real em um display de Air Cooler via USB.
O projeto foi validado e testado com sucesso no seguinte setup:
- Placa-mãe: Asus Sabertooth X79
- Processador: Intel Core i7-3930K (Arquitetura Sandy Bridge-E)
- Hardware de Exibição: Air Cooler Rise Mode Temp 6 Black
- Linux: Ubuntu 22.04.5 LTS
- Monitoramento de Hardware: Coleta dados de temperatura via psutil ou consumo de energia via intel-rapl.
- Conectividade USB: Gerenciamento automático de dispositivos USB, incluindo o desanexamento de drivers do kernel que podem bloquear a comunicação.
- Resiliência: Reconexão automática em caso de desconexão do dispositivo.
- Service-Ready: Projetado para rodar como um serviço em segundo plano (systemd), garantindo um desligamento gracioso (graceful shutdown) ao receber sinais do sistema.
- Baixo impacto: Logging configurado apenas para erros, mantendo o sistema leve e limpo.
- Python 3.x
- Bibliotecas: pyusb, psutil
- Acesso root (necessário para interagir com o dispositivo USB e/ou ler sensores de energia)
-
Clone o repositório:
- cd /opt
- git clone https://github.com/seu-usuario/cooler-display.git
- cd cooler-display
-
Crie e ative um ambiente virtual:
- python3 -m venv .venv
- source .venv/bin/activate
-
Instale as dependências:
- pip install -r requirements.txt
Para que o monitoramento inicie automaticamente com o sistema:
-
Crie o arquivo de serviço:
- sudo nano /etc/systemd/system/cooler-display.service
-
Cole a configuração abaixo (ajuste os caminhos para o seu diretório):
[Unit] Description=Cooler Display Monitor Service After=multi-user.target [Service] ExecStart=/opt/cooler-display/.venv/bin/python -u /opt/cooler-display/main.py WorkingDirectory=/opt/cooler-display Restart=always User=root [Install] WantedBy=multi-user.target
-
Habilite e inicie o serviço:
- sudo systemctl enable cooler-display.service
- sudo systemctl start cooler-display.service
Como o serviço roda em segundo plano, você pode verificar o status e ver os logs (caso ocorra algum erro) com o seguinte comando:
- sudo systemctl status cooler-display.service
- journalctl -u cooler-display.service -f
- Processadores Intel:
- O monitoramento de energia (RAPL) é suportado nativamente na maioria das arquiteturas Intel desde a microarquitetura Sandy Bridge.
- Processadores AMD:
- O driver intel-rapl não é compatível com processadores AMD. Usuários de sistemas AMD podem utilizar o monitoramento de temperatura normalmente, mas devem manter a configuração 'USE_WATTS = False'.
O código utiliza uma abordagem de loop infinito com tratamento de sinais. Ele captura o sinal SIGTERM do sistema operacional e o converte em uma exceção KeyboardInterrupt, permitindo que o programa feche a porta USB corretamente antes de finalizar, evitando o travamento do hardware.