From 5d08ec970a58de0e430c0d6e478e093d873281e9 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 18 Nov 2025 10:20:10 +0100 Subject: [PATCH] new endpoints 2 --- apps/api/main.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/apps/api/main.py b/apps/api/main.py index eb5f767..b6c58d4 100644 --- a/apps/api/main.py +++ b/apps/api/main.py @@ -1,6 +1,39 @@ +@app.get("/devices/{device_id}/layout") +async def get_device_layout(device_id: str): + """Gibt die layout-spezifischen Informationen für ein einzelnes Gerät zurück.""" + layout = load_layout() + for room in layout.get("rooms", []): + for device in room.get("devices", []): + if device.get("device_id") == device_id: + # Rückgabe: Layout-Infos + Raumname + return { + "device_id": device_id, + "room": room.get("name"), + "title": device.get("title"), + "icon": device.get("icon"), + "rank": device.get("rank"), + } + raise HTTPException(status_code=404, detail="Device layout not found") + +@app.get("/devices/{device_id}/state") +async def get_device_state(device_id: str): + """Gibt den aktuellen State für ein einzelnes Gerät zurück.""" + state_path = Path(__file__).parent.parent.parent / "config" / "devices.yaml" + if not state_path.exists(): + raise HTTPException(status_code=500, detail="State file not found") + with open(state_path, "r") as f: + config = yaml.safe_load(f) + states = config.get("states", {}) + state = states.get(device_id) + if state is None: + raise HTTPException(status_code=404, detail="Device state not found") + return state # --- Minimal-invasive: Einzelgerät-Layout-Endpunkt --- from fastapi import Query + + +# --- Minimal-invasive: Einzelgerät-Layout-Endpunkt --- @app.get("/devices/{device_id}/layout") async def get_device_layout(device_id: str): """Gibt die layout-spezifischen Informationen für ein einzelnes Gerät zurück."""