Tecnologia e non solo

giugno 27, 2011

Shell extension: gnome-shell-extension-cpu-temperature (e trucchi vari)

Filed under: gnome3 — telperion @ 1:09 pm

Tra le varie estensioni, mi mancava il monitor della temperatura della cpu.
Questa è una delle poche disponibili, ma …


Uploaded with ImageShack.us

… ovviamente, appena installata, non rileva nulla. WTF?!
E quindi?

Esaminando il file extension.js, si vede che il valore della temperature è ricavato da:

/sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp

peccato che sul mio pc:

mc@debian64:~$ cat /sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp
cat: /sys/bus/acpi/devices/LNXTHERM:00/thermal_zone/temp: File o directory non esistente

non esiste!
Che fare? Cerchiamo ste temp!

mc@debian64:~$ find /sys/devices/ -iname temp*
/sys/devices/platform/coretemp.0/temp1_max
/sys/devices/platform/coretemp.0/temp1_label
/sys/devices/platform/coretemp.0/temp1_crit_alarm
/sys/devices/platform/coretemp.0/temp1_input
/sys/devices/platform/coretemp.0/temp1_crit
/sys/devices/platform/coretemp.1/temp1_max
/sys/devices/platform/coretemp.1/temp1_label
/sys/devices/platform/coretemp.1/temp1_crit_alarm
/sys/devices/platform/coretemp.1/temp1_input
/sys/devices/platform/coretemp.1/temp1_crit
/sys/devices/platform/coretemp.2/temp1_max
/sys/devices/platform/coretemp.2/temp1_label
/sys/devices/platform/coretemp.2/temp1_crit_alarm
/sys/devices/platform/coretemp.2/temp1_input
/sys/devices/platform/coretemp.2/temp1_crit
/sys/devices/platform/coretemp.3/temp1_max
/sys/devices/platform/coretemp.3/temp1_label
/sys/devices/platform/coretemp.3/temp1_crit_alarm
/sys/devices/platform/coretemp.3/temp1_input
/sys/devices/platform/coretemp.3/temp1_crit
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_input
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_label
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_max
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_crit
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_input
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_label
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_max
/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_crit

Come vedete ne abbiamo in abbondanza.
(Ho lm-sensors installato e configurato).

Temperatura dei core: (da 0 a 3):

mc@debian64:~$ cat /sys/devices/platform/coretemp.0/temp1_input
47000

Temperatura del package della cpu:

mc@debian64:~$ cat /sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_label
CPU Temperature

mc@debian64:~$ cat /sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_input
43500

Temperatura della mb:

mc@debian64:~$ cat /sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_label
MB Temperature

mc@debian64:~$ cat /sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp2_input
41000

Nel mio caso ho preferito monitorare la temperatura del package della cpu, ma potete usare anche un core, ed ho sostituito la stringa.

File diff:

--- a/temperature@xtranophilist/extension.js	2011-06-01 18:59:15.000000000 +0200
+++ b/temperature@xtranophilist/extension.js	2011-06-27 09:26:39.000000000 +0200
@@ -33,7 +33,7 @@
     },
 	
     _update_temp: function(){
-	let f1='/sys/bus/acpi/devices/LNXTHERM\:00/thermal_zone/temp';
+	let f1='/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:04/ATK0110:00/hwmon/hwmon0/temp1_input';
 	let title='';
 	let content='';
 	if(GLib.file_test(f1,1<<4)){
@@ -41,7 +41,7 @@
             let c=0;
             if(temperature[0]){
                 c = parseInt(temperature[1])/1000;
-		title=c.toString()+" C";
+		title=c.toFixed(0).toString()+" C";
                 content=c.toString()+" C / "+((9/5)*c+32).toFixed(1).toString()+" F";
             }
 	}

Come vedete ho cambiato anche la modalità di visualizzazione, senza decimali, per evitare il continua spostamento delle applet tra 45 e 45.3 per esempio, molto fastidiosa.
Semplicemente ho cambiato

title=c.toString()+" C";

in

title=c.toFixed(0).toString()+" C";

Capisco di javascript io?
Assolutamente nulla, ma siccome, tra una banana e l’altra da mangiare, mi hanno “anche” insegnato a leggere, la soluzione era contenuta una riga sotto, nella formattazione della temperatura in F.

Se volete potete anche usare

title=c.toFixed(1).toString()+" C";

che formatterà l’output sempre con un decimale: 45.0 45.3.

Nota:
nell’ultimo commit è stato un po variato il file extension.js,
ma cambiando la prima occorrenza del sensore, “dovrebbe” funzionare.

Buoni gnome-shell crash a tutti!
😉

Annunci

%d blogger hanno fatto clic su Mi Piace per questo: