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

def operate_on_bulb(self, method, params=None):
        """
            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
        """
        # 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)