From 4344fa887336ecd2dde9e4503e8c24193e3205ac Mon Sep 17 00:00:00 2001 From: Vitali Date: Thu, 17 Sep 2026 19:04:11 +0700 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=D1=81=D0=BB=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8=20=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=BE=D0=BC=20M?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прошивка её пока не показывает - на 72x40 нет места под третий показатель. Это намеренно: неизвестный ключ прошивка игнорирует, поэтому агента можно обновлять независимо от плат. Память берётся у железа с именем Total Memory - это физическая память. У соседнего Virtual Memory датчик называется точно так же, но считает вместе с файлом подкачки и показывает заниженную цифру: 87% против фактических 97%. Co-Authored-By: Claude Opus 5 --- CPU_temp/README.md | 11 ++++++++++- CPU_temp/agent/cpu_temp_agent.ps1 | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CPU_temp/README.md b/CPU_temp/README.md index 3ae7c3b..3d18ca1 100644 --- a/CPU_temp/README.md +++ b/CPU_temp/README.md @@ -299,13 +299,22 @@ Start-ScheduledTask -TaskName 'CPU Temp Agent' Агент шлёт плате по одной строке в секунду, в конце — перевод строки: ``` -T=67.0;L=34 +T=67.0;L=34;M=97 ``` | Ключ | Смысл | |---|---| | `T` | температура CPU Package, °C | | `L` | общая загрузка CPU, % | +| `M` | загрузка оперативной памяти, % | + +Ключ `M` агент шлёт, а прошивка пока **не показывает** — на экране 72×40 нет +места для третьего показателя. Это и есть демонстрация расширяемости: агента +обновили, платы не трогали, ничего не сломалось. + +Берётся он у железа с именем `Total Memory` — это физическая память. У соседнего +`Virtual Memory` датчик называется точно так же, но считает вместе с файлом +подкачки и показывает заниженную цифру. Неизвестные ключи прошивка молча игнорирует, поэтому протокол расширяем: можно добавить, например, `G=` для видеокарты, не трогая уже прошитые платы. diff --git a/CPU_temp/agent/cpu_temp_agent.ps1 b/CPU_temp/agent/cpu_temp_agent.ps1 index e073bde..83fdeec 100644 --- a/CPU_temp/agent/cpu_temp_agent.ps1 +++ b/CPU_temp/agent/cpu_temp_agent.ps1 @@ -29,6 +29,7 @@ Add-Type -Path $LhmPath $computer = New-Object LibreHardwareMonitor.Hardware.Computer $computer.IsCpuEnabled = $true +$computer.IsMemoryEnabled = $true $computer.Open() function Get-CpuStats { @@ -36,10 +37,15 @@ function Get-CpuStats { $temp = $null $load = $null + $mem = $null foreach ($hw in $computer.Hardware) { foreach ($s in $hw.Sensors) { if ($s.SensorType -eq 'Temperature' -and $s.Name -eq 'CPU Package') { $temp = $s.Value } if ($s.SensorType -eq 'Load' -and $s.Name -eq 'CPU Total') { $load = $s.Value } + # Имя железа проверяем обязательно: у "Virtual Memory" датчик зовётся + # точно так же, но считает физическую память вместе с файлом подкачки + # и показывает заниженную цифру. + if ($hw.Name -eq 'Total Memory' -and $s.SensorType -eq 'Load' -and $s.Name -eq 'Memory') { $mem = $s.Value } } } @@ -48,6 +54,7 @@ function Get-CpuStats { return @{ Temp = $temp Load = $load + Mem = $mem } } @@ -73,7 +80,13 @@ function Assert-SensorsAvailable { # Форматирование только через InvariantCulture: в русской локали вышло бы # "T=67,0", и atof на плате прочитал бы 67, молча потеряв дробную часть. function Format-StatsLine($stats) { - return [string]::Format([cultureinfo]::InvariantCulture, 'T={0:F1};L={1}', [double]$stats.Temp, [int][math]::Round([double]$stats.Load)) + $line = [string]::Format([cultureinfo]::InvariantCulture, 'T={0:F1};L={1}', [double]$stats.Temp, [int][math]::Round([double]$stats.Load)) + # Память необязательна: если датчика нет, строка просто идёт без ключа M, + # и прошивка этого не заметит. + if ($null -ne $stats.Mem) { + $line += [string]::Format([cultureinfo]::InvariantCulture, ';M={0}', [int][math]::Round([double]$stats.Mem)) + } + return $line } # Номер порта не хардкодим: он меняется при перетыкании в другой разъём.