Создаем панель мониторинга состояния ПК из Rainmeter и HWiNFO64

Опубликовано: / Просмотрено: 23 /

И вначале реклама, небольшой блок. Прошу не сердиться и не вносить ее в фильтры блокировщиков.

подробнее о рекламодателе можно узнать внутри блока
Спасибо. А теперь сам материал.

Несколько лет назад мною был написан материал про панель мониторинга ПК с использованием Aida64 и внешнего дисплея. Вот здесь. Если вкратце - идея была "под рукой" видеть и оценивать состояние работы пк в момент работы. Это и температуры, и нагрузку, и свободное место на жестком диске - актуальную информацию о состоянии системы.

Для этого существует множество бесплатных и платных программ. Некоторые из них позволяют создать панели с виджетами для экрана с, грубо говоря, онлайн "живой" информацией текущего состояния. В том материале я приводил пример как это сделать на Aida64 с использованием второго дисплея. А также упоминал различные экраны с Aliexpress (как готовые так и под сборку), которые можно встроить в системный блок. Например, от бренда Wisecoco, у них можно приобрести даже гибкий дисплей!. Вот ссылка на пример таких дисплеев (Реклама: Erid: Kra23ZRVx ООО "АЛИБАБА.КОМ (РУ)" ИНН 7703380158 ). К слову у Wisecoco уже появились дисплеи с подключением по одному кабелю.

Так как за это время я так и не приобрел такого рода дисплей, замечу, что самые интересные модели - это вытянутые и с e-ink чернилами, то и здесь будет использоваться старенький мини-телевизор eplutus, с нестандартным разрешением 1360x768 пикселей. Если выбирать идеальный вариант, то, на мой взгляд, лучше всего смотрятся вытянутые экраны на 11 дюймов - https://ali.click/09b6uy?erid=2SDnjd8nKVr (Реклама. ООО "АЛИБАБА.КОМ (РУ)" ИНН 7703380158). 

Собственно я бы и дальше пользовался Aida64, если бы не внезапный апгрейд видеокарты. Вместо старой, 2010 года, AMD Radeon  HD6870, взял себе Intel Arc b580 12Гб. Одна из доступных производительных видеокарт, недооценный конкурент AMD или NVIDIA, а за счет этого и по цене ниже (хотя мечтал обновиться на  Gigabyte AMD Radeon RX 9060XT). В ААА-игры я не играю, максимум условный ETS2 и градостроительный симулятор, а вот видео в 2К посмотреть и в графических редакторах поработать - она справляется шикарно и даже не нагревается (взял версию на 3 вентилятора от maxsun). Но, к сожалению, Aida64 видит только малую часть датчиков, что для было мало. И перерыв и перелопатив множество сайтов и форумов, я узнал, что HWiNFO64 вполне все датчики корректно отображает, вплоть до FPS и скорости вращения вентиляторов, что для меня норм.

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


Решение от Intel

Так вот, в самом HWiNFO есть свои встроенные панели, но в бесплатной версии вроде бы отображает не все, да и выглядит как-то просто без кастомизации (могу быть не прав). И поэтому большинство использует связку с Rainmeter. Rainmeter - шикарная бесплатная и мощная утилита, которая позволяет создавать любые плавающие виджеты с отображением любой информации. Все зависит от того, какой "Скин" и с чем вы подключите. Собственно для отображения информации с hwinfo их нужно связать. В интернете множество статей подразумевают специальный плагин и включения опции shared memory в самом HWiNFO (которое в бесплатной версии только на 12 часов), однако, если открыть официальную документацию или раздел на сайте Rainmeter, то там сказано, что можно использовать и без плагина - https://docs.rainmeter.net/tips/hwinfo/ , программа записывает в реестр каждые 2 секунды информацию (можно изменить) и в скине просто отобразить информацию оттуда (считать значения ветки реестра). Честно говоря - я не могу уверенно сказать на сколько это безопасно для износа SSD и нагрузки системы, в документации говорят, что это незначительно. Но в принципе если размышлять логически, тот же браузер постоянно пишет в кеш что-либо, а фоновых задач в системе очень много, в том числе и с логгированием - и в теории hwinfo не снизит значительно ресурс TBW или нагрузит систему. Найти информацию, что это очень плохо и все ломается и тормозит мне не удалось. Тестировал несколько дней и проблем в работе системы не обнаружил или каких-то тормозов.

Итак, идем в настройки HWiNFO, точнее после установки выбираем запуск в режиме датчиков, а потом идем в настройки, в них выбираем "основные параметры" (кнопка справа) и выбираем "Свертывать окно при запуске", "Не закрывать, а свертывать", "Запускать вместе с Windows". Далее ок и заходим во вкладу Гаджет HWiNFO и выбираем, что мы хотим отображать. Для этого нажимаем на строку и отмечаем "Включить отчеты в гаджет" и "Значение отчета в гаджете". Индекс можно не трогать при первой настройке, но если захотите потом добавить еще пункты, лучше записать последний индекс и задавать его впоследствии, чтобы не сломать индексы ранее и их порядок в реестре. 

    

 

Теперь самое заморочное и сложное. Узнаем в реестре значения и показатели. Можно через командную строку командами reg query HKEY_CURRENT_USER\SOFTWARE\HWiNFO64\VSB или reg query HKEY_LOCAL_MACHINE\SOFTWARE\HWiNFO64\VSB, или в соответствующих ветках реестра через regedit. 

Устанавливаем Rainmeter, отключаем стандартные скины и создаем ini файл своего скина в папке Документы -> Rainmeter -> Skins -> Названиескина -> Названиепанели.ini (например Documents\Rainmeter\Skins\spooky\Dashboard.ini). 

И теперь начинаем верстать сам скин в любом текстовом редакторе, но в кодировке ANSI Windows-1251. У меня это Visual Studio Code. 

для удобства комментируем строки с помощью ; 

Вначале общие параметры. Размеры, шрифты, цвета, названия

[Rainmeter]
Update=2000
AccurateText=1
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,1

[Metadata]
Name=MyDashboard
Author=MyName
Information=Full monitor sensors for 1380x768
Version=5.0

[Variables]
; --- КОНФИГУРАЦИЯ ---
RegPath=SOFTWARE\HWiNFO64\VSB
Drive1=C:  
Drive2=D:
 
; --- ЦВЕТА ---
FontMain=Segoe UI
FontTech=Segoe UI
ColorBlue=0,180,255,255
ColorRed=255,60,60,255
ColorGreen=50,220,100,255
ColorOrange=255,165,0,255
ColorYellow=255,200,50,255
ColorWhite=255,255,255,230
ColorGrey=150,150,150,255
ColorDark=20,20,30,200
ColorBorder=60,60,70,200
ColorBarBg=50,50,60,100
 
; --- РАЗМЕРЫ ---
W=1380
H=768
ColWidth=330
Gap=15
TopBarH=100

И далее уже записываем, грубо говоря, переменные с показателями, они же Measure.

Стандартные, например время, свободное место на диске - можно взять из стандартных, остальное указываем как в реестре. Название показателя будет использоваться уже в верстке панели. Можно использовать формулы, графики, гистограммы - вообще здесь очень много возможностей, можно почитать в справке на сайте - https://docs.rainmeter.net/manual/measures/  там очень много уже готовых возможностей, без hwinfo. Rainmeter поддерживает: формулы, графики, гистограммы, вычисления.

Например, вот получение информации о занятой памяти GPU и калькулятор деления значения на 1024 для получения Гб. А также диаграмма загрузки по Arc B580 - еще раз, копипастить мой код бессмысленно — у каждого будут свои значения реестра. Я привожу примеры исключительно для понимания логики.

; --- GPU (Intel Arc B580) ---
[MeasureGPUTempGlobal]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw45

[MeasureGPUTempCore]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw46

[MeasureGPUTempMem]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw47

[MeasureGPUTempCoreVR]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw48

[MeasureGPUTempMemVR]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw49

[MeasureGPUTempSAVR]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw50

[MeasureGPUVolt]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw51

[MeasureGPUFan]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw52

[MeasureGPUPowerTGP]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw53

[MeasureGPUPowerMem]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw54

[MeasureGPUPowerTBP]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw55

[MeasureGPUClock]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw56

[MeasureGPUMemClock]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw57

[MeasureGPUUsage]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw58
MinValue=0
MaxValue=100

[MeasureGPUMemUsage]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw59
MinValue=0
MaxValue=100

[MeasureGPUMemAlloc]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw60

