"""Support for LCN scenes.""" import pypck from homeassistant.components.scene import Scene from homeassistant.const import CONF_ADDRESS from . import LcnDevice from .const import ( CONF_CONNECTIONS, CONF_OUTPUTS, CONF_REGISTER, CONF_SCENE, CONF_TRANSITION, DATA_LCN, OUTPUT_PORTS) from .helpers import get_connection async def async_setup_platform(hass, hass_config, async_add_entities, discovery_info=None): """Set up the LCN scene platform.""" if discovery_info is None: return devices = [] for config in discovery_info: address, connection_id = config[CONF_ADDRESS] addr = pypck.lcn_addr.LcnAddr(*address) connections = hass.data[DATA_LCN][CONF_CONNECTIONS] connection = get_connection(connections, connection_id) address_connection = connection.get_address_conn(addr) devices.append(LcnScene(config, address_connection)) async_add_entities(devices) class LcnScene(LcnDevice, Scene): """Representation of a LCN scene.""" def __init__(self, config, address_connection): """Initialize the LCN scene.""" super().__init__(config, address_connection) self.register_id = config[CONF_REGISTER] self.scene_id = config[CONF_SCENE] self.output_ports = [] self.relay_ports = [] for port in config[CONF_OUTPUTS]: if port in OUTPUT_PORTS: self.output_ports.append(pypck.lcn_defs.OutputPort[port]) else: # in RELEAY_PORTS self.relay_ports.append(pypck.lcn_defs.RelayPort[port]) if config[CONF_TRANSITION] is None: self.transition = None else: self.transition = pypck.lcn_defs.time_to_ramp_value( config[CONF_TRANSITION]) async def async_added_to_hass(self): """Run when entity about to be added to hass.""" async def async_activate(self): """Activate scene.""" self.address_connection.activate_scene(self.register_id, self.scene_id, self.output_ports, self.relay_ports, self.transition)