import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT / "pico-dashboard")) from state.app_state import AppState from alarms.alarm_manager import AlarmManager from ui.dashboard_view_model import DashboardViewModel from ui.detail_view_models import ( BatteryViewModel, TempsViewModel, PowerViewModel, SystemViewModel, ) from ui.alarm_view_model import AlarmViewModel def main(): state = AppState() state.update_from_status({ "timestamp": 12345, "battery": { "soc": 82, "voltage": 13.2, "current": -6.4, "remaining_ah": 82, "runtime_hours": 12.0, "temperature_f": 76, }, "temps": { "fridge_zone_1": 34.5, "fridge_zone_2": 36.0, "rear_seat": 72.0, "outside": 88.0, }, "sensor_health": { "fridge_zone_1": True, "fridge_zone_2": True, "rear_seat": True, "outside": True, }, "relays": { "starlink": False, "fridge": True, }, "network": { "uart_connected": True, "wifi_enabled": True, }, }) alarms = AlarmManager().evaluate(state) print("\n=== DASHBOARD ===") print(DashboardViewModel(state, alarms).as_dict()) print("\n=== BATTERY ===") print(BatteryViewModel(state).as_dict()) print("\n=== TEMPERATURES ===") for row in TempsViewModel(state).as_list(): print(row) print("\n=== POWER ===") print(PowerViewModel(state).as_dict()) print("\n=== SYSTEM ===") print(SystemViewModel(state).as_dict()) print("\n=== ALARMS ===") print(AlarmViewModel(alarms).as_list()) if __name__ == "__main__": main()