Kupiłeś UPS? Myślisz że masz problem z głowy? A jak skończy się prąd w baterii?
Opis będzie dotyczył UPS marki GreenCell model 600VA (chyba najmniejszy w ofercie), jednak zaskoczył mnie ponad godzinnym działaniem mojego serwera (dell 7010 z i5 3470, pobiera ok 50 W)
Jeśli nie chcesz twardego wyłączenia, odpowiedzią jest NUT, czyli Network UPS Tools
Home Assistant ma add on i integrację do obsługi NUT, sam jest w stanie wyłączyć się jeśli zajdzie taka potrzeba. Ale zacznijmy od podstaw, czyli od Proxmox.
Instalacja i konfiguracja NUT na Proxmox:
Wchodzimy do konsoli, a najlepiej łączymy się przez terminal (polecam Putty), po zalogowaniu na użytkownika root:
Instalujemy NUT:
apt install nut
Teraz sprawdź jakie urządzenia są wyrywane pod USB w systemie, komenda:
lsusb
Podłącz UPS do portu USB, określamy pod jakim adresem jest dostępny:
lsusb
(będzie to nowa pozycja na liście)
U mnie jest to
Bus 001 Device 003: ID 0001:0000 Fry’s Electronics
Notujemy ID, czyli 0001
Teraz będziemy edytować pliki konfiguracyjne (osobiście używam nano, ale każdy inny edytor będzie ok)
nano /etc/nut/ups.conf
Na samym dole pliku wklejamy konfigurację, dla mojego UPS’a będzie to:
maxretry = 3
[ups]
driver = blazer_usb
port = auto
desc = “GreenCell 600VA”
ignorelb
battery.charge < battery.charge.low
override.battery.charge.low = 30
(CTRL+O zapisujesz plik, Enterem zatwierdzasz zapis, CTRL+X wychodzisz z pliku)
Chciałbym krótko omówić co tu się dzieje.
w nawiasach jest [nazwa serwera] - będzie potem potrzebna
driver = sterownik który system ma użyć, na stronie NUT jest ogromna lista
port = auto ułatwia życie
desc = opis dla Ciebie
Miałem problem ze zbyt późnym sygnałem od UPS o wyczerpanej baterii, krótko mówiąc wyłączał się zbyt szybko, zanim system zamknął się poprawnie. Znalazłem rozwiązanie w nadpisaniu systemowej flagi o wyczerpanej baterii.
ignorelb - ta funkcja pozwala ignorować systemową flagę
podajemy warunek
wprowadzamy flagę i od jakiego poziomu % baterii ma być wystawiana informacja o wyczerpanej baterii (=zamknij system)
Teraz wprowadzimy regułę, aby NUT miał dostęp do sterownika:
nano /etc/udev/rules.d/90-nut-ups.rules
w plik wklej:
ACTION==“add”, SUBSYSTEM==“usb”, ATTR{idVendor}==“0001”, ATTR{idProduct}==“0501”, MODE=“0660”, GROUP=“nut”
U siebie zmień ATTR{idVendor}==“xxxx” na ID portu USB
Restartujemy udev:
service udev restart
Najprawdopodobniej będziesz musiał odłączyć i podłączyć UPS ponownie, żeby był w pełni wykryty.
Lecimy z konfiguracją NUT dalej:
nano /etc/nut/nut.conf
wklej na końcu:
MODE=netserver
Teraz ustawimy adresy IP na których ma działać w sieci:
nano /etc/nut/upsd.conf
znajdź w pliku część z LISTEN, lub wklej na końcu:
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
To adresy lokalne, przydał by się jeszcze wpis z adresem Twojej maszyny z Proxmoxm czyli np.
LISTEN 192.168.141.2 3493
Adresy portów nie są potrzebne, to są domyślne adresy, jeśli chcesz możesz je zmienić (jeśli wiesz co robisz, żeby nie używać już zajętych)
Przyszła pora na użytkowników:
nano /etc/nut/upsd.users
W na końcu pliku zapisz:
[upsmonitor]
password = Twoje fajne hasło
upsmon master
Znowu chwila na wyjaśnienie:
w nawiasach [nazwa użytkownika] - będzie później potrzebna
password = nie mów nikomu
upsmon to tryb, może być master lub slave.
Do mastera podłączony jest fizycznie UPS, Slave siedzi i słucha co mówi master (to będzie później HA).
Ostatni plik z komendami do wyłączania systemu:
nano /etc/nut/upsmon.conf
wklej:
MONITOR UPS@localhost 1 upsmonitor PASSWORD master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD “/sbin/shutdown -h now”
Już wyjaśniam:
MONITOR nazwa twojego ups z pliku /etc/nut/ups.conf
@adres serwera, możesz zostawić localhost
cyfra mocy 1 (ile UPS podtrzymuje ten system)
Nazwa użytkownika
Twoje fajne hasło
master - oznacza że ten system zamknie się ostatni, jak wszyscy slave zgłoszą wyłączenie
slave - zamyka się natychmiast
Następnie są tajemnicze magiczne komendy, które najważniejsze, że działają.
Prawie na koniec, uruchamiamy serwis:
systemctl enable nut-server.service
oraz uruchamiamy klienta:
systemctl enable nut-client.service
A na koniec uruchamiamy:
nut-server start
nut-client start
Mała ściągawka z komend, które mogą się przydać:
service nut-server status
możesz sprawdzić czy serwer NUT działa i kto jest do niego zalogowany
można zmienić status na start lub restart
oczywiście:
service nut-client status
pozwala sprawdzić czy klient lokalny działa
Tak powinien wyglądać statu działającego nut-server:
nut-client status:
Możesz też podejrzeć parametry swojego UPSa:
upsc nazwaUPS@adres
Jeśli nie zmieniałeś danych z przykładu, możesz wpisać:
upsc ups@localhost