Установка NUT:
apt install nut
Результат: Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Затем используйте для получения детальной информации.
nut-scanner -U
Результат:
Cannot load SNMP library (libnetsnmp.so.40) : file not found. SNMP search disabled.
Cannot load IPMI library (libfreeipmi.so.17) : file not found. IPMI search disabled.
Scanning USB bus.
[nutdev1]
driver = "usbhid-ups"
port = "auto"
vendorid = "051D"
productid = "0002"
product = "Smart-UPS 750 FW:651.13.I USB FW:7.3"
serial = "AS000000000"
vendor = "American Power Conversion"
bus = "001"
device = "003"
busport = "001"
###NOTMATCHED-YET###bcdDevice = "0006"
Настройка /etc/nut/nut.conf. Измените параметр Mode с none на netserver.
MODE=netserver
Настройка /etc/nut/ups.conf. Очистите файл и добавьте конфигурацию, полученную с помощью nut-scanner. Пример:Значения vendorid и productid можно получить из вывода lsusb.
pollinterval = 15
maxretry = 3
offdelay = 120
ondelay = 240
[apc]
driver = usbhid-ups
port = auto
vendorid = 051D
productid = 0002
serial = ваш_серийный_номер
Настройка /etc/nut/upsd.conf. Очистите файл и добавьте: Это позволит серверу принимать пакеты NUT от любых устройств в сети.
LISTEN 0.0.0.0 3493
LISTEN :: 3493
Предоставим права доступа к USB‑устройству
Создание udev‑правила для доступа к ИБП
- Создайте файл правила:
nano /etc/udev/rules.d/99-nut-ups.rules
- Вставьте следующее содержимое, используя данные из вывода nut-scanner:
SUBSYSTEM=="usb", ATTR{idVendor}=="051D", ATTR{idProduct}=="0002", MODE="0666", GROUP="nut"
- Сохраните файл (в nano: Ctrl+O, Enter, затем Ctrl+X).
- Примените правило:
udevadm control --reload-rules
udevadm trigger
Проверка и настройка пользователя и группы NUT
Убедитесь, что существует пользователь и группа nut:
id nut
Если команда выдаёт ошибку, создайте пользователя и группу:
groupadd nut useradd -r -g nut nut
Добавьте пользователя nut в группу dialout (для доступа к USB):
usermod -a -G dialout nut
Настройка upsd.users
Отредактируйте файл /etc/nut/upsd.users:
nano /etc/nut/upsd.users
Добавьте пользователя для мониторинга:
[monuser]
password = changeme
upsmon master
Важно: замените changeme на надёжный пароль.
Настройка upsmon.conf
Отредактируйте /etc/nut/upsmon.conf:
nano /etc/nut/upsmon.conf
Добавьте строку для мониторинга ИБП:
MONITOR apc@localhost 1 monuser changeme master
Настройка расписания команд
Назначение файла /etc/nut/upssched-cmd это исполняемый скрипт, который обрабатывает события от демона upssched (планировщика событий NUT).
Он определяет, какие действия выполнять при наступлении определённых состояний ИБП (например, переход на батарею, низкий заряд и т. д.).
в /etc/nut/upssched-cmd. Пример содержимого:
case $1 in
onbatt)
logger -t upssched-cmd "UPS running on battery"
;;
earlyshutdown)
logger -t upssched-cmd "UPS on battery too long, early shutdown"
/usr/sbin/upsmon -c fsd
;;
shutdowncritical)
logger -t upssched-cmd "UPS on battery critical, forced shutdown"
/usr/sbin/upsmon -c fsd
;;
upsgone)
logger -t upssched-cmd "UPS has been gone too long, can't reach"
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
Сделайте файл исполняемым:
chmod +x /etc/nut/upssched-cmd
Перезапуск служб NUT
Выполните команды в указанном порядке:
systemctl stop nut-monitor
systemctl stop nut-server
systemctl stop nut-client
upsdrvctl stop
upsdrvctl start
systemctl start nut-server
systemctl start nut-client
systemctl start nut-monitor
Проверка работы
Проверьте статус ИБП:upsc apc@localhost
Если команда возвращает параметры ИБП (заряд батареи, напряжение и т. д.), драйвер работает корректно.Проверьте статус служб:
systemctl status nut-server nut-client nut-monitor
Проверьте логи на наличие ошибок:
journalctl -u nut-monitor -f
Интеграция UPS APC в Home Assistant