Saltar a contenido

Código base para MQTT en ESP32 IDF

En este pequeño ejemplo voy a explicar como conectarse a un broker Mqtt, como enviar datos de una conversión ADC y como recibir datos y activar un relé por ejemplo.

He modificado el ejemplo de MQTT mediante TCP el cual envia un dato ADC al kuska broker y también recibe el comando de apagado y encendido.

Configuración la conexión a la red

La configuración del red realmente es muy simple, con la librería #include "protocol_examples_common.h" es como lo he hecho yo y como lo muestra en los ejemplos del IDF.

Configuración de MQTT

Para esto es verdad que existen mas pasos.

Configurar cliente

static esp_mqtt_client_handle_t client; 
Este lo declaro de forma global para tener acceso desde cualquier parte del programa

Agregar datos de la conexión

Como nos vamos a conectar a Kuska broker que por ahora esta completamente abierto, solo es necesario la IP.

Para esto existe la función mqtt_app_start()

static void mqtt_app_start(void){

    esp_mqtt_client_config_t mqtt_cfg = {
            .broker.address.uri = CONFIG_BROKER_URL,
    };

  client = esp_mqtt_client_init(&mqtt_cfg);
  esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
  esp_mqtt_client_start(client);

}

mqtt_cfg es una estructura que recibe distintos valores de configuración, por ahora solo sera necesario la uri

La constante CONFIG_BROKER_URL es reemplazada por la IP del broker y se usará el protocolo mqtt

Por ejemplo:

mqtt://200.234.232.238