Como monitorar um Nobreak Ragtech Easy Pro (NEP 1200) no Linux com NUT — usando o driver experimental ragtech
Se você tem um nobreak Ragtech (linha Easy Pro / NEP, também vendida como TORO, INNERGIE e OneUP no Brasil) e tentou integrar com Network UPS Tools (NUT) no Linux, provavelmente já bateu de frente com o mesmo problema que eu: a porta USB do Ragtech fala um protocolo proprietário, sem documentação oficial, que não é reconhecido pelos drivers padrão do NUT (usbhid-ups, blazer_usb, nutdrv_qx).
Depois de bastante investigação, encontrei a solução: o próprio projeto NUT recentemente mesclou um driver experimental dedicado, chamado ragtech, feito especificamente pra essa família de nobreaks. Esse post documenta o caminho completo — do diagnóstico até o monitoramento funcionando.
O ambiente
- Nobreak: Ragtech New Easy Pro NEP 1200 (Modelo 4162), identificado pelo driver como Easy 1200 TI
- Servidor: Ubuntu 24.04 LTS rodando num Beelink S13
- Conexão: USB, aparece como porta serial virtual (CDC-ACM)
Passo 1 — Identifique o dispositivo
lsusb
Procure por uma linha assim:
Bus 001 Device 005: ID 04d8:000a Microchip Technology, Inc. CDC RS-232 Emulation Demo
Esse VID:PID (04d8:000a) é a assinatura dos nobreaks Ragtech dessa linha — eles usam um microcontrolador PIC da Microchip que emula uma porta serial (COM virtual) sobre USB, não um dispositivo HID padrão.
Passo 2 — Descubra que os drivers padrão não funcionam
Se você tentar usbhid-ups, nutdrv_qx ou blazer_ser com esse hardware, o driver até abre a porta, mas todos os comandos padrão do protocolo Megatec/Q1 (Q1, QGS, QS, M) retornam apenas timeout. Isso acontece porque o Ragtech não fala esse protocolo — ele usa um protocolo binário próprio.
Você pode confirmar isso capturando os bytes brutos da porta serial:
sudo apt install screen -y
sudo screen -L -Logfile /tmp/nobreak_capture.log /dev/ttyACM0 9600
Envie qualquer comando e veja no log (xxd /tmp/nobreak_capture.log) que a resposta não corresponde a nenhum protocolo conhecido.
Passo 3 — O driver ragtech do NUT
A comunidade (com destaque pra um tópico no fórum do Home Assistant) fez engenharia reversa do protocolo, e esse trabalho acabou sendo incorporado ao NUT como um driver oficial chamado ragtech. Ele ainda não está em uma versão estável lançada (é parte do desenvolvimento pós-2.8.5), então é preciso compilar da fonte.
Instale as dependências de build
sudo apt install git build-essential libtool autoconf automake libusb-1.0-0-dev pkg-config -y
Clone o repositório
cd nut
Configure (sem SSL, já que só precisamos do driver)
./autogen.sh
./configure --prefix= --sysconfdir=/etc/nut --includedir=/usr/include \
–mandir=/usr/share/man --libdir=/usr/lib/x86_64-linux-gnu \
–libexecdir=/usr/libexec \
–with-statepath=/run/nut --with-altpidpath=/run/nut \
–with-drvpath=/lib/nut --with-pidpath=/run/nut \
–datadir=/usr/share/nut --with-user=nut --with-group=nut \
–with-udev-dir=/lib/udev
Compile só o driver
make -C common
make -C drivers ragtech
Instale o binário no lugar certo
sudo cp drivers/ragtech /lib/nut/ragtech
sudo chown root:root /lib/nut/ragtech
sudo chmod 755 /lib/nut/ragtech
Passo 4 — Configure o NUT
/etc/nut/ups.conf:
[nobreak]
driver = ragtech
port = /dev/ttyACM0
desc = “Ragtech NEP 1200”
/etc/nut/nut.conf:
MODE=netserver
/etc/nut/upsd.users:
[monuser]
password = SUA_SENHA_FORTE
upsmon master
Suba os serviços:
sudo systemctl enable nut-server nut-driver.target
sudo upsdrvctl start
sudo systemctl restart nut-server
Passo 5 — Teste
upsc nobreak@localhost
Resultado esperado — dados reais e coerentes do nobreak:
battery.charge: 100.0
battery.voltage: 13.27
device.mfr: Ragtech
device.model: Easy 1200 TI
driver.name: ragtech
input.voltage: 127.2
output.voltage: 116.0
ups.load: 2.2
ups.status: OL
ups.temperature: 56
Um aviso importante
O driver desabilita comandos de desligamento (shutdown.*) por padrão, com este aviso:
shutdown / test.battery.start.deep instcmds are disabled by default. Set ‘allow_shutdown’ in ups.conf to enable; the firmware will not auto-restart after a shutdown.
Ou seja: o firmware desse nobreak não religa a saída sozinho depois de um comando de desligamento remoto. Antes de ativar allow_shutdown e configurar desligamento automático via upsmon, pense bem se você quer correr esse risco — pode significar precisar ir fisicamente até o nobreak religar na mão depois de uma queda de energia longa.
Créditos
Esse trabalho não seria possível sem a engenharia reversa da comunidade, documentada no tópico Home Assistant: Ragtech Nobreak Easy Pro (UPS) Monitoring e no driver ragtech incorporado ao Network UPS Tools.
Testado em: Ragtech New Easy Pro NEP 1200 (Modelo 4162 / Easy 1200 TI), Ubuntu 24.04 LTS, NUT 2.8.5.588 (build de desenvolvimento).