# pylint: disable=no-value-for-parameter
import logging
from aiohap import Accessory, Category, services
from .base import Link
logger = logging.getLogger(__name__)
[docs]class OutletAccessory(Accessory):
category = Category.OUTLET
info = services.AccessoryInformation
outlet = services.Outlet
[docs]class OutletLink(Link):
meadow_service_type = 'outlet'
def _create_link(self):
super()._create_link()
self._md_outlet = self._md_service
self._hk_outlet = OutletAccessory(self._md_outlet.name)
self._fill_accessory_info(self._hk_outlet)
self._hk_outlet.outlet.set(on=False)
self.bridge.accessory_server.add_accessory(self._hk_outlet)
async def _setup(self):
self._hk_outlet.outlet.on.handle_write(self._handle_accessory_write)
self._md_outlet.is_on.subscribe(self._handle_meadow_notification)
async def _reload_state(self):
await self._md_outlet.is_on.enable_notifications()
self._hk_outlet.outlet.on.value = await self._md_outlet.is_on.read(timeout=5.0)
async def _handle_meadow_notification(self, value, **kwargs):
self._hk_outlet.outlet.on.value = value
async def _handle_accessory_write(self, value, **kwargs):
await self._md_outlet.is_on.write(bool(value), timeout=5.0)
self._hk_outlet.outlet.on.value = value