ESP-32 не может подключиться к брокеру MQTT: mqtt_client: ошибка сетевого ответа - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь подключить мой ESP32, который работает с использованием инфраструктуры ESP-IDF, к MQTT. Я успешно импортировал эту библиотеку MQTT и настроил конфигурацию так:

static void mqtt_app_start(void)
{
    const esp_mqtt_client_config_t mqtt_cfg = {
        // .host = "m15.cloudmqtt.com",
        .uri = "mqtt://rxarkckf:smNb81Ppfe7T@m15.cloudmqtt.com:10793", // uri in the format (username:password@domain:port)
        // .host = "m15.cloudmqtt.com", // config with host, port, user, password seperated
        // .port = 10793,
        // .username = "rxarkckf",
        // .password = "smNb81Ppfe7T",

        .event_handle = mqtt_event_handler,
        // .user_context = (void *)your_context
    };

    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
    esp_mqtt_client_start(client);
}

Я вызываю mqtt_app_start (); в моей функции app_main. После загрузки кода мой ESP-32 не подключается к брокеру MQTT и выдает следующее:

␛[0;32mI (12633410) MQTT_CLIENT: Sending MQTT CONNECT message, type: 1, id: 0000␛[0m
␛[0;31mE (12633710) MQTT_CLIENT: Error network response␛[0m
␛[0;32mI (12633710) MQTT_CLIENT: Error MQTT Connected␛[0m
␛[0;32mI (12633710) MQTT_CLIENT: Reconnect after 10000 ms␛[0m
␛[0;32mI (12633710) MQTT_SAMPLE: MQTT_EVENT_DISCONNECTED␛[0m

Я дважды проверил правильность значений хоста, имени пользователя, пароля и порта. Когда я просматриваю логи веб-интерфейса, размещенного на cloudmqtt.com, я вижу следующие результаты:

2018-11-17 03:50:53: New connection from 73.94.66.49 on port 10793.
2018-11-17 03:50:53: Invalid protocol "MQIs�" in CONNECT from 73.94.66.49.
2018-11-17 03:50:53: Socket error on client <unknown>, disconnecting.
2018-11-17 03:51:20: New connection from 73.94.66.49 on port 10793.

1 Ответ

0 голосов
/ 21 ноября 2018

У меня был похожий опыт использования комаров.

Добавление этой строки в mqtt_config.h сделало мой mqtt работающим.

#define CONFIG_MQTT_PROTOCOL_311

Я думаю, что более правильный способ настроить эту конфигурацию - это sdkconfig.h, либо вручную, либо используя "make menuconfig"

...