feat(ups): unelte pentru testul de autonomie cu scoaterea din priza
set-praguri.ps1 schimba pragurile de oprire fara sa atinga parola SMTP si reporneste taskul, pentru ca ups-monitor.ps1 citeste configuratia o singura data, la pornirea buclei. trace-baterie.ps1 scrie o citire la fiecare 20 s intr-un CSV local, iar start-trace.ps1 il inregistreaza ca task programat sub SYSTEM. Local si detasat, pentru ca intr-o pana reala reteaua cade odata cu curentul daca switch-ul nu e pe UPS: sesiunea SSH devine oarba si emailurile esueaza, deci CSV-ul de pe server ramane singura sursa de date. Taskul are aceleasi AllowStartIfOnBatteries / DontStopIfGoingOnBatteries ca monitorul - fara ele Windows l-ar opri exact cand incepe ce vrem sa masuram. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRyaDj39hPQ89SZS6URRpS
This commit is contained in:
66
scripts/ups-monitor/set-praguri.ps1
Normal file
66
scripts/ups-monitor/set-praguri.ps1
Normal file
@@ -0,0 +1,66 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Schimba pragurile de oprire din config.json fara sa atinga parola SMTP,
|
||||
si reporneste monitorul ca sa le citeasca.
|
||||
|
||||
.DESCRIPTION
|
||||
Se ruleaza PE SERVER, ridicat (Administrator).
|
||||
|
||||
Configuratia e citita o singura data, la pornirea buclei, deci orice modificare
|
||||
cere repornirea taskului - de asta se ocupa scriptul.
|
||||
|
||||
Fara parametri, doar afiseaza pragurile curente.
|
||||
|
||||
.EXAMPLE
|
||||
# praguri largite pentru un test de autonomie
|
||||
powershell -ExecutionPolicy Bypass -File .\set-praguri.ps1 -Minute 60 -Procent 25
|
||||
|
||||
.EXAMPLE
|
||||
# inapoi la valorile de productie
|
||||
powershell -ExecutionPolicy Bypass -File .\set-praguri.ps1 -Minute 10 -Procent 35
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$InstallDir = 'C:\ROMFAST\ups-monitor',
|
||||
[ValidateRange(1, 1440)][int]$Minute,
|
||||
[ValidateRange(1, 99)][int]$Procent,
|
||||
[switch]$FaraRepornire
|
||||
)
|
||||
|
||||
Set-StrictMode -Version 2.0
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
$path = Join-Path $InstallDir 'config.json'
|
||||
$cfg = Get-Content -LiteralPath $path -Raw -Encoding UTF8 | ConvertFrom-Json
|
||||
|
||||
Write-Host ("Praguri curente : {0} min pe baterie / {1}% incarcare" -f `
|
||||
$cfg.shutdownAfterMinutesOnBattery, $cfg.shutdownAtBatteryPercent)
|
||||
|
||||
if (-not $Minute -and -not $Procent) {
|
||||
Write-Host 'Nimic de schimbat (da -Minute si/sau -Procent).'
|
||||
return
|
||||
}
|
||||
|
||||
if ($Minute) { $cfg.shutdownAfterMinutesOnBattery = $Minute }
|
||||
if ($Procent) { $cfg.shutdownAtBatteryPercent = $Procent }
|
||||
|
||||
$cfg | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath $path -Encoding UTF8
|
||||
Write-Host ("Praguri noi : {0} min pe baterie / {1}% incarcare" -f `
|
||||
$cfg.shutdownAfterMinutesOnBattery, $cfg.shutdownAtBatteryPercent)
|
||||
|
||||
if ($cfg.shutdownAtBatteryPercent -le 20) {
|
||||
Write-Warning 'Pragul e sub cel al Windows-ului (20%): Windows va opri serverul primul, brutal, inaintea opririi curate.'
|
||||
}
|
||||
|
||||
if ($FaraRepornire) {
|
||||
Write-Warning 'Monitorul NU a fost repornit - inca ruleaza cu pragurile vechi.'
|
||||
return
|
||||
}
|
||||
|
||||
Stop-ScheduledTask -TaskName 'ROMFAST UPS Monitor'
|
||||
Start-Sleep -Seconds 3
|
||||
Start-ScheduledTask -TaskName 'ROMFAST UPS Monitor'
|
||||
Start-Sleep -Seconds 18
|
||||
|
||||
$log = Join-Path $InstallDir ('log\ups-monitor-{0}.log' -f (Get-Date -Format 'yyyy-MM'))
|
||||
Get-Content -LiteralPath $log -Tail 2 | ForEach-Object { " $_" }
|
||||
Reference in New Issue
Block a user