piątek, 31 sierpnia 2018

UPSa dostałem... Jakbym miał za dużo czasu i się nudził ;)

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"

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.

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


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

Po brutalnym wyjęciu kabla zasilającego testy wypadły pozytywnie :)


Jeszcze tylko

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.

23 komentarze:

  1. 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ń
    Odpowiedzi
    1. 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ń
    2. Sprawdziłem. Pobiera 30 W

      Usuń
    3. 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ń
    4. 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ń
  2. Jakiej wersji Pythona używasz ? u mnie na 3.5.3 nie widzi plugin'u

    OdpowiedzUsuń
  3. cześć, gdzie i jakiej cenie kupiłeś do tego UPSa baterie ?
    dzieki za info!

    OdpowiedzUsuń
  4. 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ń
    Odpowiedzi
    1. A tutaj jestem zdziwiony, wszystko mi uruchamia się z automatu. Postaram się znaleźć potencjalny problem u Ciebie.

      Usuń
    2. 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ń
  5. Hej, dziękuję za dokładny opis - u mnie zadziałało od razu. Proszę o następne wpisy :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Dziękuję za komentarz. Z przyjemnością, aczkolwiek ostatnio mniej czasu jakby mam...

      Usuń
  6. 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:(

    OdpowiedzUsuń
  7. 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ń
    Odpowiedzi
    1. Cześć. Próbowałeś ręcznie dodać go do /etc/rc.local?

      Usuń
    2. 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 %s\n" "$_IP"
      fi

      exit 0

      Usuń
  8. Witam..Dzięki wszystko działa. z APC650

    OdpowiedzUsuń
  9. Mam pytanie, czy komunikacja pomiędzy UPS a serwerem NUT musi być przez USB, jest możliwość komunikacji przez sieć?

    OdpowiedzUsuń
    Odpowiedzi
    1. Z tego co wiem to serwer musi być na tym samym sprzęcie do którego jest podłączony kablem UPS.

      Usuń
  10. 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.

    OdpowiedzUsuń
  11. 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ń