async def store_scene( self, register_id: int, scene_id: int, output_ports: Sequence[lcn_defs.OutputPort] = (), relay_ports: Sequence[lcn_defs.RelayPort] = (), ramp: Optional[int] = None, ) -> bool: """Store states in the given scene. :param int register_id: Register id 0..9 :param int scene_id: Scene id 0..9 :param list(OutputPort) output_ports: Output ports to store as list :param list(RelayPort) relay_ports: Relay ports to store as list :param int ramp: Ramp value :returns: True if command was sent successfully, False otherwise :rtype: bool """ success = await self.send_command( not self.is_group, PckGenerator.change_scene_register(register_id) ) if not success: return False coros = [] if output_ports: coros.append( self.send_command( not self.is_group, PckGenerator.store_scene_output(scene_id, output_ports, ramp), ) ) if relay_ports: coros.append( self.send_command( not self.is_group, PckGenerator.store_scene_relay(scene_id, relay_ports), ) ) results = await asyncio.gather(*coros) return all(results)
async def activate_scene( self, register_id: int, scene_id: int, output_ports: Sequence[lcn_defs.OutputPort] = (), relay_ports: Sequence[lcn_defs.RelayPort] = (), ramp: Optional[int] = None, ) -> bool: """Activate the stored states for the given scene. :param int register_id: Register id 0..9 :param int scene_id: Scene id 0..9 :param list(OutputPort) output_ports: Output ports to activate as list :param list(RelayPort) relay_ports: Relay ports to activate as list :param int ramp: Ramp value :returns: True if command was sent successfully, False otherwise :rtype: bool """ success = await self.send_command( not self.is_group, PckGenerator.change_scene_register(register_id)) if not success: return False result = True if output_ports: result &= await self.send_command( not self.is_group, PckGenerator.activate_scene_output(scene_id, output_ports, ramp), ) if relay_ports: result &= await self.send_command( not self.is_group, PckGenerator.activate_scene_relay(scene_id, relay_ports), ) return result