[Виджет] состояния системы (процессора) с индикаторами (OHM)

Модераторы: Bagir, Ivan, Vit, immortal, PAV

Аватара пользователя
Vovix
Сообщения: 1068
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 58 раз
Поблагодарили: 444 раза
Контактная информация:

[Виджет] состояния системы (процессора) с индикаторами (OHM)

Сообщение Vovix » Сб фев 17, 2018 5:51 pm

Решил структурировать и выложить сюда, то, элементы чего, уже были мной показаны в других сообщениях, а именно:
Скриншот 2018-02-17 18.33.26.png
Скриншот 2018-02-17 18.33.26.png (25.2 КБ) 2138 просмотров
что нужно для работы этого:
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);
 
2) сценарий timer_Xs
цель которого запускать каждые 3 секунды сценарий OHM_data
СпойлерПоказать

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

runScript('OHM_data');
setTimeOut("timer_Xs_timeout", "runScript('timer_Xs');", 3); 
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>&nbsp;<span style="font-size:12px; color:orange;">%ThisComputer.volumeLevel%</span>&nbsp;%</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>&nbsp;<span style="font-size:12px; color:orange;">%ThisComputer.DISKused%</span>&nbsp;%</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>
                    &nbsp;<span style="font-size:12px; color:orange;">%ThisComputer.CPUload%</span>&nbsp;%
                </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>
                    &nbsp;<span style="font-size:12px; color:orange;">%ThisComputer.CPUtemp%</span>&nbsp;°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>&nbsp;<span style="font-size:12px; color:orange;">%ThisComputer.MBfan1%</span><br>&nbsp;<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> 
UPD:
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;
}
Последний раз редактировалось Vovix Пн фев 19, 2018 8:54 pm, всего редактировалось 1 раз.
За это сообщение автора Vovix поблагодарили (всего 20):
webms (Вс фев 18, 2018 3:48 pm) • Logrus (Вс фев 18, 2018 4:53 pm) • chimik (Вс фев 18, 2018 8:39 pm) • VooDooN (Пн фев 19, 2018 10:51 am) • skysilver (Пн фев 19, 2018 1:29 pm) • kawkay (Пн фев 19, 2018 2:48 pm) • ahelper (Пн фев 19, 2018 6:16 pm) • dengi.76 (Вт фев 20, 2018 7:47 pm) • TrDA (Вт фев 20, 2018 7:57 pm) • Molostov (Вс фев 25, 2018 7:59 pm) и ещё 10
Рейтинг: 32.79%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
webms
Сообщения: 285
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 90 раз
Поблагодарили: 65 раз

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение webms » Вс фев 18, 2018 3:50 pm

Vovix, спасибо большое за решение.
Выложу немного измененный код под себя и под светлый шаблон Алисы, вдруг кому надо :)
СпойлерПоказать

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

<style type="text/css">
    progress { -webkit-appearance: none; height: 14px; width: 120px; } 
    progress[value]::-webkit-progress-bar { background-color:rgb(245, 245, 245); border-radius: 3px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) 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:rgb(255, 235, 59); } 
    s_greenyellow progress[value]::-webkit-progress-value { background-color: greenyellow; } 
    s_lime progress[value]::-webkit-progress-value { background-color:rgb(0, 220, 9); } 
    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:rgb(255, 33, 17); } 
    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: 12px; color:rgb(0, 0, 0); } 
    .wp-table tr:nth-child(odd) { background-color: fff; } 
    .wp-table tr:nth-child(even) { background-color: rgb(249, 249, 249); } 
    .wp-table td { padding: 2px; }
</style>
<div align="center" style="text-shadow: none;">
    <table class="wp-table">
        <tbody>
            <tr>
                <td colspan="3" align="center"> <b>CPU: <span style="font-size:12px;">%ServInfo.CPUtip%</span></b><br/>
                </td>
            </tr>
            <tr>
                <td><br> Громкос. сист.<br><br>
                </td>
                <td align="left">
                    <div class="vov-cont">
                        <s_lime><progress value="%ThisComputer.volumeLevel%" max="100"></progress></s_lime>
                    </div>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ThisComputer.volumeLevel%</span>&nbsp;%</td>
            </tr>
            <tr>
                <td>Загрузка CPU</td>
                <td align="left">
                    <!-- блок вывода гистограммы загрузки CPU -->
                    <div class="vov-cont">
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_9%">%ServInfo.CPUload_9%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_8%">%ServInfo.CPUload_8%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_7%">%ServInfo.CPUload_7%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_6%">%ServInfo.CPUload_6%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_5%">%ServInfo.CPUload_5%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_4%">%ServInfo.CPUload_4%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_3%">%ServInfo.CPUload_3%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_2%">%ServInfo.CPUload_2%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_1%">%ServInfo.CPUload_1%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUload_color_0%">%ServInfo.CPUload_0%</b>
                        </div>
                    </div> <br>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ServInfo.CPUload%</span>&nbsp;%</td>
            </tr>
            <tr>
                <td>Температ. CPU</td>
                <td align="left">
                    <!-- блок вывода гистограммы температуры CPU -->
                    <div class="vov-cont">
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_9%">%ServInfo.CPUtemp_9%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_8%">%ServInfo.CPUtemp_8%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_7%">%ServInfo.CPUtemp_7%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_6%">%ServInfo.CPUtemp_6%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_5%">%ServInfo.CPUtemp_5%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_4%">%ServInfo.CPUtemp_4%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_3%">%ServInfo.CPUtemp_3%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_2%">%ServInfo.CPUtemp_2%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_1%">%ServInfo.CPUtemp_1%</b>
                        </div>
                        <div class="vov">
                            <b style="color:%ServInfo.CPUtemp_color_0%">%ServInfo.CPUtemp_0%</b>
                        </div>
                    </div> <br>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ServInfo.CPUtemp%</span>&nbsp;°C</td>
            </tr>
            <tr>
                <td><br> Занято ОЗУ<br>
                    <br>
                </td>
                <td align="left">
                    <div class="vov-cont">
                        <s_%ServInfo.ServerMemory_color%><progress value="%ServInfo.ServerMemory%" max="100"></progress></s_%ServInfo.ServerMemory_color%>
                    </div>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ServInfo.ServerMemory%</span>&nbsp;%</td>
            </tr>
            <tr>
                <td><br> Занято HDD<br>
                    <br>
                </td>
                <td align="left">
                    <div class="vov-cont"><span style="font-size: 9px; float: left;">%ServInfo.zanyatoHDD% GB</span><span style="font-size: 9px; float: right;"></span><span style="font-size: 9px; float: right;">%ServInfo.totalHDD% GB</span><br>
                        <s_%ServInfo.DISKused_color%><progress value="%ServInfo.DISKused%" max="100"></progress></s_%ServInfo.DISKused_color%>
                    </div>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ServInfo.DISKused%</span>&nbsp;%</td>
            </tr>
            <tr>
                <td><br> Температ. HDD<br>
                    <br>
                </td>
                <td align="left">
                    <div class="vov-cont">
                        <s_%ServInfo.HddTemp_color%><progress value="%ServInfo.HddTemp%" max="60"></progress></s_%ServInfo.HddTemp_color%>
                    </div>
                </td>
                <td>&nbsp;<span style="font-size:12px; ">%ServInfo.HddTemp%</span>&nbsp;°C</td>
            </tr>
            <tr>
                <td align="left"><br> Uptime<br><br></td>
                <td colspan="2" align="left">
                <img style="margin-bottom:3px;" src="/maksim/img/icon/server.png" align="absmiddle"> <span title="Рекорд %ThisComputer.uptimeRecordTXT%">%ThisComputer.uptimeTXT%</span><br/>
                <img style="margin-bottom:3px;" src="/maksim/img/icon/megad.png" align="absmiddle"> <span title="Рекорд %statusTerminal.uptimeRecordTXT%">%statusTerminal.uptime%</span>
                </td>
            </tr>
        </tbody>
    </table>
</div> 
СпойлерПоказать

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

$ch = curl_init('http://localhost:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$ohm = curl_exec($ch);
$json = json_decode($ohm);

//----------------------- Вытягиваем данные ----------------------------------------------------

$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'};
$Memory = (float) $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
$TempHDD = (float) $json -> {'Children'}[0] -> {'Children'}[4] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
//$mb_fan =(float) $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] -> {'Value'}; 

//----------------------- Память на диске ----------------------------------------------------

$freeHDD = disk_free_space("."); 
$totalHDD = disk_total_space("."); 

$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$classHDD = min((int)log($freeHDD , $base) , count($si_prefix) - 1);
$class2HDD = min((int)log($totalHDD , $base) , count($si_prefix) - 1);
$echofreeHDD = sprintf('%1.2f' , $freeHDD / pow($base,$classHDD));
$echototalHDD = sprintf('%1.2f' , $totalHDD / pow($base,$class2HDD));

$zanyato = intval($echototalHDD) - intval($echofreeHDD);

setGlobal('ServInfo.freeHDD',intval($echofreeHDD));
setGlobal('ServInfo.zanyatoHDD',intval($zanyato));
setGlobal('ServInfo.totalHDD',intval($echototalHDD));

//----------------------- Сегодняшняя дата ----------------------------------------------------

$days = array( 1 => 'Понедельник' , 'Вторник' , 'Среда' , 'Четверг' , 'Пятница' , 'Суббота' , 'Воскресенье' );
$day = date('d.m.y — '.$days[date( 'N' )]);

setGlobal('ThisComputer.data_day',$day);


//----------------------- Присваеваем данные ----------------------------------------------------
$color = "grey";
sg('ServInfo.CPUtip', $cpu_tip);

 $g_line[0] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;";
 $g_line[1] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _";
 $g_line[2] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _";
 $g_line[3] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _";
 $g_line[4] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _";
 $g_line[5] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _";
 $g_line[6] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _";
 $g_line[7] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _";
 $g_line[8] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _ _";
 $g_line[9] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _ _ _";
$g_line[10] = "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _ _ _ _";
$g_line[11] = "&nbsp; &nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _ _ _ _ _";
$g_line[12] = "&nbsp; &nbsp; &nbsp; _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[13] = "&nbsp; &nbsp; _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[14] = "&nbsp; _ _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[15] = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _";

//--------------------- скорость вентилятора ----------------------------------------------------
/*
sg('ServInfo.MBfan1', $mb_fan);
$maxfan = gg('ServInfo.maxfan'); // максимальное значене которое было
$minfan = gg('ServInfo.minfan'); // минимальное значене которое было
if ($mb_fan > $maxfan) {
   sg('ServInfo.maxfan', $mb_fan);
   $maxfan = $mb_fan;
}
if ($mb_fan < $minfan) {
   sg('ServInfo.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('ServInfo.MBfan1_100', $x);
*/


//---------------------- загрузка процессора -----------------------------------------------------
sg('ServInfo.CPUload', $cpu_load);

$l15 = round ($cpu_load / 4); // чтобы из 15 значений 100/15 = 6,(6)
$l15_line = $g_line[$l15];
sg('ServInfo.CPUload_-1', $l15_line);

// и цвет для неё
if (($cpu_load >= 0) && ($cpu_load < 20)) {
   $color = 'rgb(0, 219, 7);'; //green
} else if (($cpu_load >= 20) && ($cpu_load < 30)) {
   $color = 'rgb(2, 175, 7);'; //greenyellow
} else if (($cpu_load >= 30) && ($cpu_load < 50)) {
   $color = 'rgb(255, 193, 7);'; //yellow
} else if ($cpu_load >= 50) {
   $color = 'rgb(255, 33, 17);'; //red
} else {
   $color = 'grey;'; //grey
}

sg ('ServInfo.CPUload_color', $color);
sg ('ServInfo.CPUload_color_-1', $color);

// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
   $j = $i - 1;
   sg ('ServInfo.CPUload_'.$i, gg('ServInfo.CPUload_'.$j));
   sg ('ServInfo.CPUload_color_'.$i, gg('ServInfo.CPUload_color_'.$j));
}

// -------------------- Температура процессора --------------------------------------------------------
$maxtemp = 70;
$mintemp = 42;
$kf = ($maxtemp - $mintemp)/15; // 15 это делений на индикаторе
sg('ServInfo.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('ServInfo.CPUtemp_-1', $t15_line);


// и цвет для неё
if (($cpu_temp >= 0) && ($cpu_temp < 48)) {
   $color = 'rgb(0, 219, 7);'; //green
} else if (($cpu_temp >= 48) && ($cpu_temp < 50)) {
   $color = 'rgb(2, 175, 7);'; //greenyellow
} else if (($cpu_temp >= 50) && ($cpu_temp < 60)) {
   $color = 'rgb(255, 193, 7);'; //yellow
} else if ($cpu_temp >= 60) {
   $color = 'rgb(255, 33, 17);'; //red
} else {
   $color = 'grey;'; //grey
}

sg ('ServInfo.CPUtemp_color', $color);
sg ('ServInfo.CPUtemp_color_-1', $color);

// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
   $j = $i - 1;
   sg ('ServInfo.CPUtemp_'.$i, gg('ServInfo.CPUtemp_'.$j));
   sg ('ServInfo.CPUtemp_color_'.$i, gg('ServInfo.CPUtemp_color_'.$j));
}


// -------------------- Использование ОЗУ -------------------------------------------------------------
setGlobal('ServInfo.ServerMemory', $Memory);
$color = ($Memory < 85) ? "lime" : "red";
sg ('ServInfo.ServerMemory_color', $color);


// -------------------- Температура HDD -------------------------------------------------------------
setGlobal('ServInfo.HddTemp', $TempHDD);

if (($TempHDD >= 0) && ($TempHDD < 30)) {
   $color = 'red'; //red
} else if (($TempHDD >= 30) && ($TempHDD < 52)) {
   $color = 'lime'; //green
}  else if (($TempHDD >= 45) && ($TempHDD < 52)) {
   $color = 'yellow'; //yellow
} else if ($TempHDD >= 52) {
   $color = 'red'; //red
} else {
   $color = 'grey;'; //grey
}

sg ('ServInfo.HddTemp_color', $color);


// -------------------- Использование HDD -------------------------------------------------------------
setGlobal('ServInfo.DISKused', $disk_used);

if (($disk_used >= 0) && ($disk_used < 50)) {
    $color = 'lime'; //green
} else if (($disk_used >= 50) && ($disk_used < 80)) {
   $color = 'yellow'; //yellow
} else if ($disk_used >= 80) {
   $color = 'red;'; //red
} else {
   $color = 'grey;'; //grey
}

sg ('ServInfo.DISKused_color', $color);

Вложения
Clip2net_180218154733.png
Clip2net_180218154733.png (14.25 КБ) 2106 просмотров
За это сообщение автора webms поблагодарили (всего 11):
Logrus (Вс фев 18, 2018 4:53 pm) • chimik (Вс фев 18, 2018 8:39 pm) • skysilver (Пн фев 19, 2018 1:29 pm) • kawkay (Пн фев 19, 2018 2:49 pm) • ahelper (Пн фев 19, 2018 6:14 pm) • ингвар (Пн фев 19, 2018 9:12 pm) • TrDA (Вт фев 20, 2018 7:57 pm) • ypiter2006 (Ср фев 28, 2018 7:50 pm) • olegvolk75 (Ср мар 21, 2018 11:17 am) • Alex77 (Пт мар 23, 2018 10:42 pm) и ещё один
Рейтинг: 18.03%
Logrus
Сообщения: 895
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 159 раз
Поблагодарили: 105 раз

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Logrus » Вс фев 18, 2018 4:53 pm

обоим в репу ))) на малинку б еще, эххх
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо - ТАМ =>
connect Raspberry Pi3, с образа от Сергея 3.31, PHP 7
Аватара пользователя
Vovix
Сообщения: 1068
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 58 раз
Поблагодарили: 444 раза
Контактная информация:

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Vovix » Вс фев 18, 2018 5:09 pm

Logrus писал(а):обоим в репу ))) на малинку б еще, эххх
сам виджет кросплатформенный, данные просто берутся из других мест!
За это сообщение автора Vovix поблагодарил:
chimik (Вс фев 18, 2018 8:39 pm)
Рейтинг: 1.64%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Logrus
Сообщения: 895
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 159 раз
Поблагодарили: 105 раз

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Logrus » Вс фев 18, 2018 5:15 pm

там в малинке на расцветку и пр. как я понимаю нужно методы писать, и с самим получением данных, ну очень все не оптимизированно, т.ч. еще пока не до методов (((
или я не понял 0_0 и можно?
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо - ТАМ =>
connect Raspberry Pi3, с образа от Сергея 3.31, PHP 7
Аватара пользователя
Sapizdullin
Сообщения: 194
Зарегистрирован: Сб фев 18, 2017 9:47 am
Благодарил (а): 21 раз
Поблагодарили: 23 раза

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Sapizdullin » Вс фев 18, 2018 9:42 pm

Всем привет!
А как прогресс-бар засунуть в сцену? ;)
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
gnom537
Сообщения: 88
Зарегистрирован: Вт июн 17, 2014 1:06 pm
Откуда: нижний новгород
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение gnom537 » Пн фев 19, 2018 8:18 am

Vovix доброе утро. использую малинку и RPi-Monitor.
если набрать адрес " http://192.168.0.116:8888/dynamic.json " то появляется такая инфа

" {"soc_temp":"41.86","memory_available":559.1796875,"scaling_governor":"ondemand","sdcard_boot_used":20.8310546875,"upgrade":"29 upgradable(s)","sdcard_root_used":4308,"cpu_frequency":600,"uptime":"495461.38","cpu_voltage":"1.2000","load5":"0.14","load1":"0.18","localtime":[2018,2,19,8,15,25],"packages":"bind9-host curl firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek gir1.2-gdkpixbuf-2.0 libav-tools libbind9-140 libcurl3 libcurl3-gnutls libdns-export162 libdns162 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libisc-export160 libisc160 libisccc140 libisccfg140 liblwres141 libtasn1-6 libtiff5 libvorbis0a libvorbisenc2 libvorbisfile3 nodejs pi-bluetooth ","memory_free":116.85546875,"load15":"0.16","swap_used":2.3984375} "

сейчас вытаскиваю данные через вэб переменные, нельзя ли замутить сценарий для этих данных? заранее спасибо.
Аватара пользователя
Vovix
Сообщения: 1068
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 58 раз
Поблагодарили: 444 раза
Контактная информация:

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Vovix » Пн фев 19, 2018 10:40 am

gnom537 писал(а):Vovix доброе утро. использую малинку и RPi-Monitor.
если набрать адрес " http://192.168.0.116:8888/dynamic.json " то появляется такая инфа

" {"soc_temp":"41.86","memory_available":559.1796875,"scaling_governor":"ondemand","sdcard_boot_used":20.8310546875,"upgrade":"29 upgradable(s)","sdcard_root_used":4308,"cpu_frequency":600,"uptime":"495461.38","cpu_voltage":"1.2000","load5":"0.14","load1":"0.18","localtime":[2018,2,19,8,15,25],"packages":"bind9-host curl firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek gir1.2-gdkpixbuf-2.0 libav-tools libbind9-140 libcurl3 libcurl3-gnutls libdns-export162 libdns162 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libisc-export160 libisc160 libisccc140 libisccfg140 liblwres141 libtasn1-6 libtiff5 libvorbis0a libvorbisenc2 libvorbisfile3 nodejs pi-bluetooth ","memory_free":116.85546875,"load15":"0.16","swap_used":2.3984375} "

сейчас вытаскиваю данные через вэб переменные, нельзя ли замутить сценарий для этих данных? заранее спасибо.
можно, но я думаю вы и сами легко с этим справитесь, менять вам придется в OHM_data, скорее всего, только это:

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

//----------------------- Подключаемся к 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'}; 
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
ahelper
Сообщения: 82
Зарегистрирован: Ср фев 08, 2017 5:04 pm
Благодарил (а): 31 раз
Поблагодарили: 38 раз

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение ahelper » Пн фев 19, 2018 6:13 pm

Приветствую.
Внешний IP должен появляться при клике на него? Почему у меня нет?
Строка расчета Uptime тоже не работает. Что не так, или еще чего то не хватает?
Аватара пользователя
Vovix
Сообщения: 1068
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 58 раз
Поблагодарили: 444 раза
Контактная информация:

Re: [Виджет] состояния системы (процессора) с индикаторами (

Сообщение Vovix » Пн фев 19, 2018 8:29 pm

ahelper писал(а):Приветствую.
Внешний IP должен появляться при клике на него? Почему у меня нет?
Строка расчета Uptime тоже не работает. Что не так, или еще чего то не хватает?
Прошу прощения у меня там моя функция, это я про строку Uptime!
У меня этот код в моем файле в папке lib лежит:

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

/**
 * Секунды в строку
 * Эта функция возвращает кол-во секунд преобразованное в дни, часы, минуты, секунды
 *
 * @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;
} 
За это сообщение автора Vovix поблагодарили (всего 2):
ahelper (Пн фев 19, 2018 11:43 pm) • TrDA (Вт фев 20, 2018 7:58 pm)
Рейтинг: 3.28%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Ответить