Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
5cca44638c
|
|||
|
fb2eef2a42
|
@@ -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']
|
||||
@@ -65,6 +72,7 @@ class DeviceRegistry:
|
||||
device_id=device_id,
|
||||
type=device_type,
|
||||
name=device_id,
|
||||
homekit_aid=homekit_aid,
|
||||
features=dev_data.get('features', {}),
|
||||
read_only=read_only
|
||||
)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user