Vettem egy UPS-t és ráakasztottam a Raspberry Pi-t is
2026. 02. 19.Vettem egy UPS-t a NAS elé, de mivel a Synology tud NUT szerverként is működni, így kliensként ráakasztottam a Raspberry Pi-t is.
Már nagyon rég óta terveztem, hogy a Synology NAS elé veszek egy UPS-t. Ha bár van napi mentésem a fontosabb tartalmakról egy távoli szerverre rsync-kel, azért mégse volna jó kockáztatni, hogy ha egy oda-vissza áramkimaradás miatt mondjuk valamelyik lemez a négyből elpatkoljon.
Szóval kaptam az alkalmon amikor megláttam egy "felbontott" APC Back-UPS BX 750VA modellt az Alza-ról. Mint később megtudtam apukámtól ez AVR-es (Automatic Voltage Regulation), tehát ha több nafta jön be mint kéne (230 V helyett mondjuk 260 V), akkor levesz belőle, ha kevesebb akkor meg kipótolja (230 V helyett mondjuk csak 110 V). Nyilván a gyártó által megadott tűréseken belül ill. a benne lévő akkuk kapacitisánának függvényében.
Nem voltak nagy elvárásaim:
- Ha ilyen pillanatnyi kimaradások vannak akkor azt hidalja át.
- Ha tartósabb áramszünet van, akkor pedig az általam megadott időn belül szépen álljon le a NAS.
Négy dugó van rajta és ami nekem fontos volt még, hogy képes legyen USB kommunikációra, így rá is tudtam dugni a NAS-ra.
Synology
Szóval UPS dobozból ki, összedug és kész. :D De tényleg. Amint bekapcsoltam a NAS-t jelezte is, hogy akkor UPS-ről megy és a megfelelő adminisztratív felületen szépen mutatta is a szükséges adatokat. A NAS-t beállítottam úgy, hogy ha átvált az UPS-re (mert mondjuk kimaradás van), akkor 10 perc elteltével szépen álljon le.
Ekkor tűnt fel, hogy a Synology tud NUT szerverként is üzemelni. A NUT az a Network UPS Tools rövidítése és gyakorlatilag azt jelenti, hogy amikor a NAS érzékeli, hogy átváltott akkumulátoros üzemmódra az UPS, akkor a beállított kliensek számára képes erről jelet adni és így azok is értesülhetnek, hogy áramkimaradás van. Ezt egy sima IP cím alapú whitelist-tel lehet a Synology admin felületén beállítani.
Kaptam az alkalmon, nosza akkor a Raspberry Pi-t is beállítom NUT kliensként, így az is le tud állni, ha 10 perc eltelt.
Raspberry Pi
Amiket találtam a neten leírásokat, azok borzasztóan el vannak bonyolítva, ill. többnyire NUT szerver leírásokat találtam. De! Meglett a szent írás és igazából az alábbiakból áll, hogy kliensként felkonfoljunk egy Rpi-t:
1. Szükséges a megfelelő nut csomagok telepítése:
sudo apt install nut-client
2. Beállítás kliensként
sudo mcedit /etc/nut/upsmon.conf
Az alábbi értéket állítsuk be: MONITOR ups@<Synology IP cím> 1 upsmon "" slave
Ha mindent jól csináltunk és kiadjuk a következő parancsot: upsc ups@<Synology IP cím>, akkor valami hasonló eredményt kell látnunk és ez azt jelenti, hogy az Rpi látja a Synology által közölt adatokat:
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.mfr.date: 2001/01/01
battery.runtime: 3920
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 14.4
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
device.model: Back-UPS BX750MI
device.serial: XXXXXXXXX
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 5
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: DSM7-3-new-86004-251107
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
input.sensitivity: medium
input.transfer.high: 295
input.transfer.low: 145
input.transfer.reason: input voltage out of range
input.voltage: 241.0
input.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 295202G -302202G
ups.load: 10
ups.mfr: American Power Conversion
ups.mfr.date: 2025/03/03
ups.model: Back-UPS BX750MI
ups.productid: 0002
ups.realpower.nominal: 410
ups.serial: XXXXXXXXX
ups.status: OL
ups.test.result: Done and passed
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
3. Leállítási mechanizmus
Nézzük meg, hogy az alábbiak be vannak-e állítva, ill. hozzunk létre egy értesítési mechanizmust (ezt mindjárt kifejtem) szintén a /etc/nut/upsmon.conf fájlban.
SHUTDOWNCMD "/sbin/shutdown -h now"
POWERDOWNFLAG /etc/killpower
NOTIFYCMD /usr/local/sbin/nut-delay-shutdown.sh
NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG ONLINE EXEC
Alapesetben a Synology NAS csak akkor küld értesítést, ha az UPS átlép LB (Low Battery) státuszba. Én nem akartam a véletlenre bízni, így megnéztem, hogy amikor átkapcsol akksis működésre az UPS, akkor milyen státusz látható és amire alapból ugrik a NUT kliens az az LB, de nekem az OB DISCHRG-ra (On Battery DISCHaRGe) volt szükségem. Itt jön képbe a NOTIFYFLAG. Nem érdekel milyen az UPS státusza, amint akksira vált (NOTIFYFLAG ONBATT EXEC), induljon el egy 10 perces várakozás, majd ha letelt és nem jött vissza az áram, akkor álljon le az Rpi is. Ha visszajött, törölje a 10 perces időzítőt és működjön tovább (NOTIFYFLAG ONLINE EXEC).
A két státusz váltás lekezelését pedig a NOTIFYCMD-ben megadott shell script kezeli.
4. Shell script
Létrehoztam a látható helyen egy shell script-et és az alábbi a tartalma:
#!/bin/bash
UPS="ups@<Synology IP címe>"
DELAY=600
PIDFILE="/tmp/nut_shutdown_timer.pid"
case "$NOTIFYTYPE" in
ONBATT)
logger "NUT: UPS on battery — starting 10 minute shutdown timer"
(
sleep $DELAY
STATUS=$(upsc $UPS 2>/dev/null | grep "ups.status")
if echo "$STATUS" | grep -q "OB"; then
logger "NUT: Still on battery after 10 minutes — shutting down"
/sbin/shutdown -h now
else
logger "NUT: Power restored before timeout — aborting shutdown"
fi
) &
echo $! > $PIDFILE
;;
ONLINE)
if [ -f "$PIDFILE" ]; then
logger "NUT: Power restored — cancelling shutdown timer"
kill $(cat $PIDFILE) 2>/dev/null
rm -f $PIDFILE
fi
;;
esac
A fájlra ráakasztottam a +x-et, a nut kliens szolgáltatást újraindítottam:
chmod +x /usr/local/sbin/nut-delay-shutdown.sh
sudo systemctl restart nut-client
És teszteltem.
5. Tesztelés
Nagyon nehéz volt, :) kihúztam az UPS 220-as dugóját a konnektorból és néztem mi történik a rendszer naplókban. Csodák csodájára, az alábbi napló bejegyzések megjelentek, beleértve a konnektorba való visszadugást is.
Feb 19 19:41:47 unicorgi-srv nut[1278665]: NUT: UPS on battery — starting 10 minute shutdown timer
Feb 19 19:41:47 unicorgi-srv nut-monitor[1278662]: Network UPS Tools upsmon 2.8.0
Feb 19 19:41:55 unicorgi-srv npm[797]: [2026-02-19 19:41:55] info: z2m:mqtt: MQTT publish: [...]
Feb 19 19:41:55 unicorgi-srv npm[797]: [2026-02-19 19:41:55] info: z2m:mqtt: MQTT publish: [...]
Feb 19 19:41:57 unicorgi-srv nut[1278882]: NUT: Power restored — cancelling shutdown timer
Feb 19 19:41:57 unicorgi-srv nut-monitor[1278879]: Network UPS Tools upsmon 2.8.0
A NAS-t nem teszteltem külön, mivel az az UPS bekötését követő 2. napon vizsgázott, ugyanis áramszünet volt több alkalommal is itthon, így amikor átlépte a NAS a 10 percet, szépen leállt.
Boldog vagyok. :) Egy kicsit megint jobb lett az itthoni infra.