Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...

Software:
  • Ubuntu Server 16.04.6 LTS
  • openHAB 2.5.4 Release Build
HardWare:
  • MSI P6NG Neo-Digital
  • Pentium(R) Dual-Core E5200 @ 2.50GHz
  • 2 x 512MiB DDR2 Kingston
  • WDC WD800BEVS-60LAT0 80GB
Визуализиране на системната информация в openHAB 2.

System Info в openHAB 2

В същия момент. Показания в терминала, чрез SSH достъп.

Показания в терминала

Показания в терминала

Разликите идват от промеждутъка на снимане и опресняване на стойностите. В крайна сметка извеждане на същите значения в обособена страница на openHAB 2 спестяват време и телодвижения.

Движение напред. Инсталиране на System Info Binding.

Инсталиране на System Info Binding

Следваме официалната документация, за придобиване на представа:
  1. Systeminfo Binding
  2. Systeminfo Binding
На практика документацията е доста сумбурна и неактуална. В резултат не засече датчика на обороти на вентилатора и датчика за температура на твърдия диск. Изведе свободното дисково пространство на твърдия диск в MB. Това важи и за RAM паметта.

Към текуща дата openHAB 2 не умее да превежда MB в GB. Трансформацията може да се постигне, чрез правило написано на език JAVA или чрез функция написана на език JavaScript. Избор е втория вариант.

Движение напред. Инсталиране на Javascript Transformation.

Инсталиране на Javascript Transformation

MBtoGB.js
// javascript transform (MBtoGB.js) -> transform
(function(i){
return (i / 1024).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ' GB';
})(input)

Функцията се добавя в $OPENHAB_CONF/transform.

Следваща стъпка е засичане датчика на вентилатора.
Утилита sensors на помощ:
sudo apt install lm-sensors
sensors


which sensors
-> /usr/bin/sensors

Отново логовете подсказват за липсваща инсталация.

Движение напред. Инсталиране на Exec Binding.

Инсталиране на Exec Binding

Exec Binding е интерфейс за взаимодействие между BASH и openHAB 2. Накратко, openHAB 2 изпълнява linux-команди. А тя е:
/usr/bin/sensors | grep fan1 | awk '{print $2}'

Отново липсваща инсталация. grep fan1 е регулярен израз, който ще бъде отсичан в втори "джоб".

Движение напред. Инсталиране на RegEx Transformation.

Инсталиране на RegEx Transformation

и добавяме linux-командата в файл: $OPENHAB_CONF/misc/exec.whitelist

Последна стъпка е засичане датчика за температура на твърдия диск.
Утилита hddtemp на помощ:
sudo apt-get install hddtemp
sudo hddtemp /dev/sda
which hddtemp
-> /usr/sbin/hddtemp

Но, ново 20. Показание на температурата на твърдия диск изисква sudo привилегии!

Поредицата от команди долу премахват това препятствие:
sudo visudo -f /etc/sudoers.d/hddtemp
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

Добавяме командата в "белия лист" до предходната на нов ред.
sudo /usr/sbin/hddtemp /dev/sda | awk '{print $4}'



Финал. Традиционните три файла:

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" }






до нови срещи   ^.^
10.05.2020 profruit 

0 Response to "System Info openHAB 2"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога