четверг, 8 ноября 2018 г.

Domoticz. Мониторинг ИБП

Добавим в Domoticz мониторинг состояния ИБП через bash-скрипт. Для работы скрипта необходима утилита apcupsd. Необходимые данные (состояние батареи, текущая нагрузка, напряжение, температура внутри корпуса) скрипт парсит с вывода apcaccess status.
john@vaio:~$ apcaccess status
APC      : 001,045,1159
DATE     : 2018-11-05 22:06:53 +0300
HOSTNAME : vaio
VERSION  : 3.14.10 (13 September 2011) debian
UPSNAME  : APC750
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2018-10-29 19:14:36 +0300
MODEL    : Smart-UPS 750
STATUS   : ONLINE
LINEV    : 218.8 Volts
LOADPCT  :  31.8 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  37.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 218.8 Volts
SENSE    : Medium
DWAKE    : -01 Seconds
DSHUTD   : 270 Seconds
LOTRANS  : 196.0 Volts
HITRANS  : 253.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 42.3 C Internal
ALARMDEL : No alarm
BATTV    : 27.0 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 1
XONBATT  : 2018-11-03 07:54:27 +0300
TONBATT  : 0 seconds
CUMONBATT: 11 seconds
XOFFBATT : 2018-11-03 07:54:38 +0300
LASTSTEST: 2018-11-03 07:54:27 +0300
SELFTEST : NO
STESTI   : 14 days
STATFLAG : 0x07000008 Status Flag
MANDATE  : 2006-11-05
SERIALNO : AS0645222525
BATTDATE : 2018-09-07
NOMOUTV  : 220 Volts
NOMBATTV :  24.0 Volts
FIRMWARE : 651.13.I USB FW:7.3
END APC  : 2018-11-05 22:06:54 +0300
Будем считать, что apcupsd установлен, и связь с ИБП настроена. Осталось только создать необходимые датчики и добавить скрипт в crontab.

Сам скрипт
#!/bin/bash
#Script to grab APC status and update domoticz vars

SERVER='localhost:505/'
SERVER_CMD='json.htm?type=command&param=udevice&'
SWITCH_CMD='json.htm?type=command&param=switchlight&'
cap_data=`apcaccess status`

#apc_total = "apcaccess status"
#echo "$cap_data"

apc_stat=`awk '/STATUS / {print $3}' <<< "$cap_data"` 
apc_volts=`awk '/LINEV / {print $3}' <<< "$cap_data"` 
apc_itemp=`awk '/ITEMP / {print $3}' <<< "$cap_data"` 
apc_load=`awk '/LOADPCT / {print $3}' <<< "$cap_data"` 
apc_bcharge=`awk '/BCHARGE / {print $3}' <<< "$cap_data"`  
echo $apc_stat 
echo $apc_volts 
echo $apc_itemp 
echo $apc_load 
echo $apc_bcharge  
hostcmd="http://${SERVER}${SERVER_CMD}idx=36&nvalue=0&svalue=${apc_itemp}"
curlres=`curl -sS $hostcmd`
hostcmd="http://${SERVER}${SERVER_CMD}idx=35&nvalue=0&svalue=${apc_volts}"
curlres=`curl -sS $hostcmd`
hostcmd="http://${SERVER}${SERVER_CMD}idx=37&nvalue=0&svalue=${apc_load}"
curlres=`curl -sS $hostcmd`
hostcmd="http://${SERVER}${SERVER_CMD}idx=38&nvalue=0&svalue=${apc_bcharge}"
curlres=`curl -sS $hostcmd`  
if  [ "$apc_stat" = "ONLINE" ]; then 
#echo "APC SYSTEM IS ONLINE" 
hostcmd="http://${SERVER}${SWITCH_CMD}idx=39&switchcmd=On&level=0" 
curlres=`curl -sS $hostcmd`  

else #echo "APC SYSTEM IS OFFLINE" 
hostcmd="http://${SERVER}${SWITCH_CMD}idx=39&switchcmd=Off&level=0" 
curlres=`curl -sS $hostcmd`  
fi
От нас требуется заполнить строку SERVER и idx для stat, volts, itemp, load, bcharge. Сохраняем в любой директории apc.sh

Сделаем скрипт исполняемым и добавим в crontab, с запуском раз в минуту.
chmod +x apc.sh
crontab -e
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
* * * * * /home/john/apc.sh

Стоит обратить внимание, что для корректной работы apcaccess от пользователя, в crontab, можно в самом верху, следует добавить пару строчек с переменными окружения
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Иначе скрипт будет отрабатывать по crontab без результата!

Теперь, когда со скриптами разобрались, переходим в Domoticz. Будем создавать датчики.
Традиционно - Настройка > Оборудование
Нажимаем Создать виртуальные датчики
Переходим в Настройка > Устройства переписываем idx каждого apc устройства, и заполняем их в скрипт напротив соответствующих переменных.
Так выглядят готовые настроенные датчики
А так, график пропадания электричества за год

Когда подойдёт время менять батареи, читайте как это сделать далее.
Как запилить красивые иконки для APC Smart-UPS 750

Комментариев нет :

Отправить комментарий