""" 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