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.