🔋

CyberPowerのUPSを導入するよ

2024/05/30に公開

おうちで24時間稼働しているサーバを停電、雷から守るため
CP750PFCLCD JPを購入しました。

構成

UPSが停電を検知してバッテリーに切り替え

Proxmoxに常駐しているPowerPanelが、バッテリー残量が一定の基準に低下したことを検知

Raspberry PiにshutdownコマンドをSSHで送り、その後にProxmox自身もシャットダウン

🛠 準備をしよう

Powerpanelのインストール

ProxmoxのホストOSにPowerPanel for Linux 64bit (deb)をダウンロードします。

下記のコマンドでインストールします。

sudo apt install ./CyberPower_PPL_Linux+64bit+(deb)_vバージョン.deb

下記のコマンドでステータスを表示します。

sudo pwrstat -status
The UPS information shows as following:

        Properties:
                Model Name................... CP750PFCLCD JP
                Firmware Number.............. CR02207B5I13
                Rating Voltage............... 100 V
                Rating Power................. 525 Watt(750 VA)

        Current UPS status:
                State........................ Normal
                Power Supply by.............. Utility Power
                Utility Voltage.............. 96 V
                Output Voltage............... 96 V
                Battery Capacity............. 100 %
                Remaining Runtime............ 13 min.
                Load......................... 168 Watt(32 %)
                Line Interaction............. None
                Test Result.................. Unknown
                Last Power Event............. None

config

不要な項目を無効化、
バッテリー残量が一定の基準に低下したらシャットダウンするように編集します。

/etc/pwrstatd.conf
/etc/pwrstatd.conf
#
# pwrstatd configuration file
#

# You must restart pwrstatd after changing this file in order for changes to take effect.
# Ex:/etc/init.d/pwrstatd restart

#
# Action setting for event of Power Failure
#

# A delay time in seconds since event of Power Failure occur then to run shell
# script and shutdown system. Allowed range is 0 ~ 3600. Default is 60 sec.
powerfail-delay = 60

# Enable to run shell script when the event of Power Failure occur.
# The allowed options are yes and no. Default is yes.
- powerfail-active = yes
+ powerfail-active = no

# Assign a path of script file for event of Power Failure.
# The default is /etc/pwrstatd-powerfail.sh
powerfail-cmd-path = /etc/pwrstatd-powerfail.sh

# How much time in seconds to take script running for event of Power Failure.
# The allowed range is 0 ~ 3600. Default is 0 sec.
powerfail-duration = 0

# Allow Daemon to shutdown system for event of Power Failure.
# The allowed options are yes and no. Default is yes.
- powerfail-shutdown = yes
+ powerfail-shutdown = no

#
# Action setting for event of Battery Low
#

# A threshold of Battery Capacity, If the battery capacity is lower than this
# value and a event of Battery Low will be identified. The unit is percentage.
# The allowed range is 0 ~ 90. Default is 35 %.
lowbatt-threshold = 35

# A threshold of Remaining Runtime, If the Remaining Runtime is lower than this
# value and a event of Battery Low will be identified. The unit is second.
# The allowed range is 0 ~ 3600. Default is 300 sec.
# Note: When meet this condition the below 'shutdown-sustain' property
# will be ignored.
runtime-threshold = 300

# Enable to run shell script when the event of Battery Low occur.
# The allowed options are yes and no. Default is yes.
lowbatt-active = yes

# Assign a path of script file for event of Battery Low.
# The default is /etc/pwrstatd-lowbatt.sh
lowbatt-cmd-path = /etc/pwrstatd-lowbatt.sh

# How much time in seconds to take script running for event of Battery Low.
# The allowed range is 0 ~ 60. Default is 0 sec.
lowbatt-duration = 0

# Allow Daemon to shutdown system for event of Battery Low.
# The allowed options are yes and no. Default is yes.
lowbatt-shutdown = yes

# Turn UPS alarm on or off.
# The allowed options are yes and no. Default is yes.
enable-alarm = yes

# The necessary time in seconds for system shutdown.
# The UPS will turn power off when this time is expired.
# The allowed range is 0 ~ 3600. Default is 600 sec.(10 min.)
# If the computer shutdown is cause by low runtime condition, the UPS will
# turn power off when the time is expired that time is assigned on
# 'runtime-threshold' property and it is no longer to refer the
# 'shutdown-sustain' property.

shutdown-sustain = 600

# Daemon will turn UPS power off once it ask system shutdown cause by a power
# event. Allowed options are yes and no. Default is yes.
- turn-ups-off = yes
+ turn-ups-off = no

# The period of polling UPS in seconds.
# The allowed range is 1 ~ 60. Default is 3 sec.
ups-polling-rate = 3

# the period of re-try to find available UPS in seconds since find nothing at
# last time. The allowed range is 1 ~ 300. Default is 10 sec.
ups-retry-rate = 10

# Prohibiting daemon to provide communication mechanism for client, such as
# pwrstat command. normally, it should be 'no'. It can be 'yes' if any security
# consideration. Allowed options are yes and no. Default is no.
prohibit-client-access = no

# The pwrstatd accepts four types of device node which includes the 'ttyS',
# 'ttyUSB', 'hiddev', and 'libusb' for communication with UPS. The pwrstatd
# defaults to enumerate all acceptable device nodes and pick up to use an
# available device node automatically. But this may cause a disturbance to the
# device node which is occupied by other software. Therefore, you can restrict
# this enumerate behave by using allowed-device-nodes option. You can assign
# the single device node path or multiple device node paths divided by a
# semicolon at this option. All groups of 'ttyS', 'ttyUSB', 'hiddev', or
# 'libusb' device node are enumerated without a suffix number assignment.
# Note, the 'libusb' does not support suffix number only.
#
# For example: restrict to use ttyS1, ttyS2 and hiddev1 device nodes at /dev
# path only.
# allowed-device-nodes = /dev/ttyS1;/dev/ttyS2;/dev/hiddev1
#
# For example: restrict to use ttyS and ttyUSB two groups of device node at
# /dev,/dev/usb, and /dev/usb/hid paths(includes ttyS0 to ttySN and ttyUSB0 to
# ttyUSBN, N is number).
# allowed-device-nodes = ttyS;ttyUSB
#
# For example: restrict to use hiddev group of device node at /dev,/dev/usb,
# and /dev/usb/hid paths(includes hiddev0 to hiddevN, N is number).
# allowed-device-nodes = hiddev
#
# For example: restrict to use libusb device.
# allowed-device-nodes = libusb
allowed-device-nodes =

# Daemon will hibernate system to instead of system shutdown when power
# event occur. Allowed options are yes and no. Default is no.
hibernate = no

# Enable cloud solution.
# The allowed options are yes and no. Default is no.
cloud-active = no

# Account for cloud server login.
cloud-account =

shell script

停電を検知すると/etc/shutdown.shを実行してシステムをシャットダウンするようです。
スクリプトの冒頭にラズパイへのコマンドを追記します。

/etc/shutdown.sh
#!/bin/sh

+ ssh user@host 'sudo shutdown -h now'  # ラズパイ

shutdown -h now

これでラズパイをシャットダウンさせてからProxmox自身もシャットダウンすることができます。

GitHubで編集を提案

Discussion