Serwer UPS po Snmp (i inne..) - jak to ogarnąć

Mając dość ciągłego sprawdzania dysków po zaniku zasilania i niekontrolowanym wyłączeniu Qnap’a oraz z ustawianiem czasu na na kotle CO, postanowiłem postawić w domu UPS.
Zastosowałem 1kVA sinus z baterią 65Ah z wbudowaną kartą snmp .
Zasilam z tego kilka urządzeń o łącznym poborze ok 300W. Pierwsze próby wykazały, że po 4h pracy z baterii stan naładowania wynosił ok 80%.
Zależało mi aby prawidłowo wyłączać Qnap’a, więc ustawiłem go początkowo na bezpośrednie połączenie z UPS po snmp.
Wadą takiego połączenia jest, że Qnap wyłącza się po nastawionym czasie, zupełnie nie uwzględniając stanu naładowania baterii.

Przy nastawionym krótkim czasie wyłącza się niepotrzebnie za szybko. Przy ustawiony na max=999min jest ryzyko, że przy niedoładowanych bateriach szybciej wyłączy się sam UPS i nie będzie poprawnego zamknięcia system.
Najlepiej moim zdaniem byłoby aby Qnap zareagował gdy napięcie na baterii spadnie poniżej 11V lub
stan naładowania jest mniejszy niż np.10%. - czyli wyłączył się wtedy kiedy należy.
Postanowiłem więc trochę go oszukać robiąc w NR “serwer” snpm.


UPS.json (21,3 KB)
Działa to m/w tak:
Dla lepszego zrozumienia - IP Qnap 192.168.2.221, 192.168.2.222; NR 192.168.2.219; UPS 192.168.2.245

  1. Qnap przez snpm pyta NR o parametry UPS
  2. NR przekazuje do dalej do UPS
  3. UPS odpowiada do NR
  4. NR na podstawie stanu UPS analizuje warunki zasilania i podmienia ( lub nie) status UPS.

Ponieważ karta UPS obsługuje również modbus w drugi wątku odczytuje parametry do MQTT na potrzeby HA . Daje to możliwość sterowania włączenia zasilanych urządzeń np. w celu stopniowej redukcji obciążenia. Dodatkowo, próbnie wykonuje estymację czasu podtrzymania (w fazie eksperymentu)
SNMP5

SNMP4

Jest możliwość podłączenia również UPS po RS i odczyt w NR, który następnie będzie robił za agenta snmp.
Podsumowując: SNMP jest to następna furtka dla prostej integracji urządzeń nieobsługiwanych natywnie przez HA. Na początek jest z tym trochę zabawy aby to ogarnąć.

Tak z ciekawości, jakiego UPS-a kupiłeś ?

Green Cell RTII 1000VA 900W + aku 2x65Ah

@RobinI30 tak z ciekawości jak udało Ci się ominąć ograniczenie samego NR w stosunku do nasłuchu na porcie poniżej 1024? U mnie wyskakuje komunikat typu “UDP access error, you may need root access for ports below 1024”

Nie ogarniałem, bo nie wiedziałem, że taki problem istnieje… :exploding_head: :blush:
Nie wiem …może dlatego, że u mnie NR nie działa jako addon tylko jako osobny docker?

Hmmm u mnie też jako osobny docker na Synology. Hmmm ciekawostka, co może blokować. Muszę podumać czy to nie sam Synology blokuje w jakiś sposób.

@gregusz … a sieć dla NR masz jako bridge? Synology też ma snmp na porcie 161…

NR na synology mam odpalone jako host. UPS mam podpięty do Synology pod USB i on ma funkcję wywalania na zewnątrz jako serwer tych danych z UPSa. I właśnie do tego chciałem sie podpiać. Czyli w teorii z synology do synology.

Prawdopodobnie w Synology jak i Qnap jest pożliwość powiadamiania innych “komputerów o stanie” UPS podłączonego do USB synologi/synology.

  1. Należałoby zrobić próbę i wysłać powiadomienie na NR i tam zobaczyć “co mówi”.

  2. Drugim sposobem jest odczyt serialem przez NR danych bezpośrednio z UPSa i powiadamianie innych zainteresowanych. Z samym odczytem to jest dość łatwy sposób, bo są bodajże dwa protokoły pytanie>odpowiedź
    Jeden z nich https://www.upspowercom.com/Download/UPS-Protocol.pdf

