async configure() {
        if (this.controller.isInitialized) {
            throw new Error("Handle may only be configured while the MQTT controller is not initialized");
        }

        await this.controller.publishHomieAttributes(this);
        await this.controller.subscribe(this);

        for (const child of this.children) {
            try {
                await child.configure();
            } catch (e) {
                Logger.warn("MQTT handle " + child.getBaseTopic() + " failed to configure", e);
            }
        }

        for (const component of this.hassComponents) {
            try {
                await component.configure();
            } catch (e) {
                Logger.warn("Hass component " + component.getAutoconfTopic() + " failed to configure", e);
            }
        }
    }
Configure this handle. It will re-publish all autodiscovery-related attributes.
It will also configure all children handles.
This function must be used as a callback of the controller's reconfigure method so that the state is updated
accordingly.

@public
@return {Promise<void>}