safraeli commited on
Commit
84b05b8
·
verified ·
1 Parent(s): 49b39b0

Update backend/api/routes/control.py

Browse files
Files changed (1) hide show
  1. backend/api/routes/control.py +26 -0
backend/api/routes/control.py CHANGED
@@ -55,6 +55,32 @@ async def control_budget():
55
  return {"status": "waiting", "message": "No budget computed yet"}
56
 
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  _tracker_cache: dict = {"data": None, "expires": 0.0}
59
 
60
 
 
55
  return {"status": "waiting", "message": "No budget computed yet"}
56
 
57
 
58
+ @router.get("/trackers/details")
59
+ async def tracker_details():
60
+ """Tracker entity table — name, mode, angle, last activity for all trackers."""
61
+ try:
62
+ from src.data.thingsboard_client import ThingsBoardClient, TRACKER_KEYS
63
+ client = ThingsBoardClient()
64
+ trackers = []
65
+ for name in ["Tracker501", "Tracker502", "Tracker503", "Tracker509"]:
66
+ try:
67
+ vals = client.get_latest_telemetry(name, list(TRACKER_KEYS))
68
+ trackers.append({
69
+ "name": name,
70
+ "label": name.replace("Tracker", "Row "),
71
+ "angle": round(float(vals.get("angle", 0)), 1) if vals.get("angle") is not None else None,
72
+ "manual_mode": vals.get("manualMode"),
73
+ "set_angle": round(float(vals.get("setAngle", 0)), 1) if vals.get("setAngle") is not None else None,
74
+ "set_mode": vals.get("setMode"),
75
+ })
76
+ except Exception as exc:
77
+ trackers.append({"name": name, "label": name, "error": str(exc)})
78
+ return {"trackers": trackers}
79
+ except Exception as exc:
80
+ log.error("Tracker details failed: %s", exc)
81
+ return {"trackers": [], "error": str(exc)}
82
+
83
+
84
  _tracker_cache: dict = {"data": None, "expires": 0.0}
85
 
86