Z powiadamianiem trzeba byłoby się zastanowić i np. zobaczyć co dzieje się w pkt 1.
W zasadzie dość proste, ale z rękawa w tej chwili nie wyciągne rozwiązania.

  1. Odczyt przez UPS>USB>NR i lekko zmodyfikować to co zrobiłem - w odpowiedziach snmp podrzucać dane odczytane po USB. To wymaga bardziej dogłębnej znajomości snmp aby prawidłowo zbudować ramkę odpowiedzi.
    No i trzeba rozwiązać problem portu 161 dla NR

W moim flow poszedłem trochę na skróty i podmieniam tylko bajty danych, nie zastanawiając się nad kostrukcją całej ramki.

ps… doczytałem - na Synology możliwe jest ustawienie serwera UPSa

… więc jest możliwe zrobienie tego czego oczekujesz.
A tak w ogóle to co Ci docelowo chodzi po głowie z UPS ?

Mam np. żarówki Ikea, które po powrocie zasilania zostają włączone. W momencie gdy odczytam z UPSa zarejestrowany powrót zasilania, to również będę mógł wyłączyć te żarówki. Szczególnie gdy to się zdarzy, gdy nikogo nie ma w mieszkaniu. Niestety mieszkam w bloku z lat '70 (wielka płyta) i instalacje tutaj są wielką niewiadomą. Nawet jak w samym mieszkaniu sobie powymieniałem, to przed licznikiem bywa dziwnie. Do mieszkania idzie tylko jedna faza, a fazy są mieszane między mieszkaniami. Jak coś wywali to co 3 mieszkanie nie ma prądu. Ale ten rozkład nie ma kompletnie sensu, bo ani nie jest to rozkład wg. położenia mieszkań, ani wg. numeracji. Ogólnie dziwnie to tu jest rozwiązane.
Co do ustawienia UPS pod NAS, to mam to zrobione. Wydaje mi się, że ok. Mam tam ustawiony IP, na który chce odczytać z NR i na który właśnie dostaje komunikat o tym, że musiałbym mieć uprawnienia root.
Czy z poziomu samego dockera odczytam dane z USB? Tak by NR to widział?

Sprawę komplikuje, że Twój NR jako host na ten sam adres IP co Synology więc próbujesz odczytać z samego siebie.
Zmień NR na bridge i nadaj mu własny adres IP, a częściowo znikną problemy sieciowe…
Nie mam też pewności czy “serwer” UPS Synol sam wysyła powiadomienia, czy trzeba go stan zapytać.
Nie wiem również czy to się odbywa po UDP czy TCP.
Jak widać wymaga to trochę wstecznej inżynierii i sprzętu do testu.

Tak, można dodać USB do dockera NR …ale niestety do seriala może mieć dostęp tylko jeden proces, więc nie będzie do niego dostępu z poziomy synology UPS.
Więc musiał byś znaleźć sposób jak bezpiecznie zamknąć system zdalnie.
Zobaczę co można w tej sprawie zrobić, gdy coś znajdę to się odezwę.

W/g tej listy spróbował bym nasłuchiwać w NR na UDP na portach 401, 3493, 3551 i 3052.
Może coś synology wyśle coś na jednym z tych portów.
Póki co włóż do gniazdka zwykły smartplug i sprawdzaj czy znika i się pojawia w sieci lub pinguj jakieś inne urządzenie sieciowe, które powinno być zasilane cały czas.

Jest jeszcze taki projekt NUT do obsługi ups, nie zozgryzałem tego bo więcej czasu zajęło by mi jego zrozumienia niż napisanie własnej.
Jeśli któś coś więcej wie to chętnie się dowiem.

Ja mam NUT skonfigurowany. UPS podłączonego do QNAP przez USB
W ustawieniach udostępnianie stanu na IP HA

W integracjach dodajemy NUT w konfiguracji IP QNAP. I z tej integracji biorę dane do NR

image

1 polubienie

I to jest rozwiązanie dla @gregusz :+1:

Dzięki :slight_smile:
działa ok :slight_smile:
Mam pytanie czy działa Ci Qnap Integracja
The QNAP integration was introduced in Home Assistant 0.38, and it’s used by [681]

??

Rozwinę trochę temat.
Pogmerałem w temacie NUT i nie jest to aż takie trudne.
Na podstawie informacji z:
https://networkupstools.org/docs/developer-guide.chunked/ar01s09.html
https://networkupstools.org/docs/user-manual.chunked/apcs02.html
Zrobiłem “symulator” UPS NUT
nut2

flows (18).json (1,9 KB)

Po co to komu… ?! :wink:

  • sposób na sterowanie zasilaniem urządzeń wymagających poprawnego zamknięcia system.
    … np. chcemy na żądanie włączać/wyłączać NAS za pomocą smartplug’a i przed fizycznym odcięciem zasilania powinniśmy zamknąć system.
  • posiadamy przetwornicę i chcielibyśmy z niej zrobić “rasowego UPSa”

Można również odwrócić sytuację - jak w temacie - UPS podłączony do NASa i chcemy odczytać jego stan bezpośrednio w NR (nie via HA) za pomocą

[{"id":"76468f899608208b","type":"inject","z":"61e1b443fceca5f7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":540,"y":1340,"wires":[["b7134c58a8b090b6"]]},{"id":"0acfc8e9cc12d417","type":"tcp request","z":"61e1b443fceca5f7","name":"","server":"<IP NAS>","port":"3493","out":"time","ret":"string","splitc":"0","newline":"","tls":"","x":910,"y":1340,"wires":[["d591f5c2bef9e435"]]},{"id":"b7134c58a8b090b6","type":"function","z":"61e1b443fceca5f7","name":"read List","func":"msg.payload ='LIST VAR qnapupss' +'\\n'; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":700,"y":1340,"wires":[["0acfc8e9cc12d417"]]},{"id":"d591f5c2bef9e435","type":"debug","z":"61e1b443fceca5f7","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1130,"y":1340,"wires":[]}]

nut4

To ostatnie na porcie 3493 zaczęło coś pokazywać. Tylko nie mogę pobrać listy UPSów, bo wywala sie, ale jak nazwę upsa jako ups :wink: to komenda przechodzi. Pewnie sam NAS zastępuje nazwę w opisie. Chyba. Komenda ‘GET VAR ups ups.status’ pokazuje aktualny status (OL).

@gregusz … trzeba nad tym posiedzieć - sposób jest tylko wymaga dopracowania. Nie wiem jak Synology nazywa swojego UPSa. Gdy coś Ci się uda to się pochwal. Nie mam poligonu więc nie jestem w stanie tego dokończyć. Chodziło mi bardziej o sprawdzenie czy się da… poświęciłem na to tylko godzinę.

Spoko. Naprowadziłeś na zupełnie inny port. To już duża zmiana. Teraz będę kombinował, co można z niego wyciągnąć. Muszę poczytać jakie komendy co robią, by sobie przez przypadek nie wyłączyć :slight_smile: .

… “a jednak Ci pomogę” :wink: żebyś za dużo nie musiał kombinować

  1. W pierwszym kroku musisz zapytać synology co oferuje
    LIST UPS - znaczek \n na końcu linii jest ważny.
    W odpowiedzi otrzymasz podstawowe informacje o podłączonym UPS - w tym “Nazwa UPSa”, której będziesz później używał. Możesz to wykonać tylko raz i zapisać to sobie na kartce na później.
  2. Następnie zapytasz jakie parametry oferuje ups wysyłając
    LIST VAR “Nazwa UPSa”+\n
    Zapisać i nie szukać niczego więcej
  3. Teraz możesz już pytać o jaki chcesz paramert z listy np.
    GET VAR “Nazwa UPSa” ups.status + \n

Informację, jak to się robi dobrze wyciągnąłem z integracji NUT HA . Udało mi się oszukać HA i połączył się z fake UPS zasymulowanym w NR.

nut1

Więc jak Tobie nie będzie działać tzn. ,że nie robisz tego właściwie :slight_smile:
… lub ( z uporem maniaka - zmień na bridge) w trybie hosta masz sytuację, że usługa NUT na synology ma adres co NR, czyli “IP Syn”:3493 i nie wiadomo co komu…
np. wysyłasz LIST na 192.168.XXX.XXX:3493 gdzie to dotrze, do USPSyn czy z powrotem do NR ?
… chyba, że się mylę?

Zrobiłem i w odpowiedzi dostałem stringa 1316 znaków, który nie mieści mi się w oknie debug NR :wink: Chyba muszę to w innej formie sobie zapisać, by zobaczyć co się tam kryje.