36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
"""Helpers for managing a pairing with a HomeKit accessory or bridge."""
|
|
|
|
|
|
def get_accessory_information(accessory):
|
|
"""Obtain the accessory information service of a HomeKit device."""
|
|
# pylint: disable=import-error
|
|
from homekit.model.services import ServicesTypes
|
|
from homekit.model.characteristics import CharacteristicsTypes
|
|
|
|
result = {}
|
|
for service in accessory['services']:
|
|
stype = service['type'].upper()
|
|
if ServicesTypes.get_short(stype) != 'accessory-information':
|
|
continue
|
|
for characteristic in service['characteristics']:
|
|
ctype = CharacteristicsTypes.get_short(characteristic['type'])
|
|
if 'value' in characteristic:
|
|
result[ctype] = characteristic['value']
|
|
return result
|
|
|
|
|
|
def get_bridge_information(accessories):
|
|
"""Return the accessory info for the bridge."""
|
|
for accessory in accessories:
|
|
if accessory['aid'] == 1:
|
|
return get_accessory_information(accessory)
|
|
return get_accessory_information(accessories[0])
|
|
|
|
|
|
def get_accessory_name(accessory_info):
|
|
"""Return the name field of an accessory."""
|
|
for field in ('name', 'model', 'manufacturer'):
|
|
if field in accessory_info:
|
|
return accessory_info[field]
|
|
return None
|