Files
ROMFASTSQL/proxmox/ups/docs/INSTALARE-WINNUT.md
Marius 87b9709a0d Add complete UPS monitoring system with monthly battery testing
This commit adds a comprehensive UPS monitoring and management system for
the Proxmox cluster with automated shutdown orchestration and monthly
battery health testing.

Features:
- NUT (Network UPS Tools) configuration for INNO TECH USB UPS
- Automated cluster shutdown on power failure (3-minute grace period)
- Monthly automated battery testing with health evaluation
- Email notifications via PVE::Notify system
- WinNUT monitoring client for Windows VM 201

Components added:
- config/: NUT configuration files (ups.conf, upsd.conf, upsmon.conf, etc.)
- scripts/ups-shutdown-cluster.sh: Orchestrated cluster shutdown
- scripts/ups-monthly-test.sh: Monthly battery test with email reports
- scripts/upssched-cmd: Event handler for UPS state changes
- docs/: Complete installation and usage documentation

Key findings:
- UPS battery.charge reporting has 10-40 second delay after test start
- Test must monitor voltage drop (1.5-2V) and charge drop (9-27%)
- Battery health evaluation: EXCELLENT/GOOD/FAIR/POOR based on discharge rate
- Email notifications use Handlebars templates without Unicode emojis for compatibility

Configuration:
- UPS: INNO TECH (Voltronic protocol, vendor 0665:5161)
- Primary node: pvemini (10.0.20.201) with USB connection
- Monthly test: cron 0 0 1 * * /opt/scripts/ups-monthly-test.sh
- Shutdown timer: 180 seconds on battery before cluster shutdown

Documentation includes complete installation guides for NUT server,
WinNUT client, and troubleshooting procedures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-06 21:39:46 +03:00

10 KiB

Instalare și Configurare WinNUT pe Windows 11 (VM 201)

Despre

WinNUT este un client NUT (Network UPS Tools) pentru Windows care permite monitorizarea vizuală a unui UPS conectat la un server NUT remote (în cazul nostru, pvemini).

IMPORTANT: WinNUT este folosit DOAR pentru monitorizare vizuală. Shutdown-ul automat este gestionat de scripturile de pe Proxmox.

Prerequisite

  • Windows 11 (VM 201 pe pvemini)
  • Server NUT funcțional pe pvemini (10.0.20.201)
  • Conectivitate rețea către serverul NUT (port 3493)

1. Descărcare WinNUT

Opțiunea 1: GitHub Releases (Recomandat)

  1. Deschide browser în VM 201
  2. Accesează: https://github.com/gawindx/WinNUT-V2/releases
  3. Descarcă ultima versiune (ex: WinNUT-v2.x.x-Setup.exe)

Opțiunea 2: Build from source (Opțional)

# Clonează repository
git clone https://github.com/gawindx/WinNUT-V2.git
cd WinNUT-V2

# Urmează instrucțiunile de build din README

2. Instalare WinNUT

2.1. Rulare instalator

  1. Rulează WinNUT-v2.x.x-Setup.exe ca Administrator
  2. Acceptă UAC prompt
  3. Alege directorul de instalare (implicit: C:\Program Files\WinNUT)
  4. Finalizează instalarea

2.2. Verificare instalare

WinNUT ar trebui să pornească automat după instalare. Icon-ul va apărea în system tray.

3. Configurare WinNUT

3.1. Deschidere fereastră Options

  • Click dreapta pe icon-ul WinNUT din system tray
  • Selectează "Options" sau dublu-click pe icon

3.2. Tab Connection

Configurează următoarele:

Câmp Valoare Descriere
NUT host 10.0.20.201 IP-ul serverului NUT (pvemini)
NUT Port 3493 Portul default NUT
UPS Name nutdev1 Numele UPS-ului (din ups.conf)
Polling Interval 15 Interval de polling în secunde (NU pune 0!)
Login admin Username (din upsd.users)
Password parola99 Parola (din upsd.users)
Re-establish connection ☑ Checked Reconectare automată

IMPORTANT:

  • Polling Interval trebuie să fie > 0 (recomandat: 15)
  • Dacă Polling Interval = 0, WinNUT nu se va conecta!

3.3. Tab Calibration

Lasă valorile default sau ajustează după preferințe pentru afișarea gauge-urilor.

3.4. Tab Miscellaneous

Configurări opționale:

  • Start with Windows - Pornire automată
  • Minimize to tray - Minimizare în system tray
  • Sound alerts - Alerte sonore (opțional)

3.5. Tab Shutdown Options

⚠️ IMPORTANT: NU configura shutdown options în WinNUT!

Shutdown-ul este gestionat automat de scripturile de pe Proxmox. WinNUT este doar pentru monitorizare.

Lasă toate opțiunile de shutdown dezactivate:

  • ☐ Shutdown on battery
  • ☐ Shutdown on low battery
  • ☐ Force shutdown

3.6. Salvare configurație

  1. Click OK pentru a salva
  2. WinNUT se va reconecta automat la serverul NUT
  3. În câteva secunde, ar trebui să vezi datele UPS-ului

4. Verificare Funcționare

4.1. Fereastră principală

După conectare cu succes, ar trebui să vezi:

Gauge-uri (indicatoare circulare):

  • Input Voltage (Tensiune intrare): ~230V
  • Output Voltage (Tensiune ieșire): ~230V
  • Frequency (Frecvență): ~50Hz
  • Battery Charge (Încărcare baterie): 0-100%
  • Battery Voltage (Tensiune baterie): ~24V (depinde de UPS)
  • UPS Load (Sarcină UPS): 0-100%

Status checkboxes:

  • UPS On Line - UPS pe curent electric (normal)
  • UPS On Battery - UPS pe baterie (întrerupere curent)
  • UPS Overload - UPS supraîncărcat
  • UPS Battery Low - Baterie scăzută

Informații suplimentare:

  • Manufacturer: (producător UPS)
  • Name: nutdev1
  • Serial: (număr serie)
  • Firmware: (versiune firmware)

4.2. System tray icon

  • Verde: UPS On Line (normal)
  • Galben: UPS On Battery (atenție)
  • Roșu: UPS Battery Low (critic)

4.3. Mesaj reconectare

În partea de jos a ferestrei vezi:

[id 4: 10/6/2025 7:56:48 PM] Try Reconnect 1 / 30

Dacă vezi acest mesaj constant:

  1. Verifică configurația Connection (mai ales Polling Interval)
  2. Verifică conectivitatea rețea (ping 10.0.20.201)
  3. Verifică că serverul NUT rulează pe pvemini

5. Testare

5.1. Test conectivitate din PowerShell

# Test ping
Test-NetConnection -ComputerName 10.0.20.201 -Port 3493

# Ar trebui să vezi:
# TcpTestSucceeded : True

5.2. Test simulare UPS pe baterie

  1. Deconectează fizic UPS-ul de la priză (pe pvemini)
  2. Observă în WinNUT:
    • Checkbox "UPS On Battery" devine ☑
    • Icon în system tray devine galben
    • Input voltage scade
    • Battery charge începe să scadă
  3. Reconectează UPS-ul
  4. Observă că status revine la "UPS On Line"

NU lăsa UPS-ul pe baterie mai mult de 3 minute - se va declanșa shutdown automat!

6. Troubleshooting

6.1. WinNUT nu se conectează

Verificări:

  1. Polling Interval = 0?

    • Schimbă la 15 secunde
    • Click OK și așteaptă 10-20 secunde
  2. Firewall blochează portul 3493?

    # Test port
    Test-NetConnection -ComputerName 10.0.20.201 -Port 3493
    
  3. Server NUT nu rulează?

    • SSH pe pvemini:
    systemctl status nut-server
    ss -tulpn | grep 3493
    
  4. Date de autentificare greșite?

    • Verifică username/password din Options
    • Compară cu /etc/nut/upsd.users de pe pvemini
  5. Nume UPS greșit?

    • Verifică că UPS Name = nutdev1
    • Listează UPS-uri disponibile:
    ssh root@10.0.20.201 "upsc -l"
    

