Como monitorar um Nobreak Ragtech Easy Pro (NEP 1200) no Linux com NUT

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

git clone GitHub - networkupstools/nut: The Network UPS Tools repository. UPS management protocol Informational RFC 9271 published by IETF at https://www.rfc-editor.org/info/rfc9271 Please star NUT on GitHub, this helps with sponsorships! · GitHub

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