78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
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()
|