FW_LED_System_Monitor/led_system_monitor.py

90 lines
3.6 KiB
Python
Raw Normal View History

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")