Proxmox [Tuto] Afficher la température CPU dans Proxmox VE 8

Voila les valeurs pour CPU RYZEN

Taper sensors
Et récupérer la valeur :

vohhY0a.png


Ensuite pour le fichier NODE :
$res->{thermalstate} = `sensors k10temp-pci-00c3`;

Et dans PVMANAGERLIB :

Code:
{
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',        
            renderer:function(value){
                           const tdie = value.match(/Tctl.*?\+([\d\.]+)/)[1];
                           return `${tdie} °C `;
                }
        }

Bon j'ai modifier un peu le visuel pour ma part, sa donne ceci :

diiM19e.png
Bonjour à tous,

Je confirme qu'avec ton code cela fonctionne très bien chez moi aussi avec Ryzen 5 5560U.

Merci a tous.

Bonne fin de semaine.
 
Ha !
Je peux envisager d'adapter le script alors.

Par contre, pour savoir, est-ce que la chaine de caractères k10temp-pci-00c3 à placer après la commande sensors est la même pour tous ?
Si oui, ce sera facile d'adapter le script, sinon, il me faudra des cobayes pour tester l'extraction de cette chaine avec la commande sensors | grep ... | sed ou awk à voir... .

Dernière chose, @Loutre38
La partie modifiée de ton fichier de configuration, elle ressemble à quoi après la modification ? Car dans le post de @Sebidou , ça n'est pas très clair...
 
Par contre, pour savoir, est-ce que la chaine de caractères k10temp-pci-00c3 à placer après la commande sensors est la même pour tous ?
Si oui, ce sera facile d'adapter le script, sinon, il me faudra des cobayes pour tester l'extraction de cette chaine avec la commande sensors | grep ... | sed ou awk à voir....
Pour moi oui, je ne l'ai pas modifié.
Par conte cela doit dépendre du retour de la commande : sensors et surtout des CPUs.

Dernière chose, @Loutre38
La partie modifiée de ton fichier de configuration, elle ressemble à quoi après la modification ? Car dans le post de @Sebidou , ça n'est pas très clair...

Voici mon code après modification (info de @Sebidou) :
Code:
    {
         itemId: 'thermal',
         colspan: 2,
         printBar: false,
         title: gettext('CPU Thermal State'),
         textField: 'thermalstate',
         renderer:function(value){
               const tdie = value.match(/Tctl.*?\+([\d\.]+)/)[1];
                return `${tdie} °C `;
             }
    }
1697184331774.png
 
Oh mais c'est moi le boulet, la modif avec sensors c'est pour le fichier Node.pm, et la dernière modification c'est un autre fichier 😅
Je ne comprenais pas pourquoi la commande sensors .... n'apparaissait pas dans le dernier fichier :ROFLMAO:
 
Pour la valeur de la sonde cpu, sa dépend surement du CPU Ryzen.
Mais je peux pas te le certifier.
Je viens de le faire avec le sensors -j

Voici les modifs :
Code:
nano /usr/share/perl5/PVE/API2/Nodes.pm

Rechercher ( touche F6 ) : my $dinfo

Dans le bloc :
Code:
$res->{pveversion} = PVE::pvecfg::package() . "/" .
            PVE::pvecfg::version_text();

        my $dinfo = df('/', 1);     # output is bytes

Insérer : $res->{thermalstate} = `sensors -j`;

Code:
nano /usr/share/pve-manager/js/pvemanagerlib.js

Rechercher ( touche F6 ) : itemId: 'load',

Apres le bloc :
Code:
{
            itemId: 'load',
            iconCls: 'fa fa-fw fa-tasks',
            title: gettext('Load average'),
            printBar: false,
            textField: 'loadavg',
        },

Ajouter ceci :
Code:
{
      itemId: 'thermal',
      printBar: false,
      iconCls: 'fa fa-fw fa-thermometer-half',
      title: gettext('Température CPU'),
      textField: 'thermalstate',
      renderer: function(value) {
                let objValue = JSON.parse(value);
                let tctl = objValue["k10temp-pci-00c3"]["Tctl"]["temp1_input"];
                return `${tctl} °C`;
            }
  },

Ce qui vous donne :
Code:
{
            itemId: 'load',
            iconCls: 'fa fa-fw fa-tasks',
            title: gettext('Load average'),
            printBar: false,
            textField: 'loadavg',
        },
{
      itemId: 'thermal',
      printBar: false,
      iconCls: 'fa fa-fw fa-thermometer-half',
      title: gettext('Température CPU'),
      textField: 'thermalstate',
      renderer: function(value) {
                let objValue = JSON.parse(value);
                let tctl = objValue["k10temp-pci-00c3"]["Tctl"]["temp1_input"];
                return `${tctl} °C`;
            }
  },

