From 63e807bdb05ebace7bf531aa458a6460e592c779 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Wed, 27 May 2026 21:53:26 +0200 Subject: [PATCH] data_model: split windows out of doors into own domain - Add extract_windows() and register 'windows' in ALL_DOMAINS - Remove windows extraction from extract_doors; no more double keys - extract_windows also captures the overall windows.open_state Co-Authored-By: Claude Sonnet 4.6 --- server/data_model.py | 9 +++++++++ server/main.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/server/data_model.py b/server/data_model.py index 8b83eb1..3ebdb31 100644 --- a/server/data_model.py +++ b/server/data_model.py @@ -198,7 +198,15 @@ def extract_doors(vehicle) -> dict | None: except Exception: log.debug("vehicle.doors unavailable", exc_info=True) + return result or None + + +def extract_windows(vehicle) -> dict | None: + result: dict = {} + try: + if vehicle.windows.open_state.value is not None: + result["open_state"] = _str(vehicle.windows.open_state) window_entries = {} for name, win in vehicle.windows.windows.items(): if win.open_state.value is not None: @@ -219,6 +227,7 @@ ALL_DOMAINS: dict[str, Callable] = { "vehicle": extract_vehicle, "position": extract_position, "doors": extract_doors, + "windows": extract_windows, } diff --git a/server/main.py b/server/main.py index 484d941..775db4e 100644 --- a/server/main.py +++ b/server/main.py @@ -18,7 +18,7 @@ Usage examples # Override domains on the CLI: python -m server.main -c credentials/alex.json -d charging,measurements -Available domains: charging, climatisation, electric_drive, connectivity, vehicle, position, doors +Available domains: charging, climatisation, electric_drive, connectivity, vehicle, position, doors, windows Credentials file format (JSON) -------------------------------