@byxiaoxie2 月前

11/15
23:40
Home

PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

PVE 添加 CPU GPU Nvme 温度显示 (AMD CPU)

1. 安装必要的软件包
apt-update && apt-get install lm-sensors -y

2. 安装完成后执行指令 [sensors]
    root@pve:~# sensors
    amdgpu-pci-0500
    Adapter: PCI adapter
    vddgfx:        1.44 V  
    vddnb:       937.00 mV 
    edge:         +50.0°C  
    PPT:          14.00 W  

    nvme-pci-0400
    Adapter: PCI adapter
    Composite:    +53.9°C  (low  =  -5.2°C, high = +79.8°C)
                        (crit = +84.8°C)

    k10temp-pci-00c3
    Adapter: PCI adapter
    Tctl:         +52.8°C

3. 下面代码的正则表达式需要按照上面的输出文本进行调整

4. 找到文件 [Nodes.pm] 路径:[/usr/share/perl5/PVE/API2]

搜索代码关键字: 
$dinfo = df('/', 1);

在它的下面添加代码:
$res->{CPUtemperature} = `sensors`;
$res->{GPUtemperature} = `sensors`;
$res->{Nvmetemperature} = `sensors`;

修改后的样子:
my $dinfo = df('/', 1);     # output is bytes
$res->{CPUtemperature} = `sensors`;
$res->{GPUtemperature} = `sensors`;
$res->{Nvmetemperature} = `sensors`;

$res->{rootfs} = {
    total => $dinfo->{blocks},
    avail => $dinfo->{bavail},
    used => $dinfo->{used},
    free => $dinfo->{blocks} - $dinfo->{used},
};

return $res;

5. 找到文件 [pvemanagerlib.js] 路径:[/usr/share/pve-manager/js]

搜索代码找到关键字 [PVE.node.StatusView]:
Ext.define('PVE.node.StatusView', {})

关键字下面找到高度:
height: 350, // 按需求增加高度 例如我自己的是:height: 450

添加温度显示代码,找到 [items] 在代码中添加:
{
    itemId: 'CPUtemperature',
    colspan: 2,
    printBar: false,
    title: gettext('CPU Temperature'),
    textField: 'CPUtemperature',
    renderer: function(value){
        const regex = /Tctl:\s+([-+]?[0-9]*\.?[0-9]+)/;
        const match = value.match(regex);
        const temperature = match ? parseFloat(match[1]) : null;
        return ` ${temperature}℃`;
    }
},
{
    itemId: 'GPUtemperature',
    colspan: 2,
    printBar: false,
    title: gettext('GPU Temperature'),
    textField: 'GPUtemperature',
    renderer: function(value){
        const regex = /edge:\s+([-+]?[0-9]*\.?[0-9]+)/;
        const match = value.match(regex);
        const temperature = match ? parseFloat(match[1]) : null;
        return ` ${temperature}℃`;
    }
},
{
    itemId: 'Nvmetemperature',
    colspan: 2,
    printBar: false,
    title: gettext('Nvme Temperature'),
    textField: 'Nvmetemperature',
    renderer: function(value){
        const nvmeTemps = Array.from(value.matchAll(/Composite.*?\+([\d\.]+)?/g), m=>m[1]);
        return nvmeTemps.map((element, index) => `${element}℃`).join(' | ');
    }
}

添加完成后重启PVE面板:
systemctl restart pveproxy

效果图

image PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

PVE 添加CPU GPU Nvme 温度显示 (AMD CPU)

加载中……