<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def disconnect(self):
 """Disconnect an open tunnel connection"""

        if self.connected and self.channel:
            logging.debug("Disconnecting KNX/IP tunnel...")

            frame = KNXIPFrame(KNXIPFrame.DISCONNECT_REQUEST)
            frame.body = self.hpai_body()

            # TODO: Glaube Sequence erhoehen ist nicht notwendig im Control
            # Tunnel beim Disconnect???
            if self.seq < 0xff:
                self.seq += 1
            else:
                self.seq = 0

            self.control_socket.sendto(
                bytes(frame.to_frame()), (self.remote_ip, self.remote_port))
            # TODO: Impelement the Disconnect_Response Handling from Gateway
            # Control Channel > Client Control Channel

        else:
            logging.debug("Disconnect - no connection, nothing to do")

        self.channel = None
        self.connected = False