62 lines
1.7 KiB
Python
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
|