Pojawił się w domu nowy kolega… Trochę już wiekowy, może niezbyt piękny, ale po wymianie baterii działający bardzo dobrze. UPS APC CS 350. Problematyczne było znalezienie kabla transmisyjnego (specjalna, 10 żyłowa 'RJotka’ -> USB), ale i z tym sobie poradziłem, za co bardzo dziękuję kolegom.
Dążymy do tego:
A sam UPS wygląda tak 🙂
Skoro zadziałał grzechem byłoby:
– pozostawienie go samemu sobie,
– odpuszczenie monitorowania
– i oczywiście dodaniu do naszego Smart home 😉
Co prawda w przypadku Raspberry Pi zmieniłem miejsce systemu na HDD, ale poprawienie bezpieczeństwa i stabilności zawsze jest dobrym pomysłem. A do tego – jeżeli braknie prądu to dzieci zawsze będą mogły lekcje odrobić przy lampce, z czego na pewno będą się bardzo cieszyć. Lampka z żarówką 7W wytrzymuje na nim ponad dwie godziny, także czasu będą miały sporo…
Bez zbędnych dyskusji zabieramy się do pracy.
Najpierw odświeżenie repozytorium i instalacja NUT (Network UPS Tools). NUT jest serwisem monitorującym pracę UPS, dbającym o przesyłanie komunikatów do systemu w przypadku przejścia na zasilanie bateryjne, pozwalającym zamknąć system w przypadku spadku poziomu naładowania baterii, itp.
sudo apt-get update && sudo apt-get install nut nut-client nut-server
Po zainstalowaniu wykonujemy komendę
lsusb
i sprawdzamy czy nasz UPS jest widoczny.
Działa, jest widoczny. Świetnie!
Warto na stronie http://www.networkupstools.org/stable-hcl.html sprawdzić czy nasz UPS jest obsługiwany i jaki jest do niego najlepszy sterownik. Szczerym będąc, z APC problemu nie miałem, ale już UPS firmy Eaton nie udało mi się zmusić do podłączenia i zaraportowania statusu. Chociaż sam UPS działał bez problemu.
Ok, jedziemy dalej. Dobrze by było powiedzieć systemowi jaki to jest ten nasz UPS i jakim sterownikiem się do niego dostaniemy.
W przypadku NUT, pliki które zaraz będziemy edytować są bardzo dobrze udokumentowane. Przy każdej opcji mamy kilka przykładów, wyjaśnienia, itp. W Waszym przypadku UPS zapewne będzie inny, może inny model, musicie wybrać odpowiednie sterowniki i podejście. Z tego co widzę w sieci – APC sprawia najmniej problemów.
W tym celu, edytujemy
sudo nano /etc/nut/ups.conf
Na samym końcu pliku dodajemy/edytujemy:
[apc350]
driver = usbhid-ups
port = auto
desc = „APC”
Jak widać – eksperymentowałem z kilkoma różnymi.
Kolejny krok – deklarujemy w konfiguracji nut jaki będzie nasz sposób pracy UPSa. W moim przypadku serwer i klient NUT jest na tym samym Raspberry Pi, dlatego wybrałem opcję Standalone.
sudo nano /etc/nut/nut.conf
MODE=standalone
Następnie
sudo upsdrvctl start
Dobrze jest – mamy komunikację.
Być może potrzebne będzie wykonanie:
sudo service nut-server restart
Przed
sudo service nut-server status
Serwer wystartował, jest w porządku.
Komenda jak poniżej (UWAGA, używamy nazwy, którą zdefiniowaliśmy w konfiguracji!) poda nam parametry i status UPSa.
upsc apc350
So far so good, jak to mówią. Teraz musimy skonfigurować monitor, który w razie braku prądu zamknie komputer, gdy serwer NUT mu rozkaże.
Użytkownicy (tam gdzie XXXXX podajecie swoje hasło. W sumie to i XXXXX możecie zostawić 😉 ):
sudo nano /etc/nut/upsd.users
[admin]
password = XXXXX
actions = SET
instcmds = ALL
[upsmon]
password = XXXXX
upsmon master
I później przechodzimy do wieeeelkiego pliku
sudo nano /etc/nut/upsmon.conf
Ale na szczęście interesują nas w nim wyłącznie dwie sekcje:
MONITOR apc350@localhost 1 upsmon XXXXX master
Zamiast XXXXX oczywiście Wasze hasło
I dla testów możemy włączyć powiadamianie na ekranie. Będziemy widzieć co się dzieje:
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
A tutaj komenda, która wykona się, gdy będzie już trzeba zamknąć system, ponieważ bateria już ledwo zipie:
Później uprawnienia do plików:
sudo chown nut:nut /etc/nut/*
sudo chmod 640 /etc/nut/upsd.users /etc/nut/upsmon.conf
W sumie jesteśmy już gotowi, z ciekawostek, po wpisaniu komendy jak poniżej dostaniecie listę komend Waszego UPS. Jak widać – wyłączenie głośnika, wyciszenie, restart UPSa, testowanie baterii, itp.
sudo upscmd -l apc350
Na przykład wyłączenie pikania po przejściu na baterię (już rodzinę raz obudził gdy zabrakło prądu) to:
upscmd apc350 beeper.mute
Po tym wszystkim restart serwera i klienta. UWAGA – możliwe, że i wcześniej będziecie musieli wykonać sudo reboot, aby UPS był widoczny i serwisy wstały.
sudo service nut-server restart
sudo service nut-client restart
sudo nano /etc/nut/upsd.conf
Aby serwis wiedział gdzie ma nasłuchiwać:
LISTEN 127.0.0.1 3493
LISTEN 192.168.1.200 3493
No to teraz Domoticz, żeby jeszcze było wizualnie pięknie (chociaż zdania są podzielone, ale co tam 😉 )
Z poziomu konsoli i folderu Domoticz wykonujemy co następuje:
cd plugins
mkdir NUT_UPS
sudo apt-get update
sudo apt-get install git
git clone https://github.com/999LV/NUT_UPS.git NUT_UPS
cd NUT_UPS
sudo chmod +x plugin.py
sudo /etc/init.d/domoticz.sh restart
I mamy:
I już później w Domoticz:
Kolejna wykonana praca! Teraz mogę spać jeszcze spokojniej, mniej obawiając się o to, że Raspberry Pi nie wstanie przy kolejnym braku/zaniku/chwilowej przerwie prądu.