OpenHAB – моніторінг напруги у мережі

Вимоги

  • Openhab на ubuntu
  • Back-UPS XS 1100CI (можна використовувати будь-який інший, але в мене саме такий)

Підготовка

Встановлення Apcupsd

Інструкцію можна знайти наприклад за цим посиланням.

Як результат ми повинні мати змогу запустити команду apcaccess, результат виводу котрої ми й будемо використовувати

pi@openhab:/etc/openhab2 $ apcaccess
APC      : 001,036,0868
DATE     : 2017-07-15 12:12:51 +0300
HOSTNAME : openhab
VERSION  : 3.14.12 (29 March 2014) debian
UPSNAME  : openhab
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2017-07-15 11:02:42 +0300
MODEL    : Back-UPS XS 1100CI
STATUS   : ONLINE
LINEV    : 236.0 Volts
LOADPCT  : 1.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 269.3 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 155.0 Volts
HITRANS  : 280.0 Volts
ALARMDEL : No alarm
BATTV    : 27.2 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : XBXXXXX0XXXX
BATTDATE : 2015-03-17
NOMINV   : 230 Volts
NOMBATTV : 24.0 Volts
NOMPOWER : 660 Watts
FIRMWARE : 920.T4 .I USB FW:T4
END APC  : 2017-07-15 12:12:51 +0300

 

Підготовка OpenHAB

Відкриємо панель конфігурування OpenHAB та встановимо

RegEx Transformation

Конфігурування OpenHAB

things

Створимо файл /etc/openhab2/things/system.things

Thing exec:command:apc [command="/sbin/apcaccess -p LINEV", transform="REGEX((\\d+.\\d+).*)", interval=5, timeout=1, autorun=true]

items

Створимо файл /etc/openhab2/items/system.items

String SYSTEM_APC_VOLTAGE "[%s]" (SYSTEM) {channel="exec:command:apc:output"}
Number SYSTEM_APC_VOLTAGE_DOUBLE "Напруга [%.1fВ]" <energy> (SYSTEM)

Item SYSTEM_APC_VOLTAGE_DOUBLE треба через те, що exec повертає строку, а нам треба число. Створимо правило для перетворення строки до числа

rules

Створимо файл /etc/openhab2/rules/system.rules

rule "Convert System APC voltage"
when
  Item SYSTEM_APC_VOLTAGE changed
then
   SYSTEM_APC_VOLTAGE_DOUBLE.postUpdate(SYSTEM_APC_VOLTAGE.state.toString)
end

persist

Створимо конфігурацію для зберігання напруги до бази даних. Додамо строку

        SYSTEM_APC_VOLTAGE_DOUBLE : strategy = everyMinute

у файл /etc/openhab2/persistence/jdbc.persist

sitemap

Створимо графік для відображення історічних даних

Додамо строку

Chart label="Voltage" item=SYSTEM_APC_VOLTAGE_DOUBLE period=12h refresh=300

у файл /etc/openhab2/sitemaps/house.sitemap

Як результат маємо такий графік: