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...
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"
WAŻNE jest zapamiętanie tego, co wpisaliśmy w nawias kwadratowy, ponieważ tej nazwy będziemy używać w kolejnych krokach.
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.
MODE=standalone
Następnie
sudo upsdrvctl start
Dobrze jest - mamy komunikację.
Być może potrzebne będzie wykonanie:
sudo service nut-server restart
sudo service nut-client 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
192.168.1.200 to adres mojego Raspberry Pi.
Cudownie! Wszystko skonfigurowane, działa!
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
W sekcji Hardware pojawił mi się plugin UPS Monitor. Konfigurujemy go podając nasze parametry (IP, port, oraz nazwę w serwerze NUT, którą skonfigurowaliśmy - u mnie apc350)
I mamy:
Po chwili w zakładce Devices zaczną nam się pojawiać dane z UPSa:
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.
OdpowiedzUsuń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
UsuńSprawdziłem. Pobiera 30 W
UsuńTo już całkiem konkretna wartość. Mój cały NAS z 4 dyskami(składany samemu) bierze niewiele więcej bo jakieś 35W.
Usuń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ść
UsuńJakiej wersji Pythona używasz ? u mnie na 3.5.3 nie widzi plugin'u
OdpowiedzUsuńWersja 2.7.9
Usuńcześć, gdzie i jakiej cenie kupiłeś do tego UPSa baterie ?
OdpowiedzUsuńdzieki za info!
Cześć. W lokalnej hurtowni za 75 PLN
Usuń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
OdpowiedzUsuńA tutaj jestem zdziwiony, wszystko mi uruchamia się z automatu. Postaram się znaleźć potencjalny problem u Ciebie.
Usuń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...
UsuńHej, dziękuję za dokładny opis - u mnie zadziałało od razu. Proszę o następne wpisy :)
OdpowiedzUsuńDziękuję za komentarz. Z przyjemnością, aczkolwiek ostatnio mniej czasu jakby mam...
UsuńMasz może jakiś pomysł dlaczego mam mniejszą liczbę dostępnych opcji?
OdpowiedzUsuń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?
OdpowiedzUsuńCześć. Próbowałeś ręcznie dodać go do /etc/rc.local?
UsuńNie a w jakiej formie go tam dodać?cały plik wygląda tak:
Usuń#!/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 %s\n" "$_IP"
fi
exit 0
Witam..Dzięki wszystko działa. z APC650
OdpowiedzUsuńMam pytanie, czy komunikacja pomiędzy UPS a serwerem NUT musi być przez USB, jest możliwość komunikacji przez sieć?
OdpowiedzUsuńZ tego co wiem to serwer musi być na tym samym sprzęcie do którego jest podłączony kablem UPS.
UsuńWitaj.
OdpowiedzUsuń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.
OdpowiedzUsuń