class AppState: def __init__(self): self.battery = { "soc": None, "voltage": None, "current": None, "remaining_ah": None, "runtime_hours": None, "temperature_f": None, } self.temps = { "fridge_zone_1": None, "fridge_zone_2": None, "rear_seat": None, "outside": None, } self.sensor_health = { "fridge_zone_1": False, "fridge_zone_2": False, "rear_seat": False, "outside": False, } self.relays = { "starlink": False, "fridge": False, } self.vehicle = { "ignition_on": False, } self.network = { "uart_connected": False, "wifi_enabled": False, } self.last_error = None self.last_status_timestamp = None def update_from_status(self, message): self.last_status_timestamp = message.get("timestamp") self.battery.update(message.get("battery", {})) self.temps.update(message.get("temps", {})) self.sensor_health.update(message.get("sensor_health", {})) self.relays.update(message.get("relays", {})) self.vehicle.update(message.get("vehicle", {})) self.network.update(message.get("network", {})) def update_from_relay_response(self, message): relay = message.get("relay") enabled = message.get("enabled") if relay in self.relays and enabled is not None: self.relays[relay] = bool(enabled) def set_error(self, message): self.last_error = message