'Initialize the device.
The namelist argument lists the required addresses. E.g. for a dimming
actuators, the namelist might look like:
onoff_address: 0/0/1
brightness_address: 0/0/2'

def __init__(self, hass, config, required, optional=None):

    from knxip.core import parse_group_address, KNXException
    self.names = {}
    self.values = {}
    self._config = config
    self._state = False
    self._data = None
    _LOGGER.debug('%s:    initalizing    KNX    multi    address    device', self.name)
    settings = self._config.config
    if config.address:
        _LOGGER.debug('%s:    base    address:    address=%s', self.name, settings.get('address'))
        self.names[config.address] = 'base'
    if config.state_address:
        _LOGGER.debug('%s,    state    address:    state_address=%s', self.name, settings.get('state_address'))
        self.names[config.state_address] = 'state'
    for name in required:
        paramname = '{}{}'.format(name, '_address')
        addr = settings.get(paramname)
        if (addr is None):
            _LOGGER.error('%s:    Required    KNX    group    address    %s    missing', self.name, paramname)
            raise KNXException('%s:    Group    address    for    {}    missing    in    configuration    for    {}'.format(self.name, paramname))
        _LOGGER.debug('%s:    (required    parameter)    %s=%s', self.name, paramname, addr)
        addr = parse_group_address(addr)
        self.names[addr] = name
    for name in optional:
        paramname = '{}{}'.format(name, '_address')
        addr = settings.get(paramname)
        _LOGGER.debug('%s:    (optional    parameter)    %s=%s', self.name, paramname, addr)
        if addr:
            try:
                addr = parse_group_address(addr)
            except KNXException:
                _LOGGER.exception('%s:    cannot    parse    group    address    %s', self.name, addr)
            self.names[addr] = name
