DEV Community

Evandro Carvalho
Evandro Carvalho

Posted on Originally published at sentinel.vexisone.com

Telemetria de Energia para Home Labs 24/7: Como Medir Consumo e Evitar Sobrecargas com Tomadas Inteligentes

Manter servidores domésticos, nós de IA e appliances de rede rodando 24 horas por dia traz uma dúvida comum para qualquer engenheiro ou entusiasta de infraestrutura: quanto isso realmente custa na conta de luz ao final do mês?

Além do fator financeiro, servidores sem supervisão em ambientes residenciais exigem controle térmico e proteção contra sobrecarga. Se um cooler travar ou um processo entrar em loop infinito de CPU, o consumo elétrico dispara junto com a temperatura dos componentes.

Neste artigo, veremos como instrumentar um sistema de telemetria elétrica contínua para seu home lab utilizando tomadas inteligentes IoT, automações em Python e regras de desligamento de emergência.


1. Métricas Essenciais de Telemetria Elétrica

Ao monitorar servidores, precisamos observar 4 grandezas físicas:

  1. Potência Ativa (Watts - W): A taxa instantânea de energia consumida pela máquina em determinado segundo;
  2. Tensão da Rede (Volts - V): Monitora a estabilidade da concessionária de energia (quedas de tensão podem forçar a fonte);
  3. Corrente (Amperes - A): Ajuda a dimensionar disjuntores e filtros de linha com precisão;
  4. Energia Acumulada (Quilowatt-hora - kWh): A unidade cobrada na fatura de energia elétrica (1 kWh = 1000W consumidos por 1 hora).

2. A Matemática do Custo Mensal

Para saber o custo exato do seu servidor:

$$\text{Custo Mensal (R\$)} = \frac{\text{Potência Média (W)} \times 24 \times 30}{1000} \times \text{Tarifa do kWh}$$

Exemplo Real (Mini PC rodando Docker em Idle a 14W):

  • Consumo Diário: 14W * 24h = 336 Wh = 0.336 kWh/dia
  • Consumo Mensal: 0.336 kWh * 30 dias = 10.08 kWh/mês
  • Custo com Tarifa Média (R$ 0,90 por kWh): 10.08 * 0.90 = R$ 9,07 por mês!

Ter 8GB a 16GB de RAM dedicada rodando seus próprios containers locais por menos de R$ 10 mensais é incomparavelmente mais barato do que qualquer instância equivalente em nuvem pública (AWS EC2, DigitalOcean ou Linode).


3. Automatizando Alertas de Sobrecarga em Python

Abaixo está um script em Python que consome a telemetria da tomada (via API local ou MQTT) e aciona medidas de proteção caso o consumo ultrapasse o limite de segurança por tempo prolongado:

import time
import requests
import subprocess
import logging

logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
logger = logging.getLogger("PowerTelemetry")

# Limites de segurança do servidor
MAX_SAFE_WATTS = 65.0
SUSTAINED_LIMIT_SECONDS = 300 # 5 minutos

def get_current_power_watts():
    # Consulta endpoint local da tomada inteligente (Tasmota / Tuya Local / Home Assistant)
    try:
        r = requests.get("http://192.168.1.180/cm?cmnd=Status%208", timeout=3.0)
        data = r.json()
        return float(data.get("StatusSNS", {}).get("ENERGY", {}).get("Power", 0.0))
    except Exception as e:
        logger.warning(f"Erro ao consultar sensor de energia: {e}")
        return 0.0

def emergency_cooldown():
    logger.critical("⚠️ Consumo excessivo prolongado! Iniciando mitigação térmica...")
    # Para containers pesados de IA para aliviar a carga da CPU
    subprocess.run(["docker", "stop", "ollama-gpu-server"], check=False)
    # Envia notificação para o administrador (Telegram / Webhook)
    logger.info("Containers pesados congelados com sucesso para resfriamento.")

def monitor_loop():
    over_limit_start = None
    logger.info("Monitor de telemetria elétrica iniciado...")

    while True:
        watts = get_current_power_watts()
        logger.info(f"Consumo atual do Home Lab: {watts:.2f} W")

        if watts > MAX_SAFE_WATTS:
            if over_limit_start is None:
                over_limit_start = time.time()
                logger.warning(f"Consumo ultrapassou {MAX_SAFE_WATTS}W! Monitorando sustentação...")
            elif (time.time() - over_limit_start) >= SUSTAINED_LIMIT_SECONDS:
                emergency_cooldown()
                over_limit_start = None
        else:
            over_limit_start = None

        time.sleep(30)

if __name__ == "__main__":
    monitor_loop()
Enter fullscreen mode Exit fullscreen mode

Conclusão e Recursos

Instrumentar o consumo elétrico traz previsibilidade financeira para seus projetos e protege o hardware físico contra superaquecimento silencioso.

Confira o guia completo sobre proteção elétrica com nobreaks senoidais e dimensionamento de cargas no meu blog:

👉 Artigo Completo no Vexis Sentinel


Você monitora o consumo dos seus servidores caseiros? Qual a potência média em Watts do seu setup em idle?

Top comments (0)