class DashboardRenderer: def __init__(self, display): self.display = display def render(self, view_model): vm = view_model.as_dict() self.display.clear() top = vm["top_bar"] self.display.text(0, 0, f'SOC {top["soc"]}') self.display.text(120, 0, top["comms"]) self.display.text(260, 0, f'ALM {top["alarms"]}') battery = vm["battery"] self.display.text(0, 48, "Battery") self.display.text( 0, 72, f'{battery["voltage"]} {battery["current"]} {battery["runtime"]}', ) fridge = vm["fridge"] self.display.text(0, 128, "Fridge") self.display.text(0, 152, f'Zone 1: {fridge["zone_1"]}') self.display.text(0, 176, f'Zone 2: {fridge["zone_2"]}') power = vm["power"] self.display.text(0, 232, "Power") self.display.text( 0, 256, f'Starlink {power["starlink"]} Fridge {power["fridge"]}', ) self.render_nav("dashboard") def render_nav(self, active_screen): labels = [ ("dashboard", "Dash"), ("battery", "Bat"), ("temps", "Temps"), ("power", "Power"), ("system", "System"), ] x = 0 for screen, label in labels: text = f"[{label}]" if screen == active_screen else label self.display.text(x, 440, text) x += 64