code: def operate_on_bulb(self, method, params=None):
          
          # Get the message
          self.command = YeelightCommand(self.next_cmd_id(), method, params)
          # Send with socket
          tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          tcp_socket.connect((self.ip, int(self.port)))
          tcp_socket.send(self.command.get_message().encode())
          data = tcp_socket.recv(4096)
          tcp_socket.close()
          # Process the response
          self.response = YeelightResponse(data.decode(), self.command)
docs: Build socket and send command to the bulb through it
  
              :param method: method you want to use
              :param params: parameters needed for this method (can be a string if ony one parameter is needed)
  
              :type method: str
              :type params: list of str