Показометр напряжения от UPS в openHAB

Около года назад начитавшись 2gusia завел себе хоронилище необъятное, к нему прикручен UPS Back-UPS ES 700G.
Решил я показания напряжения передавать в openHAB (убунта в виртуал боксе на NASe). Раньше на народный мониторинг передавалось, но пересобрал все и на мониторинг передачу не прикручивал. А тут задумал посчитать расход электричества и циферка пригодилась.
Передавать будем посредством MQTT, потому как на нем же работают чудеса с MySensors.

1. Первым делом прикручиваем локальный MQTT брокер

sudo apt-get install mosquitto

просим запускать при старте системы

sudo update-rc.d mosquitto defaults

перезагружаемся

sudo shutdown -r now

и смотрим жив ли сервис

sudo service mosquitto status

Видим зеленые буковки похожие на

Active: active (running) since Чт. 2015-11-05 00:01:35 MSK; 55s ago

Переходим к следующему шагу

2. Запиливаем скрипт.
В скрипте надо взять буковки напряжения из UPS, и отдать их MQTT брокеру.
За основу берем содержимое /usr/local/www/diag_infos_ups.php
И пилим нечто похожее на

#!/usr/local/bin/php-cgi -f <?php require("phpMQTT.php"); //difinitions $upsname = 'ups'; $cmd = "/usr/local/bin/upsc $upsname"; $handle = popen($cmd, 'r'); if($handle) { $read = fread($handle, 4096); pclose($handle); $lines = explode("\n", $read); $ups = array(); foreach($lines as $line) { $line = explode(':', $line); $ups[$line[0]] = trim($line[1]); } if(count($lines) == 1) exit ("ERROR: Data stale!"); print "SN ".$ups['device.serial']." AC ".$ups['input.voltage']."0 V ".$ups['device.model']; $mqtt = new phpMQTT("openhab.kool.ru", 1883, "NAS"); if ($mqtt->connect()) { $mqtt->publish("openHAB/AC/0/V_VOLTAGE", $ups['input.voltage']); $mqtt->close(); } else print "Error connect to openhab.kool.ru MQTT broker\n "; } ?>
Недостающий phpMQTT.php берем на гите. (Искал что попроще и поменьше буков.)
Сохраняем туда, где он переживет перезагрузку Nas4free и пробуем запустить

/usr/local/bin/php-cgi /mnt/pool/ext/openhab_ups.php

Если видим нечто похожее на

X-Powered-By: PHP/5.6.12Content-type: text/html; charset=UTF-8SN 5………6 AC 236.00 V Back-UPS ES 700G

Стало быть все ок, добавляем в крон (/etc/crontab, можно через UI, но копипастить проще)
* * * * * root /usr/local/bin/php-cgi /mnt/pool/ext/openhab_ups.php

3. OpenHAB
Добавляем в openhab.cfg буковок про брокер

mqtt:localbroker.url=tcp://127.0.0.1:1883mqtt:localbroker.clientId=openHAB

В желаемый *.items добавляем нужных буковок

Number power_AC "Сеть [%.1f V]" (power,all) {mqtt="<[localbroker:openHAB/AC/0/V_VOLTAGE:state:default]"}

В желаемый *.sitemap нечто вида

Group item=power_AC icon="office" { Text item=power_AC Chart item=power_AC period=D refresh=1000 Chart item=power_AC period=W refresh=1000 Chart item=power_AC period=M refresh=1000 Chart item=power_AC period=Y refresh=1000 }

Перезапускаем openHAB

sudo service openhab restart

При удачном раскладе увидим нечто вида

Про считалку потребления электроэнергии в следующий раз ...