1) сценарий OHM_data
в нем происходит получение данных из ОНМ (Open Harware Monitor) для Windows,
а также некоторые преобразования данных (в коде есть комментарии):
Код: Выделить всё
/**************************************
* Обработка данных OHM *
* by Vovix *
* 17.02.2018 г. *
**************************************/
//----------------------- Подключаемся к OHM ------------------------------------------------------
$ch = curl_init('http://192.168.1.100:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные OHM ---------------------------------------------------
$mb_fan =(float) $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] -> {'Value'};
$cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
$cpu_temp = (float) $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[1] -> {'Children'}[2] -> {'Value'};
$cpu_load = (float) $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] -> {'Children'}[0] -> {'Value'};
$disk_used = (float) $json -> {'Children'}[0] -> {'Children'}[4] -> {'Children'}[1] -> {'Children'}[0] -> {'Value'};
//----------------------- Присваеваем значения ----------------------------------------------------
$color = "grey";
sg('ThisComputer.CPUtip', $cpu_tip);
$g_line[0] = " ";
$g_line[1] = " _";
$g_line[2] = " _ _";
$g_line[3] = " _ _ _";
$g_line[4] = " _ _ _ _";
$g_line[5] = " _ _ _ _ _";
$g_line[6] = " _ _ _ _ _ _";
$g_line[7] = " _ _ _ _ _ _ _";
$g_line[8] = " _ _ _ _ _ _ _ _";
$g_line[9] = " _ _ _ _ _ _ _ _ _";
$g_line[10] = " _ _ _ _ _ _ _ _ _ _";
$g_line[11] = " _ _ _ _ _ _ _ _ _ _ _";
$g_line[12] = " _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[13] = " _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[14] = " _ _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[15] = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _";
//--------------------- скорость вентилятора ----------------------------------------------------
sg('ThisComputer.MBfan1', $mb_fan);
$maxfan = gg('ThisComputer.maxfan'); // максимальное значене которое было
$minfan = gg('ThisComputer.minfan'); // минимальное значене которое было
if ($mb_fan > $maxfan) {
sg('ThisComputer.maxfan', $mb_fan);
$maxfan = $mb_fan;
}
if ($mb_fan < $minfan) {
sg('ThisComputer.minfan', $mb_fan);
$minfan = $mb_fan;
}
// вычтем и приведем к процентам
$prchs = (($mb_fan - $minfan) < 0) ? 0 : ($mb_fan - $minfan);
$prznm = (($maxfan - $minfan) <= 0) ? 1 : ($maxfan - $minfan);
$x = round ($prchs * 100 / $prznm);
sg('ThisComputer.MBfan1_100', $x);
//---------------------- загрузка процессора -----------------------------------------------------
sg('ThisComputer.CPUload', $cpu_load);
$l15 = round ($cpu_load / 6.66); // чтобы из 15 значений 100/15 = 6,(6)
$l15_line = $g_line[$l15];
sg('ThisComputer.CPUload_-1', $l15_line);
// и цвет для неё
if (($cpu_load >= 0) && ($cpu_load < 30)) {
$color = 'lime';
} else if (($cpu_load >= 30) && ($cpu_load < 45)) {
$color = 'greenyellow';
} else if (($cpu_load >= 45) && ($cpu_load < 60)) {
$color = 'yellow';
} else if ($cpu_load >= 60) {
$color = 'red';
} else {
$color = 'grey';
}
sg ('ThisComputer.CPUload_color', $color);
sg ('ThisComputer.CPUload_color_-1', $color);
// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
$j = $i - 1;
sg ('ThisComputer.CPUload_'.$i, gg('ThisComputer.CPUload_'.$j));
sg ('ThisComputer.CPUload_color_'.$i, gg('ThisComputer.CPUload_color_'.$j));
}
// -------------------- Температура процессора --------------------------------------------------------
$maxtemp = 75;
$mintemp = 25;
$kf = ($maxtemp - $mintemp)/15; // 15 это делений на индикаторе
sg('ThisComputer.CPUtemp', $cpu_temp);
$t15 = round (($cpu_temp - $mintemp) / $kf); // чтобы шкала начиналась с $mintemp
if ($cpu_temp <= $mintemp) {
$t15 = 0; // и оганичим нижнее значение на 0
} elseif ($cpu_temp >= $maxtemp) {
$t15 = 15; // ограничим максимум на 15 делений
}
$t15_line = $g_line[$t15];
sg('ThisComputer.CPUtemp_-1', $t15_line);
// и цвет для неё
if (($cpu_temp >= 0) && ($cpu_temp < 45)) {
$color = 'lime';
} else if (($cpu_temp >= 45) && ($cpu_temp < 60)) {
$color = 'greenyellow';
} else if (($cpu_temp >= 60) && ($cpu_temp < 70)) {
$color = 'yellow';
} else if ($cpu_temp >= 70) {
$color = 'red';
} else {
$color = 'grey';
}
sg ('ThisComputer.CPUtemp_color', $color);
sg ('ThisComputer.CPUtemp_color_-1', $color);
// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
$j = $i - 1;
sg ('ThisComputer.CPUtemp_'.$i, gg('ThisComputer.CPUtemp_'.$j));
sg ('ThisComputer.CPUtemp_color_'.$i, gg('ThisComputer.CPUtemp_color_'.$j));
}
// -------------------- Использование диска -------------------------------------------------------------
setGlobal('ThisComputer.DISKused', $disk_used);
$color = ($disk_used < 80) ? "lime" : "red";
sg ('ThisComputer.DISKused_color', $color);
// -------------------- преобразование Uptime -----------------------------------------------------------
$uptime = gg('ThisComputer.uptime');
$uptime_str = secondsToString($uptime);
sg ('ThisComputer.uptime_str', $uptime_str);
цель которого запускать каждые 3 секунды сценарий OHM_data
Код: Выделить всё
runScript('OHM_data');
setTimeOut("timer_Xs_timeout", "runScript('timer_Xs');", 3);
Код: Выделить всё
<style type="text/css">
@import url("/css/font-awesome/css/font-awesome.min.css");
progress {
-webkit-appearance: none;
height: 14px;
width: 120px;
}
progress[value]::-webkit-progress-bar {
background-color: rgb(68, 68, 68);
border-radius: 3px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5) inset;
}
progress[value]::-webkit-progress-value {
border-radius: 3px;
}
s_grey progress[value]::-webkit-progress-value {
background-color: grey;
}
s_yellow progress[value]::-webkit-progress-value {
background-color: yellow;
}
s_greenyellow progress[value]::-webkit-progress-value {
background-color: greenyellow;
}
s_lime progress[value]::-webkit-progress-value {
background-color: lime;
}
s_green progress[value]::-webkit-progress-value {
background-color: green;
}
s_orange progress[value]::-webkit-progress-value {
background-color: orange;
}
s_red progress[value]::-webkit-progress-value {
background-color: red;
}
div.vov {
width: 12px;
line-height: 3px;
font-size: 18px;
float: left;
margin-top: -7px;
padding-bottom: 14px;
}
div.vov-cont {
float: right;
}
.wp-table {
width: 100%;
margin: 1 auto;
border-collapse: collapse;
font-size: 11px;
font-family: arial;
color: rgb(200, 200, 200);
}
/* Background-color of the odd rows */
.wp-table tr:nth-child(odd) {
background-color: rgb(49, 49, 49);
}
/* Background-color of the even rows */
.wp-table tr:nth-child(even) {
background-color: rgb(59, 59, 59);
}
.wp-table td {
padding: 4px;
border-top: 2px solid rgb(42, 42, 42);
}
.toggle_ip {
font-size: 150%;
float: right;
color: grey;
cursor: pointer;
}
</style>
<div align="center" style="font-size:14px;"><span style="font-size:24px; color:orange;"><b>Алиса</b></span><br>
<table class="wp-table">
<tbody>
<tr>
<td colspan="3" align="center">
<b>CPU: <span style="font-size:12px; color:orange;">%ThisComputer.CPUtip%</span></b><br>
</td>
</tr>
<tr>
<td><br>Внешний IP<br><br></td>
<td align="right">
<span style='font-size:12px; color:orange; display:%Sets.displayIPext|"none;block"%'><pre>%ThisComputer.MyIPext%</pre></span>
<span style='font-size:12px; color:orange; display:%Sets.displayIPext|"block;none"%'><pre>***.***.***.***</pre></span>
</td>
<td>
<div class="toggle_ip" onclick="ajaxSetGlobal('Sets.displayIPext','0');" style = 'display:%Sets.displayIPext|"none;block"%'><span class='toggle_icon fa fa-toggle-on' aria-hidden="true"></span></div>
<div class="toggle_ip" onclick="ajaxSetGlobal('Sets.displayIPext','1');" style = 'display:%Sets.displayIPext|"block;none"%'><span class='toggle_icon fa fa-toggle-off' aria-hidden="true"></span></div>
</td>
</tr>
<tr>
<td><br>Внутрений IP<br><br></td>
<td align="right"><span style="font-size:12px; color:orange;"><pre>%ThisComputer.MyIPint%</pre></span></td>
<td></td>
</tr>
<tr>
<td>Последнее сообщение<br></td>
<td colspan="2" align="right">"<span style="font-size:11px; color:orange;">%ThisComputer.lastSayMessage%</span>"</td>
</tr>
<tr>
<td><br>Громкос. сист.<br><br></td>
<td align="left"><div class="vov-cont"><s_orange><progress value="%ThisComputer.volumeLevel%" max="100"></progress></s_orange></div></td>
<td> <span style="font-size:12px; color:orange;">%ThisComputer.volumeLevel%</span> %</td>
</tr>
<tr>
<td><br>Занято HDD<br><br></td>
<td align="left"><div class="vov-cont"><s_%ThisComputer.DISKused_color%><progress value="%ThisComputer.DISKused%" max="100"></progress></s_%ThisComputer.DISKused_color%></div></td>
<td> <span style="font-size:12px; color:orange;">%ThisComputer.DISKused%</span> %</td>
</tr>
<tr>
<td>Загрузка CPU</td>
<td align="left">
<!-- <div class="vov-cont"><s_%ThisComputer.CPUload_color%><progress value="%ThisComputer.CPUload%" max="100"></progress></s_%ThisComputer.CPUload_color%></div><br> -->
<!-- блок вывода гистограммы загрузки CPU -->
<div class="vov-cont">
<div class="vov">
<font color="%ThisComputer.CPUload_color_9%"><b>%ThisComputer.CPUload_9%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_8%"><b>%ThisComputer.CPUload_8%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_7%"><b>%ThisComputer.CPUload_7%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_6%"><b>%ThisComputer.CPUload_6%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_5%"><b>%ThisComputer.CPUload_5%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_4%"><b>%ThisComputer.CPUload_4%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_3%"><b>%ThisComputer.CPUload_3%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_2%"><b>%ThisComputer.CPUload_2%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_1%"><b>%ThisComputer.CPUload_1%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUload_color_0%"><b>%ThisComputer.CPUload_0%</b></font>
</div>
</div>
<br>
</td>
<td>
<span style="font-size:12px; color:orange;">%ThisComputer.CPUload%</span> %
</td>
</tr>
<tr>
<td>Температ. CPU</td>
<td align="left">
<!-- <div class="vov-cont"><s_%ThisComputer.CPUtemp_color%><progress value="%ThisComputer.CPUtemp%" max="70"></progress></s_%ThisComputer.CPUtemp_color%></div><br> -->
<!-- блок вывода гистограммы температуры CPU -->
<div class="vov-cont">
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_9%"><b>%ThisComputer.CPUtemp_9%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_8%"><b>%ThisComputer.CPUtemp_8%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_7%"><b>%ThisComputer.CPUtemp_7%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_6%"><b>%ThisComputer.CPUtemp_6%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_5%"><b>%ThisComputer.CPUtemp_5%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_4%"><b>%ThisComputer.CPUtemp_4%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_3%"><b>%ThisComputer.CPUtemp_3%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_2%"><b>%ThisComputer.CPUtemp_2%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_1%"><b>%ThisComputer.CPUtemp_1%</b></font>
</div>
<div class="vov">
<font color="%ThisComputer.CPUtemp_color_0%"><b>%ThisComputer.CPUtemp_0%</b></font>
</div>
</div>
<br>
</td>
<td>
<span style="font-size:12px; color:orange;">%ThisComputer.CPUtemp%</span> °C
</td>
</tr>
<tr>
<td><br>Вентил. охл.<br><br></td>
<td align="left"><div class="vov-cont"><span style="font-size: 9px; float: left;">%ThisComputer.minfan% min</span><span style="font-size: 9px; float: right;">max %ThisComputer.maxfan%</span><br><s_orange><progress value="%ThisComputer.MBfan1_100%" max="100"></progress></s_orange><div></td>
<td> <span style="font-size:12px; color:orange;">%ThisComputer.MBfan1%</span><br> <font size="-3">RPM</font></td>
</tr>
<tr>
<td><br>Uptime<br><br></td>
<td align="right"><span style="font-size:11px; color:orange;">%ThisComputer.uptime_str%</span></td>
<td></td>
</tr>
</tbody>
</table>
</div>
4) еще нужна эта функция где нибудь, например в файле любом в папке lib
и она используется у меня в коде OHM_data
(можно ее прописать и внутри кода OHM_data в худшем случае)
Код: Выделить всё
/**
* Секунды в строку
* Эта функция возвращает кол-во секунд преобразованное в дни, часы, минуты, секунды
*
* @param integer $seconds всего время в секундах.
* @return string "1234567" возвращает "14 дн., 6 час., 56 мин., 7 сек.".
*/
function secondsToString($seconds) {
$result = '';
if ($seconds >= 86400) {
$days = floor($seconds / 86400);
$seconds = $seconds % 86400;
$result = $days.' д., ';
}
if ($seconds >= 3600) {
$hours = floor($seconds / 3600);
$seconds = $seconds % 3600;
$result .= $hours.' час., ';
}
if ($seconds >= 60) {
$minutes = floor($seconds / 60);
$seconds = $seconds % 60;
$result .= $minutes.' мин., ';
}
$result .= $seconds.' сек.';
return $result;
}