2024-08-17 20:49:21 +00:00
|
|
|
# Built In Dependencies
|
|
|
|
import time
|
|
|
|
import queue
|
|
|
|
|
|
|
|
# Internal Dependencies
|
|
|
|
from drawing import draw_cpu, draw_memory, draw_battery, draw_borders_left, draw_bar, draw_borders_right, DrawingThread
|
|
|
|
from monitors import CPUMonitor, MemoryMonitor, BatteryMonitor, DiskMonitor, NetworkMonitor, get_monitor_brightness
|
|
|
|
|
|
|
|
# External Dependencies
|
|
|
|
try:
|
|
|
|
# These are used in later scripts, but imported here to test if missing
|
|
|
|
import serial # pyserial
|
|
|
|
from serial.tools import list_ports
|
|
|
|
import numpy as np
|
|
|
|
except ImportError:
|
|
|
|
import pip
|
|
|
|
for dependency in ["numpy", "pyserial"]:
|
|
|
|
pip.main(['install', '--user', dependency])
|
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
# print(sbc.get_brightness())
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# Left LED Matrix location: "1-4.2"
|
|
|
|
# Right LED Matrix location: "1-3.3"
|
|
|
|
|
|
|
|
# Set up monitors and serial for left LED Matrix
|
|
|
|
min_background_brightness = 8
|
|
|
|
max_background_brightness = 35
|
|
|
|
min_foreground_brightness = 30
|
|
|
|
max_foreground_brightness = 160
|
|
|
|
|
|
|
|
cpu_monitor = CPUMonitor()
|
|
|
|
memory_monitor = MemoryMonitor()
|
|
|
|
battery_monitor = BatteryMonitor()
|
|
|
|
|
|
|
|
left_drawing_queue = queue.Queue(2)
|
|
|
|
left_drawing_thread = DrawingThread("1-4.2", left_drawing_queue)
|
|
|
|
left_drawing_thread.start()
|
|
|
|
|
|
|
|
|
|
|
|
# Set up monitors and serial for right LED Matrix
|
|
|
|
disk_monitor = DiskMonitor()
|
|
|
|
network_monitor = NetworkMonitor()
|
|
|
|
|
|
|
|
right_drawing_queue = queue.Queue(2)
|
|
|
|
right_drawing_thread = DrawingThread("1-3.3", right_drawing_queue)
|
|
|
|
right_drawing_thread.start()
|
|
|
|
|
|
|
|
while True:
|
|
|
|
try:
|
|
|
|
screen_brightness = get_monitor_brightness()
|
|
|
|
background_value = int(screen_brightness * (max_background_brightness - min_background_brightness) + min_background_brightness)
|
|
|
|
foreground_value = int(screen_brightness * (max_foreground_brightness - min_foreground_brightness) + min_foreground_brightness)
|
|
|
|
|
|
|
|
left_start_time = time.time()
|
|
|
|
# Draw to left LED Matrix
|
|
|
|
last_cpu_values = cpu_monitor.get()
|
|
|
|
last_memory_values = memory_monitor.get()
|
|
|
|
last_battery_values = battery_monitor.get()
|
|
|
|
|
|
|
|
grid = np.zeros((9,34), dtype = int)
|
|
|
|
draw_cpu(grid, last_cpu_values, foreground_value)
|
|
|
|
draw_memory(grid, last_memory_values, foreground_value)
|
|
|
|
draw_battery(grid, last_battery_values[0], last_battery_values[1], foreground_value)
|
|
|
|
draw_borders_left(grid, background_value)
|
|
|
|
left_drawing_queue.put(grid)
|
|
|
|
|
|
|
|
# Draw to right LED Matrix
|
|
|
|
last_disk_read, last_disk_write = disk_monitor.get()
|
|
|
|
last_network_upload, last_network_download = network_monitor.get()
|
|
|
|
|
|
|
|
grid = np.zeros((9,34), dtype = int)
|
|
|
|
draw_bar(grid, last_disk_read, foreground_value, bar_x_offset=1, draw_at_bottom=False) # Read
|
|
|
|
draw_bar(grid, last_disk_write, foreground_value, bar_x_offset=1, draw_at_bottom=True) # Write
|
|
|
|
draw_bar(grid, last_network_upload, foreground_value, bar_x_offset=5, draw_at_bottom=False) # Upload
|
|
|
|
draw_bar(grid, last_network_download, foreground_value, bar_x_offset=5, draw_at_bottom=True) # Download
|
|
|
|
draw_borders_right(grid, background_value)
|
|
|
|
right_drawing_queue.put(grid)
|
2024-08-17 21:13:02 +00:00
|
|
|
except KeyboardInterrupt:
|
|
|
|
break
|
2024-08-17 20:49:21 +00:00
|
|
|
except Exception as e:
|
|
|
|
import traceback
|
|
|
|
print(f"Error in main loop: {e}")
|
|
|
|
traceback.print_exc()
|
|
|
|
time.sleep(1.0)
|
2024-08-17 21:13:02 +00:00
|
|
|
time.sleep(0.1)
|
|
|
|
|
|
|
|
print("Exiting")
|