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>
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)
- Deschide browser în VM 201
- Accesează: https://github.com/gawindx/WinNUT-V2/releases
- 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
- Rulează
WinNUT-v2.x.x-Setup.execa Administrator - Acceptă UAC prompt
- Alege directorul de instalare (implicit:
C:\Program Files\WinNUT) - 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
- Click OK pentru a salva
- WinNUT se va reconecta automat la serverul NUT
- Î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:
- Verifică configurația Connection (mai ales Polling Interval)
- Verifică conectivitatea rețea (ping 10.0.20.201)
- 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
- Deconectează fizic UPS-ul de la priză (pe pvemini)
- Observă în WinNUT:
- Checkbox "UPS On Battery" devine ☑
- Icon în system tray devine galben
- Input voltage scade
- Battery charge începe să scadă
- Reconectează UPS-ul
- 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:
-
Polling Interval = 0?
- Schimbă la 15 secunde
- Click OK și așteaptă 10-20 secunde
-
Firewall blochează portul 3493?
# Test port Test-NetConnection -ComputerName 10.0.20.201 -Port 3493 -
Server NUT nu rulează?
- SSH pe pvemini:
systemctl status nut-server ss -tulpn | grep 3493 -
Date de autentificare greșite?
- Verifică username/password din Options
- Compară cu
/etc/nut/upsd.usersde pe pvemini
-
Nume UPS greșit?
- Verifică că UPS Name =
nutdev1 - Listează UPS-uri disponibile:
ssh root@10.0.20.201 "upsc -l" - Verifică că UPS Name =
6.2. WinNUT se conectează dar nu afișează date
-
Restart WinNUT:
- Click dreapta → Exit
- Pornește WinNUT din nou
-
Verifică permisiuni:
- Username
admintrebuie să existe în/etc/nut/upsd.users
- Username
-
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
- Deschide Settings → Personalization → Taskbar
- Click pe "Taskbar corner overflow"
- 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)
- Cross-platform (Windows, Linux, macOS)
- Interfață mai modernă
- Download: https://github.com/networkupstools/nut/wiki/NUT-Monitor
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
- Deschide Task Scheduler
- 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
- Start a program:
- Conditions:
- Start only if network available
- General:
9.2. Via Startup Folder
Win + R→shell:startup- Crează shortcut către
WinNUT.exe
10. Documentație și Suport
- WinNUT GitHub: https://github.com/gawindx/WinNUT-V2
- NUT Documentation: https://networkupstools.org/
- Issues: Raportează probleme pe GitHub Issues
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!