def register_listener(self, address, func):
        """Adds a listener to messages received on a specific address

        If some KNX messages will be received from the KNX bus, this listener
        will be called func(address, data).
        There can be multiple listeners for a given address
        """
        try:
            listeners = self.address_listeners[address]
        except KeyError:
            listeners = []
            self.address_listeners[address] = listeners

        if not func in listeners:
            listeners.append(func)

        return True
Adds a listener to messages received on a specific address

        If some KNX messages will be received from the KNX bus, this listener
        will be called func(address, data).
        There can be multiple listeners for a given address