[MeasureGPUMemAllocGb]
Measure=Calc
Formula=MeasureGPUMemAlloc / 1024

[MeasureGPUMemAvail]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw61

[MeasureGPUMemAvailGb]
Measure=Calc
Formula=MeasureGPUMemAvail / 1024

[MeasureGPUMemTotal]
Measure=Calc
Formula=MeasureGPUMemAlloc + MeasureGPUMemAvail

[MeasureGPUMemTotalGb]
Measure=Calc
Formula=MeasureGPUMemAllocGb + MeasureGPUMemAvailGb

[MeasureGPUPCIeSpeed]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw62

[MeasureGPUVRAMReadBW]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw63

[MeasureGPUVRAMWriteBW]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw64

; --- FPS (PresentMon) ---
[MeasureFPS]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw67

[MeasureFPSDisplayed]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw68

[MeasureFrameTime]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw69

[MeasureGPUBusy]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw70

[MeasureGPUWait]
Measure=Registry
RegHKey=HKEY_CURRENT_USER
RegKey=#RegPath#
RegValue=ValueRaw71

В разметке вывода информации используем данные Measure.

Начинаем верстать саму панель

Задаем параметры меток и визуал

[StyleLabel]
FontFace=#FontMain#
FontSize=10
FontColor=#ColorGrey#
AntiAlias=1

[StyleValue]
FontFace=#FontMain#
FontSize=10
FontColor=#ColorWhite#
FontWeight=600
AntiAlias=1

[StyleValueBig]
FontFace=#FontTech#
FontSize=24
FontWeight=700
FontColor=#ColorWhite#
AntiAlias=1
StringAlign=Center

[StyleBarBG]
X=30
Y=5R
W=270
H=8
SolidColor=#ColorBarBg#

[StyleBarFill]
X=0r
Y=0r
W=270
H=8

[MeterBG]
Meter=Image
ImageName=bg.jpg
W=#W#
H=#H#
PreserveAspectRatio=2
SolidColor=0,0,0,255

[MeterHeaderBar]
Meter=Shape
Shape=Rectangle 0,0,#W#,#TopBarH# | Fill Color #ColorDark# | StrokeWidth 0

; 1.1 Время и Uptime
[MeterTime]
Meter=String
MeasureName=MeasureTime
MeasureName2=MeasureDate
X=20
Y=25
FontFace=#FontMain#
FontSize=18
FontWeight=300
FontColor=#ColorWhite#
AntiAlias=1
Text="%2  %1"

[MeterUpTime]
Meter=String
MeasureName=MeasureUptime
X=20
Y=55
FontFace=#FontMain#
FontSize=14
FontWeight=300
FontColor=#ColorGrey#
AntiAlias=1
Text="время работы: %1"

; =======================================
; КОЛОНКА 3: GPU (Intel Arc B580)
; =======================================
[MeterCol3Box]
Meter=Shape
Shape=Rectangle (45+(#ColWidth#*2)),#TopBarH#,#ColWidth#,650,5 | Fill Color #ColorDark# | StrokeWidth 1 | Stroke Color #ColorBorder#

[MeterGPULogo]
Meter=Image
ImageName=intel_arc.png
X=((18+(#ColWidth#*2)) + #ColWidth#/2)
Y=(#TopBarH#+20)
W=68
H=68
PreserveAspectRatio=1


; --- КРУГОВАЯ ДИАГРАММА ---
[MeterGPURingBG]
Meter=Roundline
X=(((#ColWidth#*2)) + #ColWidth#/2 -34)
Y=(#TopBarH#+100)
W=160
H=160
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=65
LineLength=78
Solid=1
LineColor=#ColorBorder#
AntiAlias=1

[MeterGPURing]
Meter=Roundline
MeasureName=MeasureGPUUsage
X=0r
Y=0r
W=160
H=160
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=65
LineLength=78
Solid=1
LineColor=#ColorBlue#
AntiAlias=1

[MeterGPUPercent]
Meter=String
MeterStyle=StyleValueBig
MeasureName=MeasureGPUUsage
Text="%1%"
FontColor=#ColorBlue#
X=80r
Y=55r

; --- ДАННЫЕ GPU ---
; --- FPS ---
[MeterGPUFPS]
Meter=String
MeterStyle=StyleValue
MeasureName=MeasureFPS
Text="FPS: %1"
X=50R
Y=120r
FontSize=16
Leading=8
StringAlign=Right


[MeterGPUTempIcon]
Meter=Image
ImageName=thermometer.png
X=(45+(#ColWidth#*2)+20)
Y=15R
W=55
H=55
PreserveAspectRatio=1

[MeterGPUDataBlock]
Meter=String
MeterStyle=StyleValue
MeasureName=MeasureGPUTempCore
MeasureName2=MeasureGPUTempMem
MeasureName3=MeasureGPUFan
Text="Чип: %1°C#CRLF#Память: %2°C#CRLF#Вентиляторы: %3 RPM"
X=0R
Y=-5r
FontSize=16
Leading=8
StringAlign=Left

; --- VRAM Bar ---
[MeterGPUVRAMLabel]
Meter=String
MeterStyle=StyleLabel
Text="VRAM (Память GPU)"
X=(45+(#ColWidth#*2)+20)
Y=25R
FontSize=10

[MeterGPUVRAMBarBG]
Meter=Image
X=(45+(#ColWidth#*2)+30)
Y=5R
W=270
H=8
SolidColor=#ColorBarBg#

[MeterGPUVRAMBar]
Meter=Bar
X=0r
Y=0r
W=270
H=8
MeasureName=MeasureGPUMemUsage
BarColor=#ColorBlue#
BarOrientation=Horizontal

[MeterGPUVRAMFreeText]
Meter=String
MeterStyle=StyleLabel
MeasureName=MeasureGPUMemAllocGb
Text="Использовано: %1 Гб"
Autoscale=1
NumOfDecimals=2
X=(45+(#ColWidth#*2)+30)
Y=3R
FontSize=14

[MeterGPUVRAMText]
Meter=String
MeterStyle=StyleLabel
MeasureName=MeasureGPUMemAlloc
MeasureName2=MeasureGPUMemAvailGb
MeasureName3=MeasureGPUMemTotalGb
MeasureName4=MeasureGPUMemUsage
Text="Свободно: %2 Гб#CRLF#Всего: %3 Гб"
Autoscale=1
NumOfDecimals=2
X=(45+(#ColWidth#*2)+30)
Y=3R
FontSize=12

[MeterGPUDataBlockTech]
Meter=String
MeterStyle=StyleValue
MeasureName=MeasureGPUClock
MeasureName2=MeasureGPUMemClock
MeasureName3=MeasureGPUPowerTBP
Text="GPU Clock: %1 MHz#CRLF#Mem Clock: %2 MHz#CRLF#Мощность: %3 W"
X=(45+(#ColWidth#*2)+30)
Y=60r
FontSize=9
Leading=8
StringAlign=Left

Полный код всей панели я опубликовал в GitHub здесь. https://github.com/spookyru/spookyRainmeterHWinfoPanelARC 

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

Эта панель далека от идеала, как и описанный мной здесь текст. И да, буду честен, чтобы все значения из реестра правильно и грамотно отобразить в датчиках, я использовать ИИ github copilot (модель cloude connect), так как их слишком много для ручного перебора, но отмечу, что финальную верстку создавать лучше и придется вручную, но это достаточно интересно и чем-то напоминает CSS :-) .

Подчеркну еще раз, что возможностей Rainmeter очень много и из справки вы можете создать мощный ммультимониторинговый комбайн по отображению любой информации.

Ну и да, важно, в самом rainmeter вы заходите в управление, выбираете скин. Располагаете его в нужном месте экрана или втором мониторе\дисплее и после внесения правок, в этом окне, нажимаете "Обновить все", чтобы увидеть изменения.

Итого финальный результат у меня выглядит так:

И замечу, что буду ждать, когда Aida добавит полноценную поддержку ARC, все таки мне нравится моя предыдущая панель, чем дергать реестр лишний раз. Но тем не менее - это на бесплатных утилитах и рабочее решение, которое мне тоже нравится :-)

Ну и еще раз - лучше всего будут смотреться специальные дисплеи, особенно вытянутые, типа как этот на 11 дюймов https://ali.click/09b6uy?erid=2SDnjd8nKVr (Реклама. ООО "АЛИБАБА.КОМ (РУ)" ИНН 7703380158)

Про aida здесь - одна из самых популярных и просматриваемых на сайте


Теги: