new endpoints 2
This commit is contained in:
@@ -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 ---
|
# --- Minimal-invasive: Einzelgerät-Layout-Endpunkt ---
|
||||||
from fastapi import Query
|
from fastapi import Query
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --- Minimal-invasive: Einzelgerät-Layout-Endpunkt ---
|
||||||
@app.get("/devices/{device_id}/layout")
|
@app.get("/devices/{device_id}/layout")
|
||||||
async def get_device_layout(device_id: str):
|
async def get_device_layout(device_id: str):
|
||||||
"""Gibt die layout-spezifischen Informationen für ein einzelnes Gerät zurück."""
|
"""Gibt die layout-spezifischen Informationen für ein einzelnes Gerät zurück."""
|
||||||
|
|||||||
Reference in New Issue
Block a user