Теперь напишем сценарий, который при запуске будет получать нужные нам данные и записывать их, например, в свойства объекта 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);
}
Вторая часть рассчитывает цветовую температуру для ядер. Если это Вам не нужно, просто удалите. Я использую для элемента, который показывает загрузку ядер. Цвет линий отражает температуру. Обзор на этот элемент сделаю сообщением ниже. А пока продолжим разбираться с OpenHardwareMonitor.
В сценарии есть массив
Код: Выделить всё
$arrprop=array('CPUCore1Temp'=>27,'CPUCore2Temp'=>28,'CPUCore3Temp'=>29,'CPUCore4Temp'=>30,'CPUCore1Load'=>33,'CPUCore2Load'=>34,'CPUCore3Load'=>35,'CPUCore4Load'=>36);
Во второй части сценария, для расчета цветовой температуры, в массиве нужно указать все свойства, для которых это требуется
Код: Выделить всё
$arrprop=array('CPUCore1Temp','CPUCore2Temp','CPUCore3Temp','CPUCore4Temp');
Все нужные свойства необходимо создать заранее самому.
Ну вот и все. Осталось только запускать этот сценарий с нужной периодичностью. Я делаю это из onNewMinute примерно так:
Код: Выделить всё
runScript('HardwareMonitor');