Files

62 lines
1.7 KiB
Python

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