diff -r b1f38105ca7e -r bad3414f7bc4 main/task_mqtt.c --- a/main/task_mqtt.c Thu Mar 30 17:05:05 2023 +0200 +++ b/main/task_mqtt.c Thu Mar 30 21:55:24 2023 +0200 @@ -192,6 +192,10 @@ case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); + char *topic = topic_base(); + topic = xstrcat(topic, (char *)"output/set/#"); + ESP_LOGI(TAG, "Subscribe `%s' id %d", topic, esp_mqtt_client_subscribe(client, topic, 0)); + free(topic); xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECTED); break; @@ -222,7 +226,7 @@ case MQTT_EVENT_DATA: ESP_LOGI(TAG, "MQTT_EVENT_DATA"); - printf("TOPIC=%.*s\r\n", event->topic_len, event->topic); + printf("TOPIC=%.*s ", event->topic_len, event->topic); printf("DATA=%.*s\r\n", event->data_len, event->data); break; @@ -231,12 +235,12 @@ break; case MQTT_EVENT_BEFORE_CONNECT: - ESP_LOGI(TAG, "MQTT_EVENT_BEFORE_CONNECT"); + ESP_LOGD(TAG, "MQTT_EVENT_BEFORE_CONNECT"); // Configure connection can be here. break; default: - ESP_LOGI(TAG, "Other event id:%d", event->event_id); + ESP_LOGE(TAG, "Other event id:%d", event->event_id); break; } return ESP_OK; @@ -298,12 +302,19 @@ 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) + if (err != ESP_OK) { ESP_LOGE(TAG, "Result %s", esp_err_to_name(err)); + } xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT); } else if (uxBits & TASK_MQTT_DISCONNECT) { ESP_LOGI(TAG, "Request MQTT disconnect"); + if (ready_mqtt()) { + char *topic = topic_base(); + topic = xstrcat(topic, (char *)"output/set/#"); + esp_mqtt_client_unsubscribe(client, topic); + free(topic); + } esp_mqtt_client_stop(client); xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_DISCONNECT); xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECTED);