mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 12:59:34 +00:00
Add support for HomeKit (#12488)
* Basic Homekit support * Added Temperatur Sensor * Added Window Cover * Code refactored * Added class HomeAccessory(Accessory) * Added class HomeBridge(Bridge) * Changed homekit imports to relative, to enable use in custom_components * Updated requirements * Added docs * Other smaller changes * Changed Homekit from entity to class * Changes based on feedback * Updated config schema * Add only covers that support set_cover_position * Addressed comments, updated to pyhap==1.1.5 * For lint: added files to gen_requirements_all * Added codeowner * Small change to Wrapper classes * Moved imports to import_types, small changes * Small changes, added tests * Homekit class: removed add_accessory since it's already covered by pyhap * Added test requirement: HAP-python * Added test suit for homekit setup and interaction between HA and pyhap * Added test suit for get_accessories function * Test bugfix * Added validate pincode, tests for cover and sensor types
This commit is contained in:
55
homeassistant/components/homekit/accessories.py
Normal file
55
homeassistant/components/homekit/accessories.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""Extend the basic Accessory and Bridge functions."""
|
||||
from pyhap.accessory import Accessory, Bridge, Category
|
||||
|
||||
from .const import (
|
||||
SERVICES_ACCESSORY_INFO, MANUFACTURER,
|
||||
CHAR_MODEL, CHAR_MANUFACTURER, CHAR_SERIAL_NUMBER)
|
||||
|
||||
|
||||
class HomeAccessory(Accessory):
|
||||
"""Class to extend the Accessory class."""
|
||||
|
||||
ALL_CATEGORIES = Category
|
||||
|
||||
def __init__(self, display_name):
|
||||
"""Initialize a Accessory object."""
|
||||
super().__init__(display_name)
|
||||
|
||||
def set_category(self, category):
|
||||
"""Set the category of the accessory."""
|
||||
self.category = category
|
||||
|
||||
def add_preload_service(self, service):
|
||||
"""Define the services to be available for the accessory."""
|
||||
from pyhap.loader import get_serv_loader
|
||||
self.add_service(get_serv_loader().get(service))
|
||||
|
||||
def set_accessory_info(self, model, manufacturer=MANUFACTURER,
|
||||
serial_number='0000'):
|
||||
"""Set the default accessory information."""
|
||||
service_info = self.get_service(SERVICES_ACCESSORY_INFO)
|
||||
service_info.get_characteristic(CHAR_MODEL) \
|
||||
.set_value(model)
|
||||
service_info.get_characteristic(CHAR_MANUFACTURER) \
|
||||
.set_value(manufacturer)
|
||||
service_info.get_characteristic(CHAR_SERIAL_NUMBER) \
|
||||
.set_value(serial_number)
|
||||
|
||||
|
||||
class HomeBridge(Bridge):
|
||||
"""Class to extend the Bridge class."""
|
||||
|
||||
def __init__(self, display_name, pincode):
|
||||
"""Initialize a Bridge object."""
|
||||
super().__init__(display_name, pincode=pincode)
|
||||
|
||||
def set_accessory_info(self, model, manufacturer=MANUFACTURER,
|
||||
serial_number='0000'):
|
||||
"""Set the default accessory information."""
|
||||
service_info = self.get_service(SERVICES_ACCESSORY_INFO)
|
||||
service_info.get_characteristic(CHAR_MODEL) \
|
||||
.set_value(model)
|
||||
service_info.get_characteristic(CHAR_MANUFACTURER) \
|
||||
.set_value(manufacturer)
|
||||
service_info.get_characteristic(CHAR_SERIAL_NUMBER) \
|
||||
.set_value(serial_number)
|
||||
Reference in New Issue
Block a user