mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Homekit Update, Support for TempSensor (°F) (#12676)
* Changed version of "HAP-python" to "v1.1.7" * Updated acc file to simplify init calls * Code refactored and '°F' temp Sensors added * Changed call to 'HomeAccessory' and 'HomeBridge' * Extended function of 'add_preload_service' to add additional characteristics * Added function to override characteristic property values * TemperatureSensor * Added unit * Added calc_temperature * Updated tests
This commit is contained in:
@@ -1,55 +1,62 @@
|
||||
"""Extend the basic Accessory and Bridge functions."""
|
||||
import logging
|
||||
|
||||
from pyhap.accessory import Accessory, Bridge, Category
|
||||
|
||||
from .const import (
|
||||
SERVICES_ACCESSORY_INFO, MANUFACTURER,
|
||||
SERV_ACCESSORY_INFO, MANUFACTURER,
|
||||
CHAR_MODEL, CHAR_MANUFACTURER, CHAR_SERIAL_NUMBER)
|
||||
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def set_accessory_info(acc, model, manufacturer=MANUFACTURER,
|
||||
serial_number='0000'):
|
||||
"""Set the default accessory information."""
|
||||
service = acc.get_service(SERV_ACCESSORY_INFO)
|
||||
service.get_characteristic(CHAR_MODEL).set_value(model)
|
||||
service.get_characteristic(CHAR_MANUFACTURER).set_value(manufacturer)
|
||||
service.get_characteristic(CHAR_SERIAL_NUMBER).set_value(serial_number)
|
||||
|
||||
|
||||
def add_preload_service(acc, service, chars=None, opt_chars=None):
|
||||
"""Define and return a service to be available for the accessory."""
|
||||
from pyhap.loader import get_serv_loader, get_char_loader
|
||||
service = get_serv_loader().get(service)
|
||||
if chars:
|
||||
chars = chars if isinstance(chars, list) else [chars]
|
||||
for char_name in chars:
|
||||
char = get_char_loader().get(char_name)
|
||||
service.add_characteristic(char)
|
||||
if opt_chars:
|
||||
opt_chars = opt_chars if isinstance(opt_chars, list) else [opt_chars]
|
||||
for opt_char_name in opt_chars:
|
||||
opt_char = get_char_loader().get(opt_char_name)
|
||||
service.add_opt_characteristic(opt_char)
|
||||
acc.add_service(service)
|
||||
return service
|
||||
|
||||
|
||||
def override_properties(char, new_properties):
|
||||
"""Override characteristic property values."""
|
||||
char.properties.update(new_properties)
|
||||
|
||||
|
||||
class HomeAccessory(Accessory):
|
||||
"""Class to extend the Accessory class."""
|
||||
|
||||
ALL_CATEGORIES = Category
|
||||
|
||||
def __init__(self, display_name):
|
||||
def __init__(self, display_name, model, category='OTHER'):
|
||||
"""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)
|
||||
set_accessory_info(self, model)
|
||||
self.category = getattr(Category, category, Category.OTHER)
|
||||
|
||||
|
||||
class HomeBridge(Bridge):
|
||||
"""Class to extend the Bridge class."""
|
||||
|
||||
def __init__(self, display_name, pincode):
|
||||
def __init__(self, display_name, model, 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)
|
||||
set_accessory_info(self, model)
|
||||
|
||||
Reference in New Issue
Block a user