From fb2eef2a42495877a1d1516b967e8910ca9c7c64 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Thu, 11 Dec 2025 11:51:54 +0100 Subject: [PATCH] aid in homekit --- apps/homekit/device_registry.py | 10 +++++++++- apps/homekit/main.py | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/homekit/device_registry.py b/apps/homekit/device_registry.py index 3b5456e..bfcd9d5 100644 --- a/apps/homekit/device_registry.py +++ b/apps/homekit/device_registry.py @@ -18,6 +18,7 @@ class Device: device_id: str type: str # "light", "thermostat", "relay", "contact", "temp_humidity", "cover" name: str # Short name from /devices + homekit_aid: int # HomeKit Accessory ID features: Dict[str, bool] # Feature flags (e.g., {"power": true, "brightness": true}) read_only: bool # True for sensors that don't accept commands @@ -57,6 +58,12 @@ class DeviceRegistry: logger.warning(f"Device without device_id: {dev_data}") continue + # Check for required homekit_aid field + homekit_aid = dev_data.get('homekit_aid') + if homekit_aid is None: + logger.error(f"Device {device_id} is missing required homekit_aid field - skipping") + continue + # Determine if read-only (sensors don't accept set commands) device_type = dev_data.get('type', '') read_only = device_type in ['contact', 'temp_humidity', 'motion', 'smoke'] @@ -64,7 +71,8 @@ class DeviceRegistry: device = Device( device_id=device_id, type=device_type, - name=device_id, + name=dev_data.get('name', device_id), + homekit_aid=homekit_aid, features=dev_data.get('features', {}), read_only=read_only ) diff --git a/apps/homekit/main.py b/apps/homekit/main.py index 6a0c401..aefadb6 100644 --- a/apps/homekit/main.py +++ b/apps/homekit/main.py @@ -71,9 +71,11 @@ def build_bridge(driver: AccessoryDriver, api_client: ApiClient) -> Bridge: try: accessory = create_accessory_for_device(device, api_client, driver) if accessory: + # Set AID from device configuration + accessory.aid = device.homekit_aid bridge.add_accessory(accessory) accessory_map[device.device_id] = accessory - logger.info(f"Added accessory: {device.name} ({device.type}, {accessory.__class__.__name__})") + logger.info(f"Added accessory: {device.name} ({device.type}, AID={device.homekit_aid}, {accessory.__class__.__name__})") else: logger.warning(f"No accessory mapping for device: {device.name} ({device.type})") except Exception as e: