我怎样才能阻止 apcupsd 管理 PC,而将其留给自定义脚本?

我怎样才能阻止 apcupsd 管理 PC,而将其留给自定义脚本?

我给自己买了一个旧的APC Back-UPS CS650不间断电源,并用大型铅酸电池替换其中的蓄电池,其电压与库存蓄电池一致。我通过 USB 将不间断电源连接到 PC,当我从插座中拔出电源线时,PC 几乎会立即关闭,然后不间断电源关闭。如果我停止 apcupsd 守护进程,则不会发生这种情况,并且不间断电源会一直工作,直到蓄电池停止工作。为了在日志中查看关机的原因,我注释掉了 poweroff 命令控制计算机文件。以下是输出的内容journalct-u apcupsd

Power failure on UPS invilso-systemproductname. Running on batteries. 
Remaining battery runtime below limit on UPS invilso-systemproductname. Doing shutdown. 
UPS invilso-systemproductname initiated Shutdown Sequence
Continuing with shutdown.

这是 apcupsd 配置:

UPSCABLE usb

UPSTYPE usb
DEVICE /dev/usb/hid/hiddev[0-9]
LOCKFILE /run/apcupsd
SCRIPTDIR /etc/apcupsd


PWRFAILDIR /etc/apcupsd

NOLOGINDIR /etc



ONBATTERYDELAY 0


BATTERYLEVEL 0

MINUTES 9999

TIMEOUT 60

ANNOY 300


ANNOYDELAY 60


NOLOGON disable


KILLDELAY 0


NETSERVER on


NISIP 0.0.0.0


NISPORT 3551


EVENTSFILE /var/log/apcupsd.events


EVENTSFILEMAX 10


UPSCLASS standalone


UPSMODE disable


STATTIME 0

STATFILE /var/log/apcupsd.status


LOGSTATS off


DATATIME 0


#FACILITY DAEMON


#UPSNAME UPS_IDEN

# BATTDATE 09/29/23


#SENSITIVITY H


#WAKEUP 60


#SLEEP 180


#LOTRANSFER  208


#HITRANSFER 253


#RETURNCHARGE 15


#BEEPSTATE T


#LOWBATT 2


#OUTPUTVOLTS 230


#SELFTEST 336

apcsuccess status如果你可以完全禁用 apcupsd 自动化,只留下能够根据电压控制脚本,那就太好了,这是实际的输出apcsuccess 状态

APC      : 001,045,1081
DATE     : 2023-10-04 14:52:53 +0300  
HOSTNAME : invilso-systemproductname
VERSION  : 3.14.14 (31 May 2016) unknown
UPSNAME  : invilso-systemproductname
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2023-10-04 14:52:44 +0300  
MODEL    : Back-UPS CS 650 
STATUS   : ONLINE 
LINEV    : 230.0 Volts
LOADPCT  : 34.0 Percent
BCHARGE  : 15.0 Percent
TIMELEFT : 2.9 Minutes
MBATTCHG : 0 Percent
MINTIMEL : 9999 Minutes
MAXTIME  : 99999 Seconds
OUTPUTV  : 230.0 Volts
SENSE    : Medium
DWAKE    : 0 Seconds
DSHUTD   : 0 Seconds
LOTRANS  : 160.0 Volts
HITRANS  : 278.0 Volts
RETPCT   : 0.0 Percent
ITEMP    : 29.2 C
ALARMDEL : 30 Seconds
BATTV    : 13.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI   : None
STATFLAG : 0x05000008
MANDATE  : 2004-06-09
SERIALNO : QB0424134379  
BATTDATE : 2023-09-29
NOMOUTV  : 230 Volts
NOMINV   : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 400 Watts
FIRMWARE : 817.v2.I USB FW:v2
END APC  : 2023-10-04 14:52:55 +0300

如果你能帮助我,我将非常感激。

PS 我将电缆延长到了蓄电池,但是我用的是 16mm2 和 50 厘米长的电缆延长了它们,即使在满负荷下也不会出现很大的电压下降。

答案1

为了解决 PC 和 UPS 快速关机的问题,我不得不将所有配置恢复为默认值,然后 PC 工作了大约 15 分钟。在网上搜索了几个小时后,我发现本文,解释了如何使 apcupsd 无法控制 PC 电源。需要在 apccontrol 文件中注释掉 PC 关闭和 wall 命令的路径。但问题是状态仍然为:正在关闭。为了在主电源恢复供电时将其移除,我设法在 Python 中使用了以下代码:

result = await aioapcaccess.request_status(host='localhost', port=3551)
if float(aioapcaccess.split_unit(result["LINEV"])[0]) > 170 and result['STATUS'] == 'SHUTTING DOWN':
    subprocess.run('sudo systemctl restart apcupsd.service', shell=True, check=True)

相关内容