Появилось желание понаблюдать за состоянием электрической сети с помощью сервера домашней автоматизации на Domoticz. Так как вся система запитана через APC Back-UPS ES Power-Saving 700VA попробуем просто его добавить в Домотикз.
Подключаем источник бесперебойного питания интерфейсным кабелем APC к usb порту Raspberry Pi с уже установленными и настроенным Domoticz на борту:
I. Настраиваем службу Network UPS tools на Raspberry Pi Подключаемся через SSH к малине и устанавливаем два пакета NUT сервер и клиент:
pi@raspberrypi:~ $ sudo apt-get install nut-client nut-server
Проверяем виден ли наш УПС, подключенный через USB:
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 005: ID 046d:c534 Logitech, Inc.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $
Если команда вызывает ошибку то устанавливаем usbutils:
pi@raspberrypi:~ $ sudo apt-get install usbutils
Теперь отредактируем конфигурационный файл
/etc/nut/ups.conf нашего NUT сервера, добавив в него наш UPS (строки добавляем в конец файла):
[apc]
driver = usbhid-ups
port = auto
desc = "APC UPS"
Список драйверов можно посмотреть на страничке Network UPS Tools в разделе
drivers list.
Теперь протестируем установленные драйверы:
pi@raspberrypi:~ $ sudo upsdrvctl start
Network UPS Tools - UPS driver controller 2.7.2
Network UPS Tools - Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
Driver exited abnormally
Network UPS Tools - Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
kill: No such process
Driver exited abnormally
Network UPS Tools - Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
kill: No such process
Driver exited abnormally
pi@raspberrypi:~ $
Странно. В первом источнике [1] такой ошибке не было, а вот во втором [2] тоже так было, поэтому закроем пока на нее глаза.
В файле
/etc/nut/upsd.conf раскомментируем строку
LISTEN 127.0.0.1 3493.
В файл
/etc/nut/nut.conf изменим MODE на
MODE=netserver.
Перезагружаем малину.
Проверяем запустились ли службы, выполнив команду
sudo systemctl status nut-server.service:
Проверка того, что службы запускаются автоматически:
pi@raspberrypi:~ $ ps -ef | grep ups
nut 669 1 0 14:21 ? 00:00:01 /lib/nut/usbhid-ups -a apc
nut 672 1 0 14:21 ? 00:00:00 /lib/nut/upsd
pi 1802 1004 0 14:29 pts/0 00:00:00 grep --color=auto ups
pi@raspberrypi:~ $
Посмотрим какие значения может считать NUT server с нашего APC Back-UPS ES Power-Saving 700VA с помощью команды
upsc apc:
pi@raspberrypi:~ $ upsc apc
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: not set
battery.mfr.date: 2011/02/03
battery.runtime: 2625
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.5
battery.voltage.nominal: 12.0
device.mfr: APC
device.model: Back-UPS ES 700G
device.serial:
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.7.2
driver.version.data: APC HID 0.95
driver.version.internal: 0.38
input.sensitivity: medium
input.transfer.high: 266
input.transfer.low: 180
input.voltage: 218.0
input.voltage.nominal: 230
ups.beeper.status: disabled
ups.delay.shutdown: 20
ups.firmware: 871.O2 .I
ups.firmware.aux: O2
ups.load: 0
ups.mfr: APC
ups.mfr.date: 2011/02/03
ups.model: Back-UPS ES 700G
ups.productid: 0002
ups.serial:
ups.status: OL
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
pi@raspberrypi:~ $
II. Настраиваем Domoticz Устанавливаем плагин UPS Monitor по инструкции из источника [3], выполняя последовательно команды:
pi@raspberrypi:~ $ cd domoticz/plugins/
pi@raspberrypi:~/domoticz/plugins $ mkdir NUT_UPS
pi@raspberrypi:~/domoticz/plugins $ git clone https://github.com/999LV/NUT_UPS.git NUT_UPS
Cloning into 'NUT_UPS'...
remote: Enumerating objects: 26, done.
remote: Total 26 (delta 0), reused 0 (delta 0), pack-reused 26
Unpacking objects: 100% (26/26), done.
Checking connectivity... done.
pi@raspberrypi:~/domoticz/plugins $ cd NUT_UPS
pi@raspberrypi:~/domoticz/plugins/NUT_UPS $ sudo chmod +x plugin.py
pi@raspberrypi:~/domoticz/plugins/NUT_UPS $ sudo /etc/init.d/domoticz.sh restart
[ ok ] Restarting domoticz.sh (via systemctl): domoticz.service.
pi@raspberrypi:~/domoticz/plugins/NUT_UPS $
Далее идем в домотикз в раздел
Настройка - Оборудование и добавляем UPS Monitor:
Если
UPS NUT name не будет соответствовать имени раздела который вы задавали в
ups.conf, то получите ошибку в домотикз:
2018-10-14 15:00:02.978 Error: (UPS Monitor) Error reading UPS variables: BEGIN LIST VAR APC
В результате всех этих настроек получаем устройства в domoticz значения с которых можно использовать в своих сценариях:
Источники информации:
[1]
Using a raspberry-pi as a UPS server with nut [2]
Мониторинг состояния ИБП в Domoticz[3]
domoticz/wiki - UPS Monitoring python plugin for Domoticz[4]
domoticz/forum - Remote UPS for Raspberry