Skip to content

Commit a4a1acf

Browse files
Merge pull request #78 from Retro-I/feature-45-downloadrate-uploadrate
added upload-/download-rate to info dialog on settings page
2 parents d24dcf6 + 4d04b22 commit a4a1acf

File tree

4 files changed

+44
-9
lines changed

4 files changed

+44
-9
lines changed

components/dialogs/SettingsInfoDialog.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import threading
2+
import time
3+
14
import flet as ft
25

36
from components.Scrollbar import with_scrollbar_space
@@ -11,6 +14,7 @@
1114
class SettingsInfoDialog(ft.AlertDialog):
1215
version_text = ft.TextSpan("")
1316
cpu_temp_text = ft.TextSpan("")
17+
download_rate_text = ft.TextSpan("")
1418
ssid_text = ft.TextSpan("")
1519
ip_text = ft.TextSpan("")
1620
hostname_text = ft.TextSpan("")
@@ -46,6 +50,14 @@ def __init__(self):
4650
spans=[ft.TextSpan("CPU-Temperatur: "), self.cpu_temp_text],
4751
size=20,
4852
),
53+
ft.Text(
54+
spans=[
55+
ft.TextSpan("Downloadrate: "),
56+
self.download_rate_text,
57+
ft.TextSpan(" kB/s"),
58+
],
59+
size=20,
60+
),
4961
ft.Divider(),
5062
ft.Text("IP-Config", weight=ft.FontWeight.BOLD, size=28),
5163
ft.Text(spans=[ft.TextSpan("SSID: "), self.ssid_text], size=20),
@@ -75,16 +87,27 @@ def __init__(self):
7587
)
7688

7789
def open_dialog(self):
78-
self.version_text.text = revision_helper.get_current_revision()
79-
self.version_text.update()
80-
81-
self.cpu_temp_text.text = system_helper.get_cpu_temp()
82-
self.cpu_temp_text.update()
83-
84-
self.update_ip_config()
8590
self.open = True
8691
self.update()
8792

93+
def _retrieve_system_info():
94+
while self.open:
95+
self.version_text.text = revision_helper.get_current_revision()
96+
self.version_text.update()
97+
98+
self.cpu_temp_text.text = system_helper.get_cpu_temp()
99+
self.cpu_temp_text.update()
100+
101+
self.download_rate_text.text = round(system_helper.get_download_rate(), 2)
102+
self.download_rate_text.update()
103+
104+
self.update_ip_config()
105+
106+
time.sleep(0.5)
107+
108+
process = threading.Thread(target=_retrieve_system_info)
109+
process.start()
110+
88111
def update_ip_config(self):
89112
ip_config = system_helper.get_network_config()
90113

helper/SystemHelper.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from datetime import datetime
88

99
import netifaces
10+
import psutil
1011

1112
from helper.Audio import Audio
1213
from helper.Constants import Constants
@@ -110,16 +111,25 @@ def cancel_revision_update(self):
110111
self.write_startup_error("Letztes Update abgebrochen!")
111112
self._update_process = None
112113

113-
def get_cpu_temp(self):
114+
def get_cpu_temp(self) -> str:
114115
line = subprocess.run(["vcgencmd", "measure_temp"], stdout=subprocess.PIPE).stdout.decode(
115116
"utf-8"
116117
)
117118
temp = line[5:].strip()
118119
return temp
119120

120-
def get_curr_date(self):
121+
def get_curr_date(self) -> str:
121122
return datetime.today().strftime("%d.%m.%Y")
122123

124+
def get_download_rate(self) -> float:
125+
old_value = psutil.net_io_counters()
126+
old_recv = old_value.bytes_recv
127+
128+
new_value = psutil.net_io_counters()
129+
download_speed = (new_value.bytes_recv - old_recv) / 1024 # KB/s
130+
131+
return download_speed
132+
123133
def get_img_path(self, img_src):
124134
if "http" in img_src:
125135
return img_src

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ isort==7.0.0
2020
flake8==7.3.0
2121
black==25.9.0
2222
appdirs==1.4.4
23+
psutil==7.1.2

test-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ isort==7.0.0
1717
flake8==7.3.0
1818
black==25.9.0
1919
appdirs==1.4.4
20+
psutil==7.1.2

0 commit comments

Comments
 (0)