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
Este lo declaro de forma global para tener acceso desde cualquier parte del programaAgregar 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