Войти

Показать полную графическую версию : [решено] как получать температуру с устройств (проц,мать и .т.д) и записывать в лог?


andr_mozg
24-07-2009, 11:02
Есть потребность в скрипте , который ковсему прочему, мог бы в лог писать еще и температуру устройств, не вреальном времени а хотябы в тот момент когда скрипт отрабатывает. Главное условие что бы это было тихо и без запуска приложений с GUI, если это будит сторонняя программа но работающая через командную строку .. то подайдет...

andr_mozg
24-07-2009, 12:43
программу нашол, (hwmonitor (http://www.cpuid.com/hwmonitor.php) ) но как ее заставить делать лог в скрытом режими?? что бы она не отображалась не в трее не открывала окно.

andr_mozg
24-07-2009, 17:31
температупа с HDD http://www.autoitscript.com/forum/index.php?showtopic=91067&hl=temperature&st=0
температура GPU nVidia http://www.autoitscript.com/forum/index.php?showtopic=81912&st=0&p=587389&hl=Global%20$iOldTemp = 0&fromsearch=1&#entry587389

CPU - ????

timsky
24-07-2009, 20:05
http://www.cpuid.com/pcwizard.php - есть дамп в текст.

еще есть everest http://www.lavalys.com/index.php?lang=en , он тоже должен уметь это делать ;)

andr_mozg
27-07-2009, 11:00
про эти пронраммы я прекрасно знаю, и про многии другие, но они не подходят. :(

Belfigor
27-07-2009, 15:31
Поройся в CompInfo.au3, про температуру не помню но помню но в целом, инфу о процессоре, видяхе там можно посмотреть.

andr_mozg
27-07-2009, 16:07
я всю ее перерыл, много хорошего пользую, про температуро там нет нечего.. :(

timsky
28-07-2009, 03:33
Есть потребность в скрипте , который ковсему прочему, мог бы в лог писать еще и температуру устройств, не вреальном времени а хотябы в тот момент когда скрипт отрабатывает. Главное условие что бы это было тихо и без запуска приложений с GUI, если это будит сторонняя программа но работающая через командную строку .. то подайдет... »
про эти пронраммы я прекрасно знаю, и про многии другие, но они не подходят »
Ты сам себе противоречишь. Почему не подходят? Есть ком. строка, есть дамп...

amel27
28-07-2009, 06:30
andr_mozg, штатной поддержки в Windows нет (пока?), Intel никаких (бесплатных) API/SDK не предоставляет, многие графические тулзы лишь реклама своих SDK, которые продаются уже за приличные деньги... Для надоверчивых - официальный ответ (http://software.intel.com/en-us/forums/watercooler-catchall/topic/64975/) на оффсайте Intel... отсюда вывод: единственный выход писать AutoIT-врапперы для доступных графических утилит... Благо, AutoIT под такие цели и "заточен"... ;)

Мне приглянулась прога RightMark CPU Clock Utility (http://cpu.rightmark.org/products/rmclock.shtml) – простой дизайн, много настроек, поддержка лога... Жаль, давно не обновлялась, но вроде пока справляется. Проверил прогу в двух режимах: режиме вывода данных в лог-файл (есть возможность просмотреть все предыдущие значения) и режиме оперативного чтения данных - оба режима легко автоматизируются. Каждый режим соответствует определенной настройке программы, поэтому перед запуском EXE нужно восстановить их в ветку HKCU\Software\RightMark (например, из REG-файла). Общий алгоритм скрипта:

0. Настаиваем RMClock в нужный режим (в скрипте опущено)
1. Запускаем RMClock.EXE
2. Ожидаем и удаляем иконку из трея
3. Входим в цикл чтения данных (из файла или окна программы)

В скрипте использована библиотека SysTray_UDF (http://www.autoitscript.com/forum/index.php?showtopic=13704) с форума оффсайта

#include <SysTray_UDF.au3>

; Расположение RMClock
$RMClockDir = @ProgramFilesDir &"\RMClock"
$RMClockExe = $RMClockDir &"\RMClock.Exe"
$RMClockLog = $RMClockDir &"\RMClock.Log"
; Запуск RMClock
$PID = Run($RMClockExe, $RMClockDir)
ProcessWait("RMClock.exe")
Sleep(1000) ; минимальный период обновления лога

Global $hLog = FileOpen($RMClockLog, 0)
Global $aCPU, $iCPU=0, $iTmp=0

While 1
; Читаем строку из лог-файла
$sLine = FileReadLine($hLog)
If @error = -1 Then
If ProcessWaitClose("RMClock.exe", 1) Then ExitLoop
ContinueLoop
EndIf
; Разбор строки
$aCPU = StringRegExp($sLine, "(?:CPU: |CoreTemp: )([\d.]+)", 3)
If @error Then ContinueLoop
; Подсчет средней температуры по всем ядрам
If $iTmp>0 And $aCPU[0]=0 Then
; Вывод данных/сброс счетчиков
ConsoleWrite("Avarage CPU Temperature: "& $iTmp/($iCPU+1) &@CRLF)
$iTmp=0
EndIf
$iCPU = $aCPU[0]
$iTmp+= $aCPU[1]
Wend
REGEDIT4

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowPerfLevel"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowFreqInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowLoadInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowCriticalBalloons"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"TaskbarButton"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"RunMinimized"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"EnableLogging"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"LoggingFlags"=dword:000000bf

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ActivePage"=dword:00000001

#include <SysTray_UDF.au3>
AutoItSetOption("WinDetectHiddenText",1)

; Расположение RMClock
$RMClockDir = @ProgramFilesDir &"\RMClock"
$RMClockExe = $RMClockDir &"\RMClock.Exe"
; Запуск RMClock
$PID = Run($RMClockExe, $RMClockDir)
; Ожидаем и удаляем иконку из трея
Do
Sleep(100)
$iTrayIcon = _SysTrayIconIndex("RMClock.exe")
Until $iTrayIcon >=0
_SysTrayIconRemove($iTrayIcon)

; Цикл чтения/разбора текста окна
While ProcessExists($PID)
$iTmp = 0
$sTxt = WinGetText("RightMark")
$aTmp = StringRegExp($sTxt, "Core temp\.[\n\r]+([\d.]+)", 3)
; Суммируем по всем ядрам
For $i=0 To UBound($aTmp)-1
$iTmp += $aTmp[$i]
Next
$iTmp = $iTmp/UBound($aTmp) ; Среднее значение

ConsoleWrite("Avarage CPU Temperature: "& $iTmp &@CRLF)
Sleep(1000)
WEnd
REGEDIT4

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowPerfLevel"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowFreqInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowLoadInTray"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ShowCriticalBalloons"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"TaskbarButton"=dword:00000000

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"RunMinimized"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"ActivePage"=dword:00000001

[HKEY_CURRENT_USER\Software\RightMark\RMClock]
"EnableLogging"=dword:00000000

ВАЖНО! Не стоит жать все подряд и менять настройки CPU/MB! RMClock работает на низком уровне и результат непредсказуем!

andr_mozg
28-07-2009, 12:31
andr_mozg, штатной поддержки в Windows нет (пока?), Intel никаких (бесплатных) API/SDK не предоставляет, многие графические тулзы лишь реклама своих SDK, которые продаются уже за приличные деньги... Для надоверчивых - официальный ответ на оффсайте Intel... отсюда вывод: единственный выход писать AutoIT-врапперы для доступных графических утилит... Благо, AutoIT под такие цели и "заточен"... »

спасибо... все стало понятно.... программа не плохая, поковыряю ее...

andr_mozg
30-07-2009, 10:02
есть очень правельная програмка HWMonitor (http://www.cpuid.com/hwmonitor.php)
по Ctrl+S она все сохроняет. Проблема втом что некак немогу зделать так чтобы она запускалась скрыто и сохраняла этот файл.
Получается только запускать свернуто а как дальше работать ума не преложу.... Хелп, помогити плиз сграбить показания с данно софтинки.

Если получится все сделать тихо и без тормозов с этой программой, то тему можно будит считать решонной....

amel27
30-07-2009, 12:07
andr_mozg, от Ctrl+S толку мало, т.к. в скрытое окно Send() не принимает, но можно прочитать данные прямо с контрола SysTreeView32:
#include <GuiTreeView.au3>

$sHWMon_DIR = @ProgramFilesDir &"\HWMonitor"
$sHWMon_EXE = $sHWMon_DIR & "\HWMonitor.exe"
$iHWMon_PID = Run($sHWMon_EXE, $sHWMon_DIR, @SW_MINIMIZE)

WinWait("CPUID")
WinSetState("CPUID", "", @SW_HIDE)

While ProcessExists($iHWMon_PID)
$aTmp = _CPUID_GetTemp()
ConsoleWrite("------"& @HOUR &":"& @MIN &":"& @SEC &"-------"& @CRLF)
For $i=1 To $aTmp[0][0]
ConsoleWrite($aTmp[$i][0] &@TAB&":"& $aTmp[$i][1] &" | "& $aTmp[$i][2] &" | "& $aTmp[$i][3] &@CRLF)
Next
Sleep(1000)
WEnd

Func _CPUID_GetTemp()
Local $hCPU = ControlGetHandle("CPUID", "", "SysTreeView321")
Local $iCnt, $sTxt, $aTxt, $hTmp=0, $aOut[1][4]=[[0]]

While 1
$hTmp = _GUICtrlTreeView_FindItem($hCPU, "Temperatures", False, $hTmp)
If $hTmp = 0 Then ExitLoop

$iCnt = _GUICtrlTreeView_GetChildCount($hCPU, $hTmp)
For $j=1 To $iCnt
$hTmp = _GUICtrlTreeView_GetNext($hCPU, $hTmp)
$sTxt = _GUICtrlTreeView_GetText($hCPU, $hTmp)
$aTxt = StringRegExp($sTxt, "\s*(.*?)\s*(\d+) +°C", 3)
If UBound($aTxt) <> 6 Then ContinueLoop
$aOut[0][0]+=1
ReDim $aOut[$aOut[0][0]+1][4]
$aOut[$aOut[0][0]][0] = $aTxt[0]
$aOut[$aOut[0][0]][1] = $aTxt[1]
$aOut[$aOut[0][0]][2] = $aTxt[3]
$aOut[$aOut[0][0]][3] = $aTxt[5]
Next
WEnd

Return $aOut
EndFunc

andr_mozg
30-07-2009, 13:02
вот..... это реально то что надо.... спасибо бальшое.... буду разбирать и делать работу над ошибками....

timsky
30-07-2009, 17:27
andr_mozg, ну ты даешь, чувак. HWMonitor - программа того же разработчика, что и PCWizard и последняя постоянно обновляется вслед за HWMonitor и умеет все то же, что и HWMonitor, и намного больше.
PCWizard я тебе еще в первом посте дал и сказал, что это то, что тебе нужно. Зачем просить совета, если потом даже не обратить на него внимание?

Запускаешь вот с такой ком. строкой: "PC Wizard.exe" /R T1 C12 report.txt и на выходе в папке проги получешь файл с таким содержимым:
PC Wizard 2009 Version 1.88
------------------------------------------------------------------------------------------

Owner: User
Organisation: Home
User: Admin
Operating System: Microsoft Windows XP Professional 5.01.2600 Service Pack 3
Report Date: четверг 30 июля 2009 at 18:23

------------------------------------------------------------------------------------------


<<< Voltage, Temperature and Fans >>>
> Hardware Monitoring : ITE IT8718F
> Voltage CPU : 1.31 V
> +3.3V Voltage : 3.30 V
> +5V Voltage : 5.12 V
> +12V Voltage : 1.55 V
> VTT : 1.81 V
> VBAT : 3.14 V
> Chassis Fan : 2184 rpm
> FAN3 : 1785 rpm
> Processor Temperature : 47 °C
> Mainboard Temperature : 37 °C
> Processor : Thermal Diode
> Intel Pentium Dual-Core (Core 1) : 44 °C
> Intel Pentium Dual-Core (Core 2) : 44 °C
> Hard Disk Monitoring : S.M.A.R.T
> Hard Disk SAMSUNG HD501LJ : 37 °C

------------------------------------------------------------------------------------------
***** End of report *****

Никаких кнопок жать не надо. только командная строка и все, что умеет определять HWMonitor умеет определять и PCWizard/

andr_mozg
30-07-2009, 18:00
timsky, вот промаргал я эту программу. Вот сравниваю что лудше подходит мне, в ней самый большой косяк ее размер совсеми библиотеками... но функцыонал.... :)

всетаки она тежеловата для меня.... но все равно спасибо .... буду в следующий раз смореть лудше чтоб не просмотреть не чего...

crashtuak
30-07-2009, 21:50
andr_mozg, с PC Wizard 2009 может и легче достичь поставленную тобой цель, но когда будешь снимать показатели "в живую" с гуи программы, получится намного быстрее, и инфа будет более свежая (если так надо, ну а если не надо... :)).




© OSzone.net 2001-2012