new endpoints 2

This commit is contained in:
2025-11-18 10:20:10 +01:00
parent 732c333966
commit 5d08ec970a

View File

@@ -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."""