async def connect(self): resolved_ip = resolve_destination(self._config["ip_address"]) domain = f"{resolved_ip }:{self._config['port']}" url = f"http://{domain}/qlcplusWS" if self._client is None: self._client = QLCWebsocketClient(url, domain) self._cancel_connect() self._connect_task = asyncio.create_task(self._client.connect()) if await self._connect_task: await super().connect(f"Connected to QLC+ websocket at {domain}")
def activate(self): self.WLEDReceiver = False self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # check if ip/hostname resolves okay self.device_ip = resolve_destination(self._config["ip_address"]) if not self.device_ip: _LOGGER.warning( f"Cannot resolve destination {self._config['ip_address']}, aborting device {self.name} activation. Make sure the IP/hostname is correct and device is online." ) return # If the device is a WLED device, turn it on if wled_identifier(self.device_ip, self.name): self.WLEDReceiver = True self.wled_state = wled_power_state(self.device_ip, self.name) if self.wled_state is False: turn_wled_on(self.device_ip, self.name) super().activate()
def activate(self): if self._config["ip_address"].lower() == "multicast": multicast = True else: multicast = False if self._sacn: raise Exception("sACN sender already started.") if multicast is False: self.device_ip = resolve_destination(self._config["ip_address"]) if not self.device_ip: _LOGGER.warning( f"Cannot resolve destination {self._config['ip_address']}, aborting device {self.name} activation. Make sure the IP/hostname is correct and device is online." ) return if wled_identifier(self.device_ip, self.name): self.WLEDReceiver = True self.wled_state = wled_power_state(self.device_ip, self.name) if self.wled_state is False: turn_wled_on(self.device_ip, self.name) # Configure sACN and start the dedicated thread to flush the buffer # Some variables are immutable and must be called here self._sacn = sacn.sACNsender(source_name=self.name) for universe in range(self._config["universe"], self._config["universe_end"] + 1): _LOGGER.info(f"sACN activating universe {universe}") self._sacn.activate_output(universe) self._sacn[universe].priority = self._config[ "e131_Packet_Priority"] if self._config["ip_address"] == "multicast": self._sacn[universe].multicast = True else: self._sacn[universe].destination = self.device_ip self._sacn[universe].multicast = False self._sacn._fps = self._config["refresh_rate"] self._sacn.start() self._sacn.manual_flush = True _LOGGER.info("sACN sender started.") super().activate()