core/homeassistant/components/switch/zha.py

50 lines
1.3 KiB
Python

"""
Switches on Zigbee Home Automation networks.
For more details on this platform, please refer to the documentation
at https://home-assistant.io/components/switch.zha/
"""
import asyncio
import logging
from homeassistant.components.switch import DOMAIN, SwitchDevice
from homeassistant.components import zha
_LOGGER = logging.getLogger(__name__)
DEPENDENCIES = ['zha']
def setup_platform(hass, config, add_devices, discovery_info=None):
"""Set up Zigbee Home Automation switches."""
discovery_info = zha.get_discovery_info(hass, discovery_info)
if discovery_info is None:
return
add_devices([Switch(**discovery_info)])
class Switch(zha.Entity, SwitchDevice):
"""ZHA switch."""
_domain = DOMAIN
@property
def is_on(self) -> bool:
"""Return if the switch is on based on the statemachine."""
if self._state == 'unknown':
return False
return bool(self._state)
@asyncio.coroutine
def async_turn_on(self, **kwargs):
"""Turn the entity on."""
yield from self._endpoint.on_off.on()
self._state = 1
@asyncio.coroutine
def async_turn_off(self, **kwargs):
"""Turn the entity off."""
yield from self._endpoint.on_off.off()
self._state = 0