Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] как получать температуру с устройств (проц,мать и .т.д) и записывать в лог? (http://forum.oszone.net/showthread.php?t=146066)

andr_mozg 24-07-2009 11:02 1176344

как получать температуру с устройств (проц,мать и .т.д) и записывать в лог?
 
Есть потребность в скрипте , который ковсему прочему, мог бы в лог писать еще и температуру устройств, не вреальном времени а хотябы в тот момент когда скрипт отрабатывает. Главное условие что бы это было тихо и без запуска приложений с GUI, если это будит сторонняя программа но работающая через командную строку .. то подайдет...

andr_mozg 24-07-2009 12:43 1176444

программу нашол, (hwmonitor ) но как ее заставить делать лог в скрытом режими?? что бы она не отображалась не в трее не открывала окно.

andr_mozg 24-07-2009 17:31 1176722

температупа с HDD http://www.autoitscript.com/forum/in...mperature&st=0
температура GPU nVidia http://www.autoitscript.com/forum/in...1&#entry587389

CPU - ????

timsky 24-07-2009 20:05 1176873

http://www.cpuid.com/pcwizard.php - есть дамп в текст.

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

andr_mozg 27-07-2009 11:00 1178748

про эти пронраммы я прекрасно знаю, и про многии другие, но они не подходят. :(

Belfigor 27-07-2009 15:31 1179011

Вложений: 1
Поройся в CompInfo.au3, про температуру не помню но помню но в целом, инфу о процессоре, видяхе там можно посмотреть.

andr_mozg 27-07-2009 16:07 1179040

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

timsky 28-07-2009 03:33 1179496

Цитата:

Цитата andr_mozg
Есть потребность в скрипте , который ковсему прочему, мог бы в лог писать еще и температуру устройств, не вреальном времени а хотябы в тот момент когда скрипт отрабатывает. Главное условие что бы это было тихо и без запуска приложений с GUI, если это будит сторонняя программа но работающая через командную строку .. то подайдет... »

Цитата:

Цитата andr_mozg
про эти пронраммы я прекрасно знаю, и про многии другие, но они не подходят »

Ты сам себе противоречишь. Почему не подходят? Есть ком. строка, есть дамп...

amel27 28-07-2009 06:30 1179523

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

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

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

В скрипте использована библиотека SysTray_UDF с форума оффсайта

Режим LOG-файла >>
Код:

#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

REG-файл настроек >>
Код:

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

REG-файл настроек >>
Код:

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 1179706

Цитата:

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

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

andr_mozg 30-07-2009 10:02 1181289

есть очень правельная програмка HWMonitor
по Ctrl+S она все сохроняет. Проблема втом что некак немогу зделать так чтобы она запускалась скрыто и сохраняла этот файл.
Получается только запускать свернуто а как дальше работать ума не преложу.... Хелп, помогити плиз сграбить показания с данно софтинки.

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

amel27 30-07-2009 12:07 1181381

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 1181441

вот..... это реально то что надо.... спасибо бальшое.... буду разбирать и делать работу над ошибками....

timsky 30-07-2009 17:27 1181655

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 1181687

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

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

crashtuak 30-07-2009 21:50 1181896

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


Время: 07:25.

Время: 07:25.
© OSzone.net 2001-