diff -r 8bb63daa7b46 -r 6d825e2962e4 main/task_mqtt.c --- a/main/task_mqtt.c Sun Nov 10 20:53:01 2019 +0100 +++ b/main/task_mqtt.c Mon Nov 11 16:54:12 2019 +0100 @@ -338,6 +338,7 @@ void task_mqtt(void *pvParameter) { esp_err_t err; + char *uri = NULL, port[11]; ESP_LOGI(TAG, "Starting MQTT task"); xSemaphorePcounter = xSemaphoreCreateMutex(); @@ -369,7 +370,7 @@ xEventGroupMQTT = xEventGroupCreate(); EventBits_t uxBits; esp_mqtt_client_config_t mqtt_cfg = { - .uri = "mqtt://seaport.mbse.ym", + .uri = "mqtt://localhost", }; client = esp_mqtt_client_init(&mqtt_cfg); esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client); @@ -382,10 +383,33 @@ uxBits = xEventGroupWaitBits(xEventGroupMQTT, TASK_MQTT_CONNECT | TASK_MQTT_DISCONNECT, pdFALSE, pdFALSE, portMAX_DELAY ); if (uxBits & TASK_MQTT_CONNECT) { - ESP_LOGI(TAG, "Request MQTT connect"); + if (strlen(config.mqtt_server)) { + uri = xstrcpy((char *)"mqtt://"); + if (strlen(config.mqtt_user) && strlen(config.mqtt_pwd)) { + uri = xstrcat(uri, config.mqtt_user); + uri = xstrcat(uri, (char *)":"); + uri = xstrcat(uri, config.mqtt_pwd); + uri = xstrcat(uri, (char *)"@"); + } + uri = xstrcat(uri, config.mqtt_server); + if (config.mqtt_port != 1883) { + uri = xstrcat(uri, (char *)":"); + sprintf(port, "%d", config.mqtt_port); + uri = xstrcat(uri, port); + } + } else { + uri = xstrcpy((char *)"mqtt://iot.eclipse.org:1883"); + } + ESP_LOGI(TAG, "Request MQTT connect %s", uri); + err = esp_mqtt_client_set_uri(client, uri); + if (err != ESP_OK) + ESP_LOGE(TAG, "Set uri %s", esp_err_to_name(err)); err = esp_mqtt_client_start(client); if (err != ESP_OK) ESP_LOGE(TAG, "Result %s", esp_err_to_name(err)); + if (uri) + free(uri); + uri = NULL; xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT); } else if (uxBits & TASK_MQTT_DISCONNECT) {