new standby mode v1.2
This commit is contained in:
parent
2a931ce090
commit
ed40f7fdec
@ -11,6 +11,7 @@ from typing import Dict
|
|||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import psutil
|
||||||
|
|
||||||
from spotiplayer_pi.lib import LCD_2inch
|
from spotiplayer_pi.lib import LCD_2inch
|
||||||
from spotiplayer_pi.api import Api
|
from spotiplayer_pi.api import Api
|
||||||
@ -31,6 +32,14 @@ def get_cpu_temp():
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def get_cpu_util():
|
||||||
|
try:
|
||||||
|
return psutil.cpu_percent(interval=0)
|
||||||
|
except Exception as e:
|
||||||
|
warnings.warn(f"Error getting CPU util: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_mem_util():
|
def get_mem_util():
|
||||||
try:
|
try:
|
||||||
return int(
|
return int(
|
||||||
@ -84,6 +93,8 @@ def display_loop(api: Api, cfg: Dict):
|
|||||||
auth_interval = 0
|
auth_interval = 0
|
||||||
buffer_temp = deque([None] * 320, maxlen=320)
|
buffer_temp = deque([None] * 320, maxlen=320)
|
||||||
buffer_mem = deque([None] * 320, maxlen=320)
|
buffer_mem = deque([None] * 320, maxlen=320)
|
||||||
|
buffer_cpu = deque([None] * 320, maxlen=320)
|
||||||
|
alpha = 0.3
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
if time.time() - last_auth_refresh >= auth_interval:
|
if time.time() - last_auth_refresh >= auth_interval:
|
||||||
@ -101,10 +112,34 @@ def display_loop(api: Api, cfg: Dict):
|
|||||||
elif data == "not-playing":
|
elif data == "not-playing":
|
||||||
pixels = not_playing_img.load()
|
pixels = not_playing_img.load()
|
||||||
draw = ImageDraw.Draw(not_playing_img)
|
draw = ImageDraw.Draw(not_playing_img)
|
||||||
draw.rectangle(
|
draw.rectangle([(0, 100), (320, 240)], fill=(0, 0, 0)) # refresh bg
|
||||||
[(0, 100), (320, 240)], fill=(0, 0, 0)
|
draw.rectangle([(95, 25), (250, 98)], fill=(0, 0, 0)) # refresh bg
|
||||||
) # refresh stats bg
|
draw.rectangle([(240, 0), (320, 150)], fill=(0, 0, 0)) # refresh bg
|
||||||
draw.rectangle([(95, 25), (250, 98)], fill=(0, 0, 0)) # refresh time bg
|
|
||||||
|
# Draw CPU usage
|
||||||
|
buffer_cpu.append(get_cpu_util())
|
||||||
|
cpu_values = np.array([x for x in buffer_cpu if x is not None])
|
||||||
|
cpu_values_idxs = [i for i, x in enumerate(buffer_cpu) if x is not None]
|
||||||
|
if len(cpu_values) >= 2:
|
||||||
|
smoothed = np.empty_like(cpu_values, dtype=float)
|
||||||
|
smoothed[0] = cpu_values[0]
|
||||||
|
for t in range(1, len(cpu_values)):
|
||||||
|
smoothed[t] = (
|
||||||
|
alpha * cpu_values[t] + (1 - alpha) * cpu_values[t - 1]
|
||||||
|
)
|
||||||
|
for i in range(1, len(cpu_values_idxs)):
|
||||||
|
idx = cpu_values_idxs[i]
|
||||||
|
val, prev_val = cpu_values[i], cpu_values[i - 1]
|
||||||
|
draw.rectangle(
|
||||||
|
[(idx, 200 - val), (idx - 1, 200 - prev_val)],
|
||||||
|
fill=(255, 253, 195),
|
||||||
|
)
|
||||||
|
draw.text(
|
||||||
|
(290, 180 - val),
|
||||||
|
f"{int(val)}%",
|
||||||
|
fill=(255, 255, 255),
|
||||||
|
font=Font0,
|
||||||
|
)
|
||||||
|
|
||||||
# Draw Temp
|
# Draw Temp
|
||||||
buffer_temp.append(get_cpu_temp())
|
buffer_temp.append(get_cpu_temp())
|
||||||
@ -161,7 +196,7 @@ def display_loop(api: Api, cfg: Dict):
|
|||||||
col = 0 if idx_ == max_bin else n_bins - 1
|
col = 0 if idx_ == max_bin else n_bins - 1
|
||||||
draw.text(
|
draw.text(
|
||||||
(320 - ((idx + 1) * 16), 230 - bin_i // 65),
|
(320 - ((idx + 1) * 16), 230 - bin_i // 65),
|
||||||
f"{bin_i / 1024:.2f}Gib",
|
f"{bin_i / 1024:.1f}Gi",
|
||||||
font=Font00,
|
font=Font00,
|
||||||
fill=tuple(cmap2[col]),
|
fill=tuple(cmap2[col]),
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user