[Приложение] Open Hardware Monitor

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

[Приложение] Open Hardware Monitor

Сообщение Alex » Вт дек 11, 2012 3:00 pm

Open Hardware Monitor (Mozilla Public License 2.0 )

http://openhardwaremonitor.org/

Собственно вот. Запускается как веб-сервер на 8085 порту и выдаёт всё, что только можно о состоянии компьютера. Вопрос с мониторингом компьютеров закрыт или тут есть подводные камни?
За это сообщение автора Alex поблагодарил:
Otto (Вс май 29, 2016 7:16 pm)
Рейтинг: 1.18%
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1535 раз
Контактная информация:

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение sergejey » Вт дек 11, 2012 3:20 pm

Отличное приложение. Думаю, что закрыт :)
Из особенностей -- веб-сервер запускается, но для веб-переменных нужно использовать ссылку http://localhost:8085/data.json -- именно там динамические данные передаются.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
raptorialfungus
Сообщения: 75
Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Благодарил (а): 0
Поблагодарили: 9 раз

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение raptorialfungus » Вт дек 11, 2012 3:25 pm

Alex писал(а):Open Hardware Monitor (Mozilla Public License 2.0 )

http://openhardwaremonitor.org/

Собственно вот. Запускается как веб-сервер на 8085 порту и выдаёт всё, что только можно о состоянии компьютера. Вопрос с мониторингом компьютеров закрыт или тут есть подводные камни?
Очень неплохо. Главное, чтобы заработало на том железе, на котором стоит MajorDoMo. У меня на рабочей машине под Windows 7 64bit всё вроде определилось хорошо. Вопрос в стабильности работы.
Вся инфа забирается с встроенного веб-сервера в json-формате по ссылке http://адрессервера:порт/data.json

P.S. Извините, опоздал ;)
Андрей
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение Alex » Вт дек 11, 2012 8:44 pm

Это работает!
Вложения
ohm.png
ohm
ohm.png (20.74 КБ) 23411 просмотров
cpu.png
cpu
cpu.png (6.82 КБ) 23411 просмотров
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение Urbas81 » Ср дек 12, 2012 12:45 am

Выложите пожалуйста, скрины, что куда писать, спасибо!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение Alex » Ср дек 12, 2012 10:46 am

Устанавливаем и запускаем OHM как сервер.

Option – Remote Web Server - Run

Настройки.

В веб-переменных вводим
--------------------------
Ссылка:
http://ip:8085/data.json
, где ip — адрес сервера

Шаблон поиска:
CPU Total", "Children[^^]{24}Value": "([^^]{4})
(это пример, - надо подбирать индивидуально)

Связанный объект.Свойство:
тут вводите свой объект.свойство

Интервал проверки:
60

Всё. Дальше работаем как с обычным объектом.
Вложения
mdm.png
mdm
mdm.png (67.89 КБ) 23390 просмотров
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение Alex » Ср дек 12, 2012 10:47 am

Теперь подробности. У меня в файле http://ip:8085/data.json были такие строки (первые строки). К ним я подобрал такие шаблоны (вторые строки). Это работает, но, на самом деле, шаблоны некорректные. Они не учитывают изменения Min величины и Value величины. В шаблонах жёстко заданы смещения (24, 26, 27). Если меняется количество цифр в Min или Value — то шаблон промахивается.

-----------------------------------
Help! Кто хорошо понимает — поправьте шаблоны и выложите сюда, пожалуйста. Они должны учитывать изменение количества цифр в Min или Value.
-----------------------------------

Core #1 - #2", "Children": [], "Min": "56,5 В°C", "Value": "59,8 В°C", "Max": "64,4 В°C",
Core #1 - #2", "Children[^^]{27}Value": "([^^]{4})

CPU Total", "Children": [], "Min": "1,0 %", "Value": "26,9 %", "Max": "100,0 %"
CPU Total", "Children[^^]{24}Value": "([^^]{4})

33, "Text": "Memory", "Children": [], "Min": "28,1 %", "Value": "29,0 %", "Max":
33, "Text": "Memory", "Children[^^]{25}Valu

Fan #1", "Children": [], "Min": "948 RPM", "Value": "964 RPM", "Max": "969 RPM
Fan #1", "Children[^^]{26}Value": "([^^]{4})

Fan #2", "Children": [], "Min": "3515 RPM", "Value": "3515 RPM", "Max": "3590 RPM"
Fan #2", "Children[^^]{27}Value": "([^^]{4})

Temperature", "Children": [], "Min": "42,0 В°C", "Value": "43,0 В°C", "Max": "43,0 В°C", "ImageURL
Temperature", "Children[^^]{27}Value": "([^^]{4})


Ещё одна проблема. На сколько я понял OHM имеет опцию автозагрузки, но автозагружаясь не стартует веб-сервер. Кто может - помогите разобраться.

Проблема номер 3. Это персонально к Сергею. В веб-переменных есть пункт «Действие при изменении: », но иногда нужно не только действие «при изменении», но и действие «при обновлении», даже если величина не изменилась.
Зачем это нужно. На скриншоте видно, что часть датчиков имеют тёмную нижнюю часть, а часть светлую. Тёмные — это живые датчики, т. е. те, которые получили обновление в течении положенного периода, а светлые — дохлые, обновление которых по какой то причине не произошло. Так вот. При обычном обновлении легко отследить факт обновления, а в случае веб-переменных

--------------
если в течение (например) 1 минуты не изменялась контролируемая величина, то негде взять информацию, о том, что виртуальный датчик жив! FAN CPU и HDD temp выглядят дохлыми, потому, что их значение не менялось в течении минуты. На самом деле они живые и «здоровье» у них 100%!
--------------
raptorialfungus
Сообщения: 75
Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Благодарил (а): 0
Поблагодарили: 9 раз

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение raptorialfungus » Ср дек 12, 2012 11:03 am

Urbas81 писал(а):Выложите пожалуйста, скрины, что куда писать, спасибо!
1. Создаем свойство(а). Например, ThisComputer.fan2 и ThisComputer.cputemp. Это будет скорость вентилятора и температура жесткого диска.
2. Запрашиваем в браузере файл с данными: http://localhost:8085/data.json
3. Ищем в этом файле id необходимых параметров по имени сенсора. Например для вентилятора 2 параметр id будет иметь значение 18, а для общей температуры процессора 32.

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

{"id": 18, "Text": "Fan #2", "Children": [], "Min": "1092 RPM", "Value": "1166 RPM", "Max": "1236 RPM", "ImageURL": "images/transparent.png"}
{"id": 32, "Text": "CPU Package", "Children": [], "Min": "36,0 В°C", "Value": "40,0 В°C", "Max": "45,0 В°C", "ImageURL": "images/transparent.png"}
4. Далее в каком-то периодическом методе (например, OnNewMinute) или в каком-то сценарии пишем следующий код (поправляя id сенсоров и имена переменных):

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

function searchJson($obj, $value)
{
global $sensorvalue;
    foreach($obj as $item)
    {
        foreach($item as $child)
        {
	    if(isset($child->id) && $child->id == $value)
    	    {
                $sensorvalue = $child->Value;
                return;
            }
	searchJson($child,$value);
        }
    }
return null;
}

$ch = curl_init('http://localhost:8085/data.json');                                                                      
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
          
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'18');
sg('ThisComputer.fan2',$sensorvalue);
searchJson($json,'32');
sg('ThisComputer.cputemp',$sensorvalue);
Можно, конечно, через web-переменные, но это слишком много однообразных запросов получается и мучение с регулярными выражениями.

Какой именно параметр возвращать указано вот в этой строке:

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

$sensorvalue = $child->Value;
$child->Text - название сенсора, $child->Min - минимальное значение параметра и т.д.

Сергей, просьба проинспектировать код, а то я не большой спец в php. С рекурсивностью я не перемудрил? Может можно было еще проще как-то из json'а всё это запросить ...

Андрей
Последний раз редактировалось raptorialfungus Ср дек 12, 2012 12:56 pm, всего редактировалось 1 раз.
Андрей
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение Urbas81 » Ср дек 12, 2012 12:25 pm

Спасибо всем, буду изучать!
dimitriy
Сообщения: 14
Зарегистрирован: Пн ноя 26, 2012 5:39 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Мониторинг системных ресурсов локально и через сеть

Сообщение dimitriy » Ср дек 12, 2012 12:50 pm

Вот это находка. Полез разбираться :)
Ответить