6.2. WinNUT se conectează dar nu afișează date

  1. Restart WinNUT:

    • Click dreapta → Exit
    • Pornește WinNUT din nou
  2. Verifică permisiuni:

    • Username admin trebuie să existe în /etc/nut/upsd.users
  3. Verifică logs pe server:

    ssh root@10.0.20.201 "journalctl -u nut-server -n 50"
    

6.3. Icon-ul lipsește din system tray

  1. Deschide Settings → Personalization → Taskbar
  2. Click pe "Taskbar corner overflow"
  3. Activează WinNUT

6.4. Eroare "Connection refused"

Pe pvemini, verifică:

# Server ascultă pe IP-ul corect?
ss -tulpn | grep 3493

# Firewall permite trafic?
iptables -L INPUT -n | grep 3493

# Restart server
systemctl restart nut-server

7. Configurare Avansată

7.1. Monitorizare multiple UPS-uri

WinNUT poate monitoriza un singur UPS. Pentru multiple UPS-uri:

  • Rulează multiple instanțe WinNUT (necesită build custom)
  • Folosește alte tool-uri (NUT-Monitor, upsc via SSH)

7.2. Export date UPS

WinNUT nu are funcție de export built-in. Pentru logging:

Opțiunea 1: PowerShell script

# Script simplu de logging UPS via SSH
while ($true) {
    $status = ssh root@10.0.20.201 "upsc nutdev1 ups.status battery.charge input.voltage"
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    "$timestamp - $status" | Out-File -Append C:\UPS-Logs\ups-log.txt
    Start-Sleep -Seconds 60
}

Opțiunea 2: Monitoring tools

  • Prometheus + NUT Exporter
  • Grafana + InfluxDB
  • Zabbix

7.3. Notificări personalizate

Pentru notificări Windows când UPS trece pe baterie:

PowerShell monitoring script:

# Rulează continuu, verifică status UPS
$lastStatus = "OL"
while ($true) {
    try {
        $currentStatus = ssh root@10.0.20.201 "upsc nutdev1 ups.status"

        if ($currentStatus -match "OB" -and $lastStatus -eq "OL") {
            # Notificare Windows
            [System.Windows.Forms.MessageBox]::Show(
                "UPS a trecut pe baterie!",
                "ALERT UPS",
                [System.Windows.Forms.MessageBoxButtons]::OK,
                [System.Windows.Forms.MessageBoxIcon]::Warning
            )
        }

        $lastStatus = $currentStatus
    } catch {
        Write-Host "Error: $_"
    }

    Start-Sleep -Seconds 10
}

8. Alternative la WinNUT

Dacă WinNUT nu funcționează satisfăcător:

8.1. NUT-Monitor (Java)

8.2. upsc via SSH

Folosește direct comanda upsc prin SSH:

# PowerShell - Status UPS
ssh root@10.0.20.201 "upsc nutdev1"

# Doar câmpuri specifice
ssh root@10.0.20.201 "upsc nutdev1 ups.status battery.charge input.voltage"

# Monitoring continuu
while ($true) {
    Clear-Host
    ssh root@10.0.20.201 "upsc nutdev1 ups.status battery.charge input.voltage"
    Start-Sleep -Seconds 5
}

8.3. Web UI pe server

Instalează web UI pe pvemini:

# Instalare NUT CGI scripts
apt install -y nut-cgi apache2

# Configurare
# Accesează: http://10.0.20.201/cgi-bin/nut/upsstats.cgi

9. Pornire Automată WinNUT

9.1. Via Task Scheduler

  1. Deschide Task Scheduler
  2. Create Task:
    • General:
      • Name: WinNUT Auto Start
      • Run whether user is logged on or not
    • Triggers:
      • At startup
    • Actions:
      • Start a program: C:\Program Files\WinNUT\WinNUT.exe
    • Conditions:
      • Start only if network available

9.2. Via Startup Folder

  1. Win + Rshell:startup
  2. Crează shortcut către WinNUT.exe

10. Documentație și Suport

Rezumat Configurare Rapidă

NUT host:           10.0.20.201
NUT Port:           3493
UPS Name:           nutdev1
Polling Interval:   15
Login:              admin
Password:           parola99
Re-establish conn:  ✓ Checked

Click OK → Așteaptă 10-20 secunde → Vezi date UPS!