Skip to content

Commit fd2ed90

Browse files
committed
Added better sensors support
1 parent 6271b21 commit fd2ed90

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

PineBattery.py

+27-12
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ def __init__(self, builder, ravg=10, interval=500):
2121
self.voltage = builder.get_object('voltage_label')
2222
self.current = builder.get_object('current_label')
2323
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')
2727
self.health = builder.get_object('health_label')
2828
self.status = builder.get_object('status_label')
2929
self.load = builder.get_object('load_label')
@@ -40,15 +40,26 @@ def __init__(self, builder, ravg=10, interval=500):
4040
self.voltage_values = []
4141
self.voltage_now_values = []
4242
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("")
4657

4758
self.updateValues()
4859

4960
# Start the auto-updater in the background with the selected interval
5061
GLib.timeout_add(interval=interval, function=self.updateValues)
51-
62+
5263
def calc_ravg(self, attr_name, value):
5364
values = getattr(self, attr_name)
5465
while len(values) >= self.ravg:
@@ -75,7 +86,7 @@ def updateValues(self):
7586
self.update_voltage()
7687
self.update_current()
7788
self.update_power()
78-
#self.update_temperatures()
89+
self.update_temperatures()
7990
self.update_health()
8091
self.update_load()
8192
self.update_uptime()
@@ -108,13 +119,12 @@ def update_power(self):
108119
self.power.set_text(f"{power:.3f} W")
109120

110121
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]
114124

115125
data = sensors()
116126

117-
for chip, label in zip(chips, labels):
127+
for chip, label in zip(chips, labels[:len(chips)]):
118128
temp = data[chip]["temp1"]["temp1_input"]
119129
ravg_temp = self.calc_ravg_temp(chip, temp)
120130
label.set_text(f'{ravg_temp:.1f} °C')
@@ -191,6 +201,11 @@ def sensors():
191201
return json.loads(buffer)
192202

193203

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+
194209
def main():
195210
builder = Gtk.Builder()
196211
builder.add_from_file(abs_path('UI.glade'))

UI.glade

+6-6
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
</packing>
171171
</child>
172172
<child>
173-
<object class="GtkLabel">
173+
<object class="GtkLabel" id="sensor0_label">
174174
<property name="visible">True</property>
175175
<property name="can-focus">False</property>
176176
<property name="halign">end</property>
@@ -182,7 +182,7 @@
182182
</packing>
183183
</child>
184184
<child>
185-
<object class="GtkLabel" id="cpu0_label">
185+
<object class="GtkLabel" id="sensor0_value">
186186
<property name="visible">True</property>
187187
<property name="can-focus">False</property>
188188
<property name="halign">start</property>
@@ -195,7 +195,7 @@
195195
</packing>
196196
</child>
197197
<child>
198-
<object class="GtkLabel">
198+
<object class="GtkLabel" id="sensor1_label">
199199
<property name="visible">True</property>
200200
<property name="can-focus">False</property>
201201
<property name="halign">end</property>
@@ -207,7 +207,7 @@
207207
</packing>
208208
</child>
209209
<child>
210-
<object class="GtkLabel" id="gpu0_label">
210+
<object class="GtkLabel" id="sensor1_value">
211211
<property name="visible">True</property>
212212
<property name="can-focus">False</property>
213213
<property name="halign">start</property>
@@ -220,7 +220,7 @@
220220
</packing>
221221
</child>
222222
<child>
223-
<object class="GtkLabel">
223+
<object class="GtkLabel" id="sensor2_label">
224224
<property name="visible">True</property>
225225
<property name="can-focus">False</property>
226226
<property name="halign">end</property>
@@ -232,7 +232,7 @@
232232
</packing>
233233
</child>
234234
<child>
235-
<object class="GtkLabel" id="gpu1_label">
235+
<object class="GtkLabel" id="sensor2_value">
236236
<property name="visible">True</property>
237237
<property name="can-focus">False</property>
238238
<property name="halign">start</property>

0 commit comments

Comments
 (0)