Relancer la WebUI : systemctl restart pveproxy

Ce qui vous donnera ceci :
MJbdtgT.png
 
Dernière édition:
Hello,
Bon je viens de tenter la modification pour un CPU Intel Core i9-13900H.
Ça ne fonctionne pas : écran loading en continue.

En investiguant, j'ai pu voir que la commande sensors -j ne retournait pas les mêmes chose que sur le vieu Core i5 que j'ai sur le pc fixe.
Et même elle me retourne cette erreur :
Code:
ERROR: Can't get value of subfeature temp1_input: Can't read
Il manque d'ailleurs certains coeurs de CPU... :
1697375575477.png
Voilà la sortie JSON sur le Core i9-13900H :
Code:
{
   "iwlwifi_1-virtual-0":{
      "Adapter": "Virtual device",
      "temp1":{

      }
   },
   "acpitz-acpi-0":{
      "Adapter": "ACPI interface",
      "temp1":{
         "temp1_input": 27.800,
         "temp1_crit": 105.000
      }
   },
   "coretemp-isa-0000":{
      "Adapter": "ISA adapter",
      "Package id 0":{
         "temp1_input": 34.000,
         "temp1_max": 100.000,
         "temp1_crit": 100.000,
         "temp1_crit_alarm": 0.000
      },
      "Core 0":{
         "temp2_input": 25.000,
         "temp2_max": 100.000,
         "temp2_crit": 100.000,
         "temp2_crit_alarm": 0.000
      },
      "Core 4":{
         "temp3_input": 30.000,
         "temp3_max": 100.000,
         "temp3_crit": 100.000,
         "temp3_crit_alarm": 0.000
      },
      "Core 8":{
         "temp4_input": 26.000,
         "temp4_max": 100.000,
         "temp4_crit": 100.000,
         "temp4_crit_alarm": 0.000
      },
      "Core 12":{
         "temp5_input": 32.000,
         "temp5_max": 100.000,
         "temp5_crit": 100.000,
         "temp5_crit_alarm": 0.000
      },
      "Core 16":{
         "temp6_input": 29.000,
         "temp6_max": 100.000,
         "temp6_crit": 100.000,
         "temp6_crit_alarm": 0.000
      },
      "Core 20":{
         "temp7_input": 28.000,
         "temp7_max": 100.000,
         "temp7_crit": 100.000,
         "temp7_crit_alarm": 0.000
      },
      "Core 24":{
         "temp8_input": 30.000,
         "temp8_max": 100.000,
         "temp8_crit": 100.000,
         "temp8_crit_alarm": 0.000
      },
      "Core 25":{
         "temp9_input": 30.000,
         "temp9_max": 100.000,
         "temp9_crit": 100.000,
         "temp9_crit_alarm": 0.000
      },
      "Core 26":{
         "temp10_input": 30.000,
         "temp10_max": 100.000,
         "temp10_crit": 100.000,
         "temp10_crit_alarm": 0.000
      },
      "Core 27":{
         "temp11_input": 30.000,
         "temp11_max": 100.000,
         "temp11_crit": 100.000,
         "temp11_crit_alarm": 0.000
      },
      "Core 28":{
         "temp12_input": 30.000,
         "temp12_max": 100.000,
         "temp12_crit": 100.000,
         "temp12_crit_alarm": 0.000
      },
      "Core 29":{
         "temp13_input": 30.000,
         "temp13_max": 100.000,
         "temp13_crit": 100.000,
         "temp13_crit_alarm": 0.000
      },
      "Core 30":{
         "temp14_input": 30.000,
         "temp14_max": 100.000,
         "temp14_crit": 100.000,
         "temp14_crit_alarm": 0.000
      },
      "Core 31":{
         "temp15_input": 30.000,
         "temp15_max": 100.000,
         "temp15_crit": 100.000,
         "temp15_crit_alarm": 0.000
      }
   },
   "nvme-pci-0100":{
      "Adapter": "PCI adapter",
      "Composite":{
         "temp1_input": 33.850,
         "temp1_max": 89.850,
         "temp1_min": -273.150,
         "temp1_crit": 94.850,
         "temp1_alarm": 0.000
      },
      "Sensor 1":{
         "temp2_input": 33.850,
         "temp2_max": 65261.850,
         "temp2_min": -273.150
      },
      "Sensor 2":{
         "temp3_input": 21.850,
         "temp3_max": 65261.850,
         "temp3_min": -273.150
      }
   }
}

@EVOTk @Drthrax74 @Sebidou
Ssauriez-vous comment faire pour récupérer tous les cœurs ?

PS : d'ailleurs dans le JSON les n° des coeurs ne correspondent pas au n° du tempXX :ROFLMAO:
 
Hello,
Bon je viens de tenter la modification pour un CPU Intel Core i9-13900H.
Ça ne fonctionne pas : écran loading en continue.

En investiguant, j'ai pu voir que la commande sensors -j ne retournait pas les mêmes chose que sur le vieu Core i5 que j'ai sur le pc fixe.
Et même elle me retourne cette erreur :
Code:
ERROR: Can't get value of subfeature temp1_input: Can't read
Il manque d'ailleurs certains coeurs de CPU... :
Voir la pièce jointe 10259
Voilà la sortie JSON sur le Core i9-13900H :
Code:
{
   "iwlwifi_1-virtual-0":{
      "Adapter": "Virtual device",
      "temp1":{

      }
   },
   "acpitz-acpi-0":{
      "Adapter": "ACPI interface",
      "temp1":{
         "temp1_input": 27.800,
         "temp1_crit": 105.000
      }
   },
   "coretemp-isa-0000":{
      "Adapter": "ISA adapter",
      "Package id 0":{
         "temp1_input": 34.000,
         "temp1_max": 100.000,
         "temp1_crit": 100.000,
         "temp1_crit_alarm": 0.000
      },
      "Core 0":{
         "temp2_input": 25.000,
         "temp2_max": 100.000,
         "temp2_crit": 100.000,
         "temp2_crit_alarm": 0.000
      },
      "Core 4":{
         "temp3_input": 30.000,
         "temp3_max": 100.000,
         "temp3_crit": 100.000,
         "temp3_crit_alarm": 0.000
      },
      "Core 8":{
         "temp4_input": 26.000,
         "temp4_max": 100.000,
         "temp4_crit": 100.000,
         "temp4_crit_alarm": 0.000
      },
      "Core 12":{
         "temp5_input": 32.000,
         "temp5_max": 100.000,
         "temp5_crit": 100.000,
         "temp5_crit_alarm": 0.000
      },
      "Core 16":{
         "temp6_input": 29.000,
         "temp6_max": 100.000,
         "temp6_crit": 100.000,
         "temp6_crit_alarm": 0.000
      },
      "Core 20":{
         "temp7_input": 28.000,
         "temp7_max": 100.000,
         "temp7_crit": 100.000,
         "temp7_crit_alarm": 0.000
      },
      "Core 24":{
         "temp8_input": 30.000,
         "temp8_max": 100.000,
         "temp8_crit": 100.000,
         "temp8_crit_alarm": 0.000
      },
      "Core 25":{
         "temp9_input": 30.000,
         "temp9_max": 100.000,
         "temp9_crit": 100.000,
         "temp9_crit_alarm": 0.000
      },
      "Core 26":{
         "temp10_input": 30.000,
         "temp10_max": 100.000,
         "temp10_crit": 100.000,
         "temp10_crit_alarm": 0.000
      },
      "Core 27":{
         "temp11_input": 30.000,
         "temp11_max": 100.000,
         "temp11_crit": 100.000,
         "temp11_crit_alarm": 0.000
      },
      "Core 28":{
         "temp12_input": 30.000,
         "temp12_max": 100.000,
         "temp12_crit": 100.000,
         "temp12_crit_alarm": 0.000
      },
      "Core 29":{
         "temp13_input": 30.000,
         "temp13_max": 100.000,
         "temp13_crit": 100.000,
         "temp13_crit_alarm": 0.000
      },
      "Core 30":{
         "temp14_input": 30.000,
         "temp14_max": 100.000,
         "temp14_crit": 100.000,
         "temp14_crit_alarm": 0.000
      },
      "Core 31":{
         "temp15_input": 30.000,
         "temp15_max": 100.000,
         "temp15_crit": 100.000,
         "temp15_crit_alarm": 0.000
      }
   },
   "nvme-pci-0100":{
      "Adapter": "PCI adapter",
      "Composite":{
         "temp1_input": 33.850,
         "temp1_max": 89.850,
         "temp1_min": -273.150,
         "temp1_crit": 94.850,
         "temp1_alarm": 0.000
      },
      "Sensor 1":{
         "temp2_input": 33.850,
         "temp2_max": 65261.850,
         "temp2_min": -273.150
      },
      "Sensor 2":{
         "temp3_input": 21.850,
         "temp3_max": 65261.850,
         "temp3_min": -273.150
      }
   }
}

@EVOTk @Drthrax74 @Sebidou
Ssauriez-vous comment faire pour récupérer tous les cœurs ?

PS : d'ailleurs dans le JSON les n° des coeurs ne correspondent pas au n° du tempXX :ROFLMAO:
C'est quoi ton renderer que tu as fait ?
Pourquoi vouloir la temp de tous les cœurs ?
Le package ne suffit pas ?
 
C'est quoi ton renderer que tu as fait ?
Pourquoi vouloir la temp de tous les cœurs ?
Le package ne suffit pas ?
Heuuu... je n'ai pas tout compris 😅
Je n'ai fait qu'appliquer le tuto à la lettre, et ce faisant, l'interface du "summary" ne fonctionne plus. J'ai la roulette infinie.
 
Heuuu... je n'ai pas tout compris 😅
Je n'ai fait qu'appliquer le tuto à la lettre, et ce faisant, l'interface du "summary" ne fonctionne plus. J'ai la roulette infinie.
Cette partie la pour toi, tu as mis quoi ?

Code:
{
      itemId: 'thermal',
      printBar: false,
      iconCls: 'fa fa-fw fa-thermometer-half',
      title: gettext('Température CPU'),
      textField: 'thermalstate',
      renderer: function(value) {
                let objValue = JSON.parse(value);
                let tctl = objValue["k10temp-pci-00c3"]["Tctl"]["temp1_input"];
                return `${tctl} °C`;
            }
  },
 
Alors je n'y arrive pas non plus :D

Voici le résultat de la commande utilisée :

Code:
root@batuu:~# sensors k10temp-pci-00c3
k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +28.0°C
 
Voila les valeurs pour CPU RYZEN

Taper sensors
Et récupérer la valeur :

vohhY0a.png


Ensuite pour le fichier NODE :
$res->{thermalstate} = `sensors k10temp-pci-00c3`;

Et dans PVMANAGERLIB :

Code:
{
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',        
            renderer:function(value){
                           const tdie = value.match(/Tctl.*?\+([\d\.]+)/)[1];
                           return `${tdie} °C `;
                }
        }

Bon j'ai modifier un peu le visuel pour ma part, sa donne ceci :

diiM19e.png
Hello !

Merci beaucoup, cela a fonctionné pour moi avec un Ryzen 5 7600X également :

1700043855467.png

J'ai fais quelques ajustement sur la variable Tdie remplacé par Tctl, ça fait plus propre :)
 
Voila les valeurs pour CPU RYZEN

Taper sensors
Et récupérer la valeur :

vohhY0a.png


Ensuite pour le fichier NODE :
$res->{thermalstate} = `sensors k10temp-pci-00c3`;

Et dans PVMANAGERLIB :

Code:
{
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Thermal State'),
            textField: 'thermalstate',        
            renderer:function(value){
                           const tdie = value.match(/Tctl.*?\+([\d\.]+)/)[1];
                           return `${tdie} °C `;
                }
        }

Bon j'ai modifier un peu le visuel pour ma part, sa donne ceci :

diiM19e.png
Je confirme sa fonctionne de mon côter les modification merci a toi ;)
Bonne soirée
 
Hello à tous, je tente d'exécuter le fameux script fourni mais voici l'erreur que j'ai ...
Capture d'écran 2024-03-28 125042.png
Si quelqu'un saurait m'aider ça serait top !
 
Salut @SultaN

Je n'ai pas de NUC AMD sur lequel est proxmox, donc je ne peux pas tester le script que j'ai fourni.

Cela dit, pour un NUC Intel que j'ai, la version intel bien que fonctionnel du point de vue du script, fait que l'interface est figée, et n'affiche pas les témpérature...
J'ai dû renoncer à ça sur mon NUC Intel.
 
Salut @SultaN

Je n'ai pas de NUC AMD sur lequel est proxmox, donc je ne peux pas tester le script que j'ai fourni.

Cela dit, pour un NUC Intel que j'ai, la version intel bien que fonctionnel du point de vue du script, fait que l'interface est figée, et n'affiche pas les témpérature...
J'ai dû renoncer à ça sur mon NUC Intel.
Merci pour ton retour, j'ai finalement réussi à exécuter le script mais malheureusement je n'ai toujours pas la valeur de température sur mon interface...
 
Salut à vous.

Je suis parvenu avec pas mal de difficultés à afficher la température de mon CPU AMD GX-222GC
Pour ma part je n'avais ni "Tdie" ni "Tclt" mais "temp1" à la place... j'ai mis un moment à comprendre...

Code:
root@Pmox:~# sensors
radeon-pci-0008
Adapter: PCI adapter
temp1:        +48.0°C  (crit = +120.0°C, hyst = +90.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +49.2°C  (high = +70.0°C)
                       (crit = +100.0°C, hyst = +99.0°C)

Du coup ca fonctionne avec :
Code:
        {
            itemId: 'thermal',
            colspan: 2,
            printBar: false,
            title: gettext('CPU Temp'),
            textField: 'thermalstate',        
            renderer:function(value){
                           const tdie = value.match(/temp1.*?\+([\d\.]+)/)[1];
                           return `${tdie} °C `;
                                                 }
        }

1712443112058.png
 
Dernière édition: