Apcupsd

来自 Alpine Linux

使用 apcupsd 监控 USB 连接的 APC UPS

本 Wiki 页面展示了如何安装和配置 apcupsd 软件包,以监控和报告 APC 品牌 USB 连接的不间断电源 (UPS) 的统计信息。示例中使用的 UPS 型号是 APC SmartUPS 1000,但任何 APC 或兼容型号都应该有效。

最终目标是使 UPS 状态在网络上可用,以便可以对其进行监控,并用于触发家庭自动化系统(如 Home Assistant)中的操作。

安装和配置 apcupsd

第一步是添加 apcupsd 的 alpine 软件包。之后,我们将重命名默认配置文件,并将其替换为我们的示例 USB 连接的 APC Smart-UPS 所需的参数。

安装通过 APK 软件包进行

# apk add apcupsd

有一个名为 /etc/apcupsd/apcupsd.conf 的主配置文件,其中包含所有可调整的参数以及许多注释。我们将保留原始文件作为参考,然后编辑参数以适合。

# mv /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf~ # grep -v '^\s*$\|^\s*\#' /etc/apcupsd/apcupsd.conf~ >/etc/apcupsd/apcupsd.conf

现在,使用原始文件的备份副本作为注释的参考,编辑 /etc/apcupsd/apcupsd.conf 中的参数。下面列出了一些重要的参数,按出现顺序排列。

  • UPSNAME - 这是用于标识您的 UPS。确切格式并不重要,但请保持简短且不要使用空格。
  • UPSCABLE - 对于 USB 连接的 UPS,请使用值 usb
  • USBTYPE - 类似于 USBCABLE,使用 usb
  • DEVICE - 对于 USB 连接的 UPS,不需要此参数。通过在开头使用 # 注释掉此行。

这四个更改足以开始。其他所有内容都可以保留为默认值。阅读原始 apcupsd.conf~ 文件中的注释,以了解其他参数的作用以及是否要使用它们。

注意:配置文件中的注释说 UPSNAME 应少于八个字符。这似乎是将参数用于将名称存储在 UPS 的 EPROM 中的限制。如果您不打算更新 EPROM,则较长的名称似乎不会引起问题。有关更多详细信息,请参阅在更新 UPS EPROM 中使用的配置语句之后的配置部分。

启动 apcupsd

apcupsd 软件包安装了一个服务,允许您使用标准工具控制 apcupsd。以下示例展示了如何启动它并确保每次系统启动时都启动。

 alpine:/# rc-service apcupsd start
 * Starting APC UPS daemon ...

 alpine:/# rc-update add apcupsd
 * service apcupsd added to runlevel default

检查配置

apcaccess 命令将通过 apcupsd 守护程序的网络端口与 UPS 通信,并报告它找到的内容。这是测试您的连接和配置的好方法。

成功的测试将类似于下面显示的内容。

 alpine:/# apcaccess
 APC      : 001,043,1022
 DATE     : 2024-10-12 15:31:10 +0000
 HOSTNAME : alpine.home
 VERSION  : 3.14.14 (31 May 2016) unknown
 UPSNAME  : SmartUPS_1000
 CABLE    : USB Cable
 DRIVER   : USB UPS Driver
 UPSMODE  : Stand Alone
...

实际报告的参数列表要长得多,但前几行显示了迄今为止在配置中自定义的参数。如果您看到消息Error contacting apcupsd @ localhost:3551: Connection refused,请检查以确保 apcupsd 服务正在运行。

配置和测试电子邮件警报

注意:为了接收通知,您必须在您的 Alpine 主机上设置并运行邮件传递。此外,您应该有一个别名,将发送给 root 的电子邮件发送给常规用户。有关这方面的帮助,请参阅 Alpine HOWTO Small-Time_Email_with_Exim_and_Dovecot

apcupsd 将使用 /etc/apcupsd 目录中的 shell 脚本发送重要事件的警报。下面列出了这些脚本及其警报功能。

  • changeme - 当电池达到其使用寿命末期时发送警报
  • commfailure - apcupsd 无法与 UPS 通信
  • commok - 与 UPS 的通信在故障后已恢复
  • offbattery - UPS 在电池供电后恢复到市电供电
  • onbattery - ups 已切换到电池供电

所有脚本都具有类似的设置,并依赖于两个环境变量 SYSADMIN 和 APCUPSD_MAIL 来传递电子邮件警报。要测试警报,请临时导出这两个变量,并从命令行运行其中一个脚本。下面的示例展示了如何为电池更换发送测试警报。

# export SYSADMIN=root # export APCUPSD_MAIL=mail # sh /etc/apcupsd/changeme

如果一切顺利,您应该收到一封电子邮件,告诉您 UPS 电池现在需要更换。如果您发现需要为 SYSADMIN 或 APCUPSD_MAIL 使用不同的值,请务必在 /etc/apcupsd/apccontrol 中进行这些更改。测试中使用的导出变量是临时的,将在您注销后丢失。

后续步骤

可以进行进一步配置以使用 apcupsd.conf 中的参数启动自动关机(有关详细信息,请参阅原始注释文件 apcupsd.conf~)。您还可以使用 Home Assistant 和 APC UPS Daemon 集成通过家庭自动化监控 UPS。