- Ubuntu Server 16.04.6 LTS
- openHAB 2.5.4 Release Build
- MSI P6NG Neo-Digital
- Pentium(R) Dual-Core E5200 @ 2.50GHz
- 2 x 512MiB DDR2 Kingston
- WDC WD800BEVS-60LAT0 80GB
В същия момент. Показания в терминала, чрез SSH достъп.
Разликите идват от промеждутъка на снимане и опресняване на стойностите. В крайна сметка извеждане на същите значения в обособена страница на openHAB 2 спестяват време и телодвижения.
Движение напред. Инсталиране на System Info Binding.
Следваме официалната документация, за придобиване на представа:
На практика документацията е доста сумбурна и неактуална. В резултат не засече датчика на обороти на вентилатора и датчика за температура на твърдия диск. Изведе свободното дисково пространство на твърдия диск в MB. Това важи и за RAM паметта.
Към текуща дата openHAB 2 не умее да превежда MB в GB. Трансформацията може да се постигне, чрез правило написано на език JAVA или чрез функция написана на език JavaScript. Избор е втория вариант.
Движение напред. Инсталиране на Javascript Transformation.
MBtoGB.js
(function(i){
return (i / 1024).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' GB';
})(input)
Функцията се добавя в $OPENHAB_CONF/transform.
Следваща стъпка е засичане датчика на вентилатора.
Утилита sensors на помощ:
sensors
which sensors
-> /usr/bin/sensors
Отново логовете подсказват за липсваща инсталация.
Движение напред. Инсталиране на Exec Binding.
Exec Binding е интерфейс за взаимодействие между BASH и openHAB 2. Накратко, openHAB 2 изпълнява linux-команди. А тя е:
Отново липсваща инсталация. grep fan1 е регулярен израз, който ще бъде отсичан в втори "джоб".
Движение напред. Инсталиране на RegEx Transformation.
и добавяме linux-командата в файл: $OPENHAB_CONF/misc/exec.whitelist
Последна стъпка е засичане датчика за температура на твърдия диск.
Утилита hddtemp на помощ:
sudo hddtemp /dev/sda
which hddtemp
-> /usr/sbin/hddtemp
Но, ново 20. Показание на температурата на твърдия диск изисква sudo привилегии!
Поредицата от команди долу премахват това препятствие:
openhab proserver = (root) NOPASSWD: /usr/sbin/hddtemp
sudo adduser openhab sudo
su openhab
cat /etc/passwd | grep openhab
-> openhab:x:1000:1000:openhab,,,:/home/openhab:/bin/bash
Добавяме командата в "белия лист" до предходната на нов ред.
Финал. Традиционните три файла:
system.sitemap
sitemap system label="openHAB" { Frame label="System Info" { Group item=gSystem label="System Info" icon="infosys" { Frame label="RAM" { Text item=memTotal Text item=memUsed Text item=memAvailablePercent } Frame label="CPU" { Text item=Sensor_CPUTemp } Frame label="Вентилатор" { Text item=Sensor_FanSpeed } Frame label="HDD" { Text item=HDD_Free Text item=HDD_Temp } Frame label="WiFi" { Text item=Network_IP Text item=Network_Mac } } } }
system.things
Thing systeminfo:computer:server "openhab Server" @ "Servers" [interval_high=60, interval_medium=60] // speedFAN -> /etc/openhab2/misc/exec.whitelist Thing exec:command:apc "openhab Server" @ "Servers" [command="/usr/bin/sensors | grep fan1 | awk '{print $2}'", interval=15, timeout=5, autorun=false] // HDD_Temp -> /etc/openhab2/misc/exec.whitelist Thing exec:command:openhab "openhab Server" @ "Servers" [command="sudo /usr/sbin/hddtemp /dev/sda | awk '{print $4}'", interval=15, timeout=5, autorun=false]
system.items
// System Information Group gSystem /* Memory information*/ Number memTotal "Инсталирана [%d MB]" <ram> (gSystem) { channel="systeminfo:computer:server:memory#total" } Number memUsed "Заета [%d MB]" <ram> (gSystem) { channel="systeminfo:computer:server:memory#used" } Number memAvailablePercent "Свободна [%.1f %%]" <ram> (gSystem) { channel="systeminfo:computer:server:memory#availablePercent" } //Number HDD_Free "Свободно място [%.1f MB]" <hdd> (gSystem) { channel="systeminfo:computer:server:storage#available" } Number HDD_Free "Свободно място [JS(MBtoGB.js):%s]" <hdd> (gSystem) { channel="systeminfo:computer:server:storage#available" } String HDD_Temp "Температура [%s]" <hdd> (gSystem) { channel="exec:command:openhab:output" } /* Sensors information*/ Number Sensor_CPUTemp "Температура [%.1f °C]" <cpu> (gSystem) { channel="systeminfo:computer:server:sensors#cpuTemp" } //Number Sensor_FanSpeed "Обороти [%d RPM]" <fan> (gSystem) { channel="systeminfo:computer:server:sensors#fanSpeed" } String Sensor_FanSpeed "Обороти [%s RPM]" <fan> (gSystem) { channel="exec:command:apc:output" } /* Network information*/ String Network_IP "IP адрес [%s]" <network> (gSystem) { channel="systeminfo:computer:server:network#ip" } String Network_Mac "MAC адрес [%s]" <network> (gSystem) { channel="systeminfo:computer:server:network#mac" }
до нови срещи ^.^
0 Response to "System Info openHAB 2"
Публикуване на коментар