diff --git a/tools/pico_desktop_sim.py b/tools/pico_desktop_sim.py new file mode 100644 index 0000000..43b2900 --- /dev/null +++ b/tools/pico_desktop_sim.py @@ -0,0 +1,77 @@ +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()