Monitorowanie UPS w Cockpit

Ponieważ instalacja wtyczki monitorującej UPS do Cockpit’a przerosła moje, a bardziej AI, możliwości, poprosiłem go o napisanie skryptu monitorującego. Można go uruchomić w konsoli Cockpit’a i jak dla mnie (i na moje potrzeby) działa rewelacyjnie.

#!/bin/bash
# Skrypt monitorujący UPS na żywo z paskami baterii i obciążenia

NAZWA_UPSA="moj-ups" # <-- Wpisz nazwę swojego UPS-a z ups.conf

# Uniwersalna funkcja rysująca pasek
rysuj_pasek() {
    local procent=$1
    [[ -z "$procent" ]] && procent=0
    (( procent > 100 )) && procent=100 # Zabezpieczenie przed przeciążeniem
    
    local szerokosc=20
    local zapelnione=$(( procent * szerokosc / 100 ))
    local puste=$(( szerokosc - zapelnione ))
    
    printf "["
    for ((i=0; i<zapelnione; i++)); do printf "█"; done
    for ((i=0; i<puste; i++)); do printf "░"; done
    printf "] %d%%\n" "$procent"
}

export -f rysuj_pasek
export NAZWA_UPSA

watch -n 1 -c "
    echo -e '=== MONITOROWANIE UPS (Naciśnij CTRL+C aby wyjść) ===\n'
    
    # Pobranie danych z upsc
    DANE=\$(upsc \$NAZWA_UPSA 2>/dev/null)
    
    BAT_PROCENT=\$(echo \"\$DANE\" | grep 'battery.charge:' | awk '{print \$2}')
    WATT_AKTUALNE=\$(echo \"\$DANE\" | grep 'ups.realpower:' | awk '{print \$2}')
    WATT_NOMINAL=\$(echo \"\$DANE\" | grep 'ups.realpower.nominal:' | awk '{print \$2}')
    
    # Wyświetlanie paska baterii
    if [ -n \"\$BAT_PROCENT\" ]; then
        echo -n 'Stan baterii:     '
        rysuj_pasek \$BAT_PROCENT
    else
        echo 'Stan baterii:     [Brak danych]'
    fi
    
    # Wyświetlanie paska obciążenia (Wat)
    if [ -n \"\$WATT_AKTUALNE\" ] && [ -n \"\$WATT_NOMINAL\" ] && [ \"\$WATT_NOMINAL\" -gt 0 ]; then
        OBC_PROCENT=\$(( WATT_AKTUALNE * 100 / WATT_NOMINAL ))
        echo -n \"Obciążenie (W):   \"
        rysuj_pasek \$OBC_PROCENT
        echo \"                  Pobór: \$WATT_AKTUALNE W / Maks: \$WATT_NOMINAL W\"
    else
        echo 'Obciążenie (W):   [Brak danych]'
    fi
    
    echo -e '\n--- Pełne dane upsc ---'
    echo \"\$DANE\"
"

Hej.
Tak się cały czas zastanawiam do czego Ci to potrzebne? “Kontrola podstawą zaufania?” Czy jak? :wink:
Z ciekawości poszperałem co się w temacie zmieniło i co prawda nie ma nic pod cockpit to za to jest nowy widget pod KDE - https://github.com/maku2903/plasma-ups-monitor - może Ci się przyda. [???]
Nawet działa, tyle, że jak go wrzucić w pasek powiadomień to brzydko zostawia sporo miejsca po swojej prawej stronie - może to tylko u mnie (wywaliłem bo nie potrzebuję).
Sam mam UPS podpięty pod OpenWRT jako master do tego NAS, proxmox i desktop jako slave i jakoś nigdy nie czułem potrzeby wiedzieć ile baterii zostało - wszystko działa z automatu.
BTW. Pod GNOME jest walNUT - https://github.com/zykh/walNUT.

Serwer ma swój oddzielny UPS. Chciałbym wiedzieć ile mu energii zostało logując się przez Cockpit w przeglądarce. Wiem, że jak już będzie mało prądu to UPS zamknie serwer, ale w przypadku mojej pracy chciałbym o tym wiedzieć wcześniej. Wiem, że mogę zalogować się przez SSH i wszystko sprawdzić w konsoli, ale mam fanaberię i chciałbym to widzieć w Cockpicie :slight_smile:

Doskonale Cię rozumiem. :rofl:

Kiedyś byłem “control freak” i musiałem wszystko wiedzieć na bieżąco - konfigurowałem dashboard-y z ogromną ilością danych. Teraz… jak się nie pali i działa to nie zaglądam - nie chcę wiedzieć.

Skoro ta informacja jest Ci niezbędna do pracy to czy nie prościej byłoby ustawić NUT by odpowiednio wcześniej wysłał powiadomienie?
O ile dobrze pamiętam to NUT ma 15 różnych stanów i na wszystkie można ustawić reakcję. Dokumentacja do NUT jest naprawdę świetna i można go ustawić pod siebie.
W tym dokumencie (link z oficjalnej strony NUT) znajdziesz przykłady co i jak - https://github.com/networkupstools/ConfigExamples/releases/latest/download/ConfigExamples.pdf

Zobaczę, pokombinuję. Może wysłanie powiadomienia to nie jest taki głupi pomysł.

Tak mi się teraz skojarzyło, że jest jeszcze inny sposób na powiadomienia z UPS-a. Trochę “armata na muchy”, ale przy okazji można też ustawić inne rzeczy…
Możesz zintegrować NUT i ustawić powiadomienia w Home Assistant - https://www.home-assistant.io/integrations/nut/ . Jak nie używasz to możesz przetestować w virtualce. :wink:

Najszybsza metoda na odpalenie to użyć tej samej metody, którą niedawno tu podałem na instalację Leap16, z tą różnicą, że użyć tego obrazu - https://github.com/home-assistant/operating-system/releases/download/18.1/haos_ova-18.1.qcow2.xz (instrukcja i opis tu - https://www.home-assistant.io/installation/linux/#create-and-configure-the-virtual-machine).
Jak nie chcesz KVM to wersja dockerowa działa z Podmanem.