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.
Hej. Sprawdzałeś pobór energii przez sam UPS? Ja troszkę się naszukałem zasilacza awaryjnego, który nie będzie brał dla siebie zbyt dużo. Nie nie jest to wcale takie oczywiste, gdyż widzę, że producenci raczej niechętnie podają te wartości. Dla porównania- mój poprzedni UPS – Ever ECO 1200 CDS brał dla siebie coś koło 18W, pomimo nowych akumulatorów…. Zmieniłem go na CyberPower CP900EPFCLCD i ten bierze niecałe 4W. W skali roku daje to ponad 80 zł oszczędności na prądzie zakładając pracę 24/7.
W sumie nie sprawdzałem. Dobra sugestia, w wolnej chwili wepnę go we wtyczkę z pomiarem natężenia. Na Owl nie widzę jednak wielkiego wzrostu, także na pewno dramatu nie ma
Jakiej wersji Pythona używasz ? u mnie na 3.5.3 nie widzi plugin'u
Wersja 2.7.9
Sprawdziłem. Pobiera 30 W
To już całkiem konkretna wartość. Mój cały NAS z 4 dyskami(składany samemu) bierze niewiele więcej bo jakieś 35W.
Wiesz co… Głupoty piszę. Zmierzyłem obciążenie UPS, ale z wpiętym Raspberry Pi,RFLink, dyskiem HDD. Odłączę, sprawdzę i podam Ci poprawną wartość
cześć, gdzie i jakiej cenie kupiłeś do tego UPSa baterie ?
dzieki za info!
Cześć. W lokalnej hurtowni za 75 PLN
Witaj, mam identyczny ups. zrobilem krok po kroku identycznie, dziala do momentu restartu malinki, pozniej nut-server nie wstaje,tylko recznie, jak to dodadac do autostartu ? dzieki za pomoc
A tutaj jestem zdziwiony, wszystko mi uruchamia się z automatu. Postaram się znaleźć potencjalny problem u Ciebie.
tez mnie to zaskoczyło. pojawil sie kolejny problem. po dluzszym czasie dzialania wywala mi na logach Error: (APC) Error reading UPS variables: ERR DATA-STALE i mam brak polaczenia w domoticzu, a serwer dziala…
Hej, dziękuję za dokładny opis – u mnie zadziałało od razu. Proszę o następne wpisy 🙂
Dziękuję za komentarz. Z przyjemnością, aczkolwiek ostatnio mniej czasu jakby mam…
Masz może jakiś pomysł dlaczego mam mniejszą liczbę dostępnych opcji?
U mnie jest tylko:
Instant commands supported on UPS [apc350]:
shutdown.reboot – Shut down the load briefly while rebooting the UPS
test.panel.start – Start testing the UPS panel
test.panel.stop – Stop a UPS panel test
Fakt, że firmware mam sporo starszy, ale nie znalazłem w sieci sposobu na update:(
Witam mam problem z uruchomieniem serwera nut , zainstalowałem na raspbianie jessy z ups eaton 5e i wszystko śmiga idealnie . Postanowiłem przejść na ssd i zainstalowałem rasbiana strech i domoticza itd. odpaliłem plik konf. domoticza . I zainstalowałem nut server według Twojego opisu jak poprzednio i wszystko śmiga ale po restarcie server nut już nie wstaje samodzielnie trzeb a dać komendę "sudo service nut-server start" mimo kolejnego przejście instalacji i konfoguracji dalej to samo . Coś przychodzi Ci do głowy?
Cześć. Próbowałeś ręcznie dodać go do /etc/rc.local?
Nie a w jakiej formie go tam dodać?cały plik wygląda tak:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %sn" "$_IP"
fi
exit 0
Witam..Dzięki wszystko działa. z APC650
Mam pytanie, czy komunikacja pomiędzy UPS a serwerem NUT musi być przez USB, jest możliwość komunikacji przez sieć?
Z tego co wiem to serwer musi być na tym samym sprzęcie do którego jest podłączony kablem UPS.
Witaj.
Dzięki za blog dużo mi pomógł w ustawianiu. Oczywiście mam pytanie czy zauważyłeś, że status czy UPS jest ONLINE czy ON BATTERY nie aktualizuje się tak samo często jak reszta informacji o UPSie? Mam właśnie taki problem i zauważyłem na Twoich zdjęciach również to samo. Tak mi to troszkę przeszkadza. Z tym, że ja mam UPS podpięty do QNAPa i LANem pobieram wszystkie informacje do RPI.
Taki UPS to bardzo fajna sprawa, zwłaszcza, że nigdy nie wiadomo, kiedy pojawi się jakaś przerwa w dostawie zasilania. Zasilacz można podłączyć do każdego urządzenia, tak aby nie było narażone na uszkodzenia w przypadku nagłego odcięcia zasilania.