[Настройка] OpenHardwareMonitor и элемент для сцены

Описание настройки чего либо

Модераторы: immortal, newz20

Ответить
Аватара пользователя
Bagir
Сообщения: 1487
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 187 раз
Поблагодарили: 338 раз

[Настройка] OpenHardwareMonitor и элемент для сцены

Сообщение Bagir » Пт фев 27, 2015 12:48 am

Подключаем OpenHardwareMonitor и собираем любые данные о нашей системе. Есть версии для Windows и Linux. Программа не требует установки. Просто поместите ее в автозагрузку сами или включите соответствующую опцию. Получение данных происходит через web сервер, который OpenHardwareMonitor умеет создавать по умолчанию на 8085 порту. Нам нужно включить эту опцию.
Изображение
Теперь напишем сценарий, который при запуске будет получать нужные нам данные и записывать их, например, в свойства объекта ThisComputer. Обращаю Ваше внимание, что для функции segGlobal() не обязательно указывать имя объекта ThisComputer. Если имя не указано, оно будет выбрано по умолчанию.
СценарийПоказать

Код: Выделить всё

function searchJson($obj,$arrprop) {
 foreach($obj->Children as $child) {
  if(isset($child->id)) {
   foreach($arrprop as $pn=>$id) {
    if ($id == $child->id) {
     $sensorvalue = round(substr($child->Value,0,strpos($child->Value,' ')),0);
     sg($pn,$sensorvalue);
    } 
   }
  }
  searchJson($child,$arrprop);
 }
 return;
}


//Получение данных от OpenHardwareMonitor
$ch = curl_init('http://127.0.0.1:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//             'Имя свойства'=>id
$arrprop=array('CPUCore1Temp'=>27,'CPUCore2Temp'=>28,'CPUCore3Temp'=>29,'CPUCore4Temp'=>30,
               'CPUCore1Load'=>33,'CPUCore2Load'=>34,'CPUCore3Load'=>35,'CPUCore4Load'=>36);
searchJson($json,$arrprop);


// Расчет цветовой температуры для элемента на сцене
$min = 45; // зеленый 
$mid = 52; // желтый
$max = 65; // красный
$arrprop=array('CPUCore1Temp','CPUCore2Temp','CPUCore3Temp','CPUCore4Temp');

foreach($arrprop as $pn) {
 $t=gg($pn);
 if ($t<$min) {$t=$min;} elseif ($t>$max) {$t=$max;} 

 if ($t<$mid){
  $t = round( ($t-$min)/($mid-$min)*255 );
  $t = dechex($t); 
  $hcolor = '#'.$t.'ff00';
  // $hcolor = $t.',255,0';
 } else {
  $t = 255 - round( ($t-$mid)/($max-$mid)*255 );
  $t = dechex($t); 
  $hcolor = '#ff'.$t.'00';
  //$hcolor = '255,'.$t.',0';
 }
 sg($pn.'HEX', $hcolor);
} 
Предлагаемый сценарий состоит из двух частей. Первая часть обращается к web серверу OpenHardwareMonitor и получает нужные данные. В моем примере это процент загрузки и температура ядер процессора.
Вторая часть рассчитывает цветовую температуру для ядер. Если это Вам не нужно, просто удалите. Я использую для элемента, который показывает загрузку ядер. Цвет линий отражает температуру. Обзор на этот элемент сделаю сообщением ниже. А пока продолжим разбираться с OpenHardwareMonitor.
В сценарии есть массив

Код: Выделить всё

$arrprop=array('CPUCore1Temp'=>27,'CPUCore2Temp'=>28,'CPUCore3Temp'=>29,'CPUCore4Temp'=>30,'CPUCore1Load'=>33,'CPUCore2Load'=>34,'CPUCore3Load'=>35,'CPUCore4Load'=>36);
В нем нужно указать все интересующие нас свойства. Порядок такой: Имя свойства МД => ID этого свойства в OpenHardwareMonitor. Узнать нужные ID можно открыв этот адрес в браузере http://127.0.0.1:8085/data.json Не очень дружелюбно, но сравнивая со страничкой, поиском можно все легко найти.

Во второй части сценария, для расчета цветовой температуры, в массиве нужно указать все свойства, для которых это требуется

Код: Выделить всё

$arrprop=array('CPUCore1Temp','CPUCore2Temp','CPUCore3Temp','CPUCore4Temp');
Порядок такой: Мы указываем имя CPUCore1Temp, сценарий рассчитывает цвет, добавляет к имени свойства буквы HEX, и записывает данные в новое свойство CPUCore1TempHEX.

Все нужные свойства необходимо создать заранее самому.
Ну вот и все. Осталось только запускать этот сценарий с нужной периодичностью. Я делаю это из onNewMinute примерно так:

Код: Выделить всё

runScript('HardwareMonitor');
За это сообщение автора Bagir поблагодарили (всего 2):
Colp (Вс мар 08, 2015 1:35 pm) • Ko/|xo3HUk (Ср янв 16, 2019 11:58 am)
Рейтинг: 2.35%
Windows 7, HTTP, MegaD, Z-Wave, 1-Wire
Аватара пользователя
Bagir
Сообщения: 1487
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 187 раз
Поблагодарили: 338 раз

Элемент загрузки процессора для сцены

Сообщение Bagir » Пт фев 27, 2015 12:48 am

Вариант черновой, и над ним еще работать и работать, но даже в таком виде он весьма уже интересный. Решил выложить, может кто допилит. В планах добавить картинку процессора и покраснение рамки при превышении нагрузки. Возможно было бы интересно сделать полоски не целыми, а сегментами. Пока что длинна полоски отображает нагрузку, а ее цвет - температуру ядра. На скрине оставил и другие элементы для наглядности и сравнения.
Изображение
Код очень простой. Поменяйте везде номер элемента element_94 на свой.
Стоит отметить, что в коде нет указаний о ширине и длине. Эти параметры берутся из настроек самого элемента. Четыре полоски внутри задаются в процентном соотношении от общего размера height:25%; Если у Вас две полоски :D то оставьте только две группы и замените height:50%;
Код элементаПоказать

Код: Выделить всё

<style type = "text/CSS">
div.element_94 {
border-radius:5px;
background:RGB(200,255,255);
}
.element_94 .line1 {
width:%ThisComputer.CPUCore1Load%%;
height:25%;
border-radius:3px;
background-color:%ThisComputer.CPUCore1TempHEX%;
}
.element_94 .line2 {
width:%ThisComputer.CPUCore2Load%%;
height:25%;
border-radius:3px;
background-color:%ThisComputer.CPUCore2TempHEX%;
}
.element_94 .line3 {
width:%ThisComputer.CPUCore3Load%%;
height:25%;
border-radius:3px;
background-color:%ThisComputer.CPUCore3TempHEX%;
}
.element_94 .line4 {
width:%ThisComputer.CPUCore4Load%%;
height:25%;
border-radius:3px;
background-color:%ThisComputer.CPUCore4TempHEX%;
}
</style>

<div class="line1"></div>
<div class="line2"></div>
<div class="line3"></div>
<div class="line4"></div>
При клике по элементу можно повесить действие на запуск скрипта для обновления данных.
Вложения
Elements01-14-35.zip
(2.01 КБ) 257 скачиваний
За это сообщение автора Bagir поблагодарили (всего 2):
slgeo (Пт фев 27, 2015 1:32 am) • Amarok (Ср апр 15, 2015 2:31 pm)
Рейтинг: 2.35%
Windows 7, HTTP, MegaD, Z-Wave, 1-Wire
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: OpenHardwareMonitor и элемент для сцены

Сообщение Roman_13j » Вт июн 07, 2016 11:40 pm

Здравствуйте! Недавно присоединился к сообществу MajorDomo. Вопрос такой: open hardware monitor не открывается на порту 8085, разрешения через брандмауэр для программы и порта на входящие и исходящие подключения давал, никак не хочет работать:((( Подскажите, пожалуйста, как исправить эту ситуацию???
Аватара пользователя
nick7zmail
Сообщения: 7527
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 1991 раз

Re: OpenHardwareMonitor и элемент для сцены

Сообщение nick7zmail » Ср июн 08, 2016 9:54 am

Roman_13j писал(а):Здравствуйте! Недавно присоединился к сообществу MajorDomo. Вопрос такой: open hardware monitor не открывается на порту 8085, разрешения через брандмауэр для программы и порта на входящие и исходящие подключения давал, никак не хочет работать:((( Подскажите, пожалуйста, как исправить эту ситуацию???
У меня в локалке тоже не хочет открываться зараза. Попробуй с компа, где установлен - открыть в браузере localhost:8085
Если работает - то сервер стартует. При отключенном брэндмауэре - по локалке заходит. При включенном - все права давал, правила создавал, в исключения запихивал - не хочет работать и всё.

А из MD просто делаю запросы к localhost, и записываю в свойства, те значения уже вывожу в меню/на сцены.
За это сообщение автора nick7zmail поблагодарил:
Roman_13j (Ср июн 08, 2016 5:07 pm)
Рейтинг: 1.18%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: OpenHardwareMonitor и элемент для сцены

Сообщение Roman_13j » Ср июн 08, 2016 11:44 am

nick7zmail, спасибо огромное!!! По localhost:8085 заходит и все отображается!
Vermin
Сообщения: 4
Зарегистрирован: Вт сен 06, 2016 5:56 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: OpenHardwareMonitor и элемент для сцены

Сообщение Vermin » Ср сен 07, 2016 12:41 am

Bagir писал(а):Теперь напишем сценарий, который при запуске будет получать нужные нам данные и записывать их, например, в свойства объекта ThisComputer
А что именно в коде отвечает за выбор куда будут записываться данные? как записать в свойства другого объекта(не ThisComputer)?
P.S И как получать не целые числа, а дробные?
Аватара пользователя
nick7zmail
Сообщения: 7527
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 1991 раз

Re: OpenHardwareMonitor и элемент для сцены

Сообщение nick7zmail » Ср сен 07, 2016 6:06 am

Vermin писал(а):А что именно в коде отвечает за выбор куда будут записываться данные? как записать в свойства другого объекта(не ThisComputer)?
P.S И как получать не целые числа, а дробные?
За то, куда записываются свойства отвечает функция

Код: Выделить всё

setGlobal();
//или
sg();
//у которой 2 аргумента
sg(<тут объект.свойство>, <тут значение, которое надо выставить>);
А чтобы записывать дробные - достаточно убрать округления

Код: Выделить всё

round();
За это сообщение автора nick7zmail поблагодарил:
Vermin (Ср сен 07, 2016 8:38 am)
Рейтинг: 1.18%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Vermin
Сообщения: 4
Зарегистрирован: Вт сен 06, 2016 5:56 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: OpenHardwareMonitor и элемент для сцены

Сообщение Vermin » Ср сен 07, 2016 10:39 pm

Чет не могу понять, а как в другой объект записать значения? Можно пример на этом же коде?
Аватара пользователя
nick7zmail
Сообщения: 7527
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 1991 раз

Re: OpenHardwareMonitor и элемент для сцены

Сообщение nick7zmail » Чт сен 08, 2016 6:58 am

Vermin писал(а):Чет не могу понять, а как в другой объект записать значения? Можно пример на этом же коде?
Есть классная штука под названием поиск))
Рабочих примеров уже полно на форуме, с описанием каждого элемента, и инструкциями - как подогнать всё это под вашу систему.
http://majordomo.smartliving.ru/forum/v ... 2155#p2155
http://majordomo.smartliving.ru/forum/v ... 348#p14348

Первая тема чисто про OHM, вторая про настройку домашних страниц и визуализацию...и там и там есть примеры кода.
За это сообщение автора nick7zmail поблагодарил:
Vermin (Чт сен 08, 2016 11:35 pm)
Рейтинг: 1.18%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить