Niedawno kupiłem taki oto UPS jak na zdjęciu wyżej (fot. Media Markt): Green Cell UPS17, w celu zabezpieczenia działania domowego serwera na którym uruchomiony jest Proxmox (Debian 11). Po podłączeniu go przez dołączony kabelek USB trzeba jednak wykonać trochę czynności, aby system go widział poprawnie.
Instalacja NUT
NUT, czyli Network UPS Tools to zestaw pakietów służących do obsługi szerokiego zakresu urządzeń do podtrzymywania zasilania. Zainstalujmy metapakiet nut
, który nam dociągnie wszystko co potrzebne:
apt install nut
Konfiguracja serwera NUT
Tu nie ma za dużo filozofii: musimy edytować plik /etc/nut/nut.conf
, zmieniając linijkę na samym dole:
MODE=standalone
Weryfikacja połączenia z UPS
Ten krok zajął mi najwięcej czasu, ponieważ domyślny sterownik usbhid-ups
nie współpracuje z tym urządzeniem – producent zastosował konwerter portu szeregowego na USB zamiast kontrolera HID. Najpierw, sprawdźmy w jaki sposób widoczny jest nasz zasilacz:
# lsusb
...
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port / Mobile Action MA-8910P
W moim wypadku, ten UPS pokazał się jako urządzenie 067b:2303
czyli PL2303 – konwerter portu szeregowego na USB. Sprawdźmy zatem czy w logu systemowym jest więcej informacji po podłączeniu kabelka:
# dmesg -w
...
[3299287.435928] usb 1-11: new full-speed USB device number 4 using xhci_hcd
[3299287.620919] usb 1-11: New USB device found, idVendor=067b, idProduct=2303, bcdDevice= 3.00
[3299287.622089] usb 1-11: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[3299287.623248] usb 1-11: Product: USB-Serial Controller
[3299287.624411] usb 1-11: Manufacturer: Prolific Technology Inc.
[3299287.660257] pl2303 1-11:1.0: pl2303 converter detected
[3299287.696012] usb 1-11: pl2303 converter now attached to ttyUSB0
Chyba najcenniejsza jest informacja pl2303 converter now attached to ttyUSB0. To nam mówi że od teraz mamy dostępny port szeregowy/dev/ttyUSB0
, pod którym kryje się nasz nabytek.
Konfiguracja reguł udev
Ponieważ NUT pracuje domyślnie na własnym użytkowniku, musimy przyznać mu uprawnienia do korzystania z tego portu. Najprostszym wyjściem jest dodanie tego użytkownika do grupy dialout
, ale ja pokusiłem się o użycie reguł udev. Zatem, tworzymy plik z regułami:
# nano /etc/udev/rules.d/90-nut-ups.rules
Zezwalamy w nim korzystanie z portów /dev/ttyUSB*
dla grupy nut
:
KERNEL=="ttyUSB[0-9]*", MODE="0666", GROUP="nut"
Jeszcze przeładowanie reguł:
# udevadm control --reload
Teraz musimy tylko wyjąć i włożyć wtyczkę USB.
Ustawienie NUT
Nie jest to specjalnie skomplikowana czynność. Należy zedytować plik konfiguracyjny:
# nano /etc/nut/ups.conf
i na dole wkleić blok konfiguracyjny dla naszego UPSa:
[greencellUPS17]
driver = blazer_ser
port = /dev/ttyUSB0
Nazwa w nawiasach kwadratowych jest dowolna, ja wybrałem taką żeby mieć gdzieś zapisane co to za model.
Większość poradników konfiguracji NUT podaje tutaj sterownik blazer_usb
co niestety nie sprawdza się w przypadku Green Cell UPS17 z powodu który opisałem wyżej – używa on układu będącego adapterem portu szeregowego.
Weryfikacja działania
Nie pozostaje nic innego niż uruchomić test:
# upsdrvctl start
Network UPS Tools - UPS driver controller 2.7.4
Network UPS Tools - Megatec/Q1 protocol serial driver 1.57 (2.7.4)
Supported UPS detected with megatec protocol
Vendor information read in 1 tries
No values provided for battery high/low voltages in ups.conf
Using 'guestimation' (low: 20.800000, high: 26.000000)!
Battery runtime will not be calculated (runtimecal not set)
Jak widać, komunikacja została nawiązana! Możemy teraz uruchomić serwer NUT i spróbować zdobyć więcej danych:
# service nut-server start
# upsc greencellUPS17@localhost
Init SSL without certificate database
battery.charge: 100
battery.voltage: 27.36
...
Dalsze kroki
Nie chcę tutaj powielać wielu poradników dot. konfiguracji NUT, bo to zależy od docelowych potrzeb, zatem zakończę tutaj ten wpis. Mam nadzieję że okazał się pomocny przy konfiguracji tego konkretnego modelu UPSa albo innych, mających podobne połączenie.