@@ -21,9 +21,9 @@ def __init__(self, builder, ravg=10, interval=500):
21
21
self .voltage = builder .get_object ('voltage_label' )
22
22
self .current = builder .get_object ('current_label' )
23
23
self .power = builder .get_object ('power_label' )
24
- self .cpu0 = builder .get_object ('cpu0_label ' )
25
- self .gpu0 = builder .get_object ('gpu0_label ' )
26
- self .gpu1 = builder .get_object ('gpu1_label ' )
24
+ self .sensor0 = builder .get_object ('sensor0_value ' )
25
+ self .sensor1 = builder .get_object ('sensor1_value ' )
26
+ self .sensor2 = builder .get_object ('sensor2_value ' )
27
27
self .health = builder .get_object ('health_label' )
28
28
self .status = builder .get_object ('status_label' )
29
29
self .load = builder .get_object ('load_label' )
@@ -40,15 +40,26 @@ def __init__(self, builder, ravg=10, interval=500):
40
40
self .voltage_values = []
41
41
self .voltage_now_values = []
42
42
self .current_values = []
43
- self .temperature_values = {"cpu0_thermal-virtual-0" : [],
44
- "gpu0_thermal-virtual-0" : [],
45
- "gpu1_thermal-virtual-0" : []}
43
+
44
+ self .temperature_values = init_temp_sensors ()
45
+ sensor_labels = ['sensor0_label' , 'sensor1_label' , 'sensor2_label' ]
46
+ sensor_values = ['sensor0_value' , 'sensor1_value' , 'sensor2_value' ]
47
+ sensor_names = self .temperature_values .keys ()
48
+
49
+ # Set the sensor labels to match 'sensors' output
50
+ for label , name in zip (sensor_labels [:len (sensor_names )], sensor_names ):
51
+ builder .get_object (label ).set_text (f"{ name .split ('_' )[0 ]} :" )
52
+ # Blanks the sensor labels and values if not available
53
+ for label , value in zip (sensor_labels [len (sensor_names ):],
54
+ sensor_values [len (sensor_names ):]):
55
+ builder .get_object (label ).set_text ("" )
56
+ builder .get_object (value ).set_text ("" )
46
57
47
58
self .updateValues ()
48
59
49
60
# Start the auto-updater in the background with the selected interval
50
61
GLib .timeout_add (interval = interval , function = self .updateValues )
51
-
62
+
52
63
def calc_ravg (self , attr_name , value ):
53
64
values = getattr (self , attr_name )
54
65
while len (values ) >= self .ravg :
@@ -75,7 +86,7 @@ def updateValues(self):
75
86
self .update_voltage ()
76
87
self .update_current ()
77
88
self .update_power ()
78
- # self.update_temperatures()
89
+ self .update_temperatures ()
79
90
self .update_health ()
80
91
self .update_load ()
81
92
self .update_uptime ()
@@ -108,13 +119,12 @@ def update_power(self):
108
119
self .power .set_text (f"{ power :.3f} W" )
109
120
110
121
def update_temperatures (self ):
111
- chips = ["cpu0_thermal-virtual-0" , "gpu0_thermal-virtual-0" ,
112
- "gpu1_thermal-virtual-0" ]
113
- labels = [self .cpu0 , self .gpu0 , self .gpu1 ]
122
+ chips = self .temperature_values .keys ()
123
+ labels = [self .sensor0 , self .sensor1 , self .sensor2 ]
114
124
115
125
data = sensors ()
116
126
117
- for chip , label in zip (chips , labels ):
127
+ for chip , label in zip (chips , labels [: len ( chips )] ):
118
128
temp = data [chip ]["temp1" ]["temp1_input" ]
119
129
ravg_temp = self .calc_ravg_temp (chip , temp )
120
130
label .set_text (f'{ ravg_temp :.1f} °C' )
@@ -191,6 +201,11 @@ def sensors():
191
201
return json .loads (buffer )
192
202
193
203
204
+ def init_temp_sensors ():
205
+ chips = [chip for chip in sensors () if "cpu" in chip or "gpu" in chip ]
206
+ return {chip :[] for chip in chips [:3 ]} # [:3] to make sure we get max 3 sensors
207
+
208
+
194
209
def main ():
195
210
builder = Gtk .Builder ()
196
211
builder .add_from_file (abs_path ('UI.glade' ))
0 commit comments