Page 1 of 1

ESP32 IDF and AWS MQTT

Posted: Wed Mar 27, 2024 9:11 pm
by yiondeivis
Hi!

I am trying to connect to the MQTT service of AWS IoT using the MQTT API of the ESP32 IDF, and I have the following code:

Code: Select all

char complete_uri[60];
    sprintf(complete_uri, "mqtts://%s:%d", url, port);

 
    const esp_mqtt_client_config_t mqtt_cfg = {
    
        .broker = {
            .address ={
                .uri = complete_uri
            },
            .verification.certificate = certificate,
        },
        .credentials = {
            .authentication ={
                .key = private_key
            },
            .client_id = client_id
        }
        
    };

    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
    esp_err_t conn_validation = esp_mqtt_client_start(client);
In the event handler it receives an TCP_TRANSPORT_ERROR when using the structure of "mqtts://aws_endpoint:8883" there is any other thing I need to configure? or is any parameter not valid here? certificate and private_key are both given by the AWS IoT core certificates being the certificate .pem.crt and the key .pem.key.

Thanks in advance!

Re: ESP32 IDF and AWS MQTT

Posted: Thu Mar 28, 2024 4:03 am
by chegewara
It may be broken, so, did you try to populate other values in this struct (instead of uri)?

Code: Select all

        struct address_t {
            const char *uri; /*!< Complete *MQTT* broker URI */
            const char *hostname; /*!< Hostname, to set ipv4 pass it as string) */
            esp_mqtt_transport_t transport; /*!< Selects transport*/
            const char *path;               /*!< Path in the URI*/
            uint32_t port;                  /*!< *MQTT* server port */
        } address;
       
Especially transport, as the error is suggesting it is not correct value. (MQTT_TRANSPORT_OVER_SSL)