1️⃣ Proyecto base: configuraci贸n inicial en Espressif IDF

Iniciamos creando un nuevo proyecto, seleccionamos

NEW PROJECT

Seleccionamos la versi贸n del Espressif

Nombramos a nuestro proyecto "TAGOIO_MQTT", elegimos el ESP32-S3 y seleccionamos

Choose Template

Elegimos una plantilla base:

template-app

2️⃣ Comunicaci贸n segura: conexi贸n MQTTs desde el ESP32-S3

Recursos que usaremos:

mqtt_conn.h

mqtt_conn.c

wifi_conn.h

wifi_conn.c

Kconfig.projbuild

menu "Marse Settings"

    menu "WiFi Settings"

        config WIFI_SSID
            string "SSID de la red Wi-Fi"
            default "MiRed"
            help
                Nombre de la red Wi-Fi (AP) a la que se conectar谩 el ESP32-S3 en modo estaci贸n.
                Debe coincidir exactamente con el SSID del router o punto de acceso.

        config WIFI_PASSWORD
            string "Password de la red Wi-Fi"
            default "12345678"
            help
                Contrase帽a de la red Wi-Fi. Si tu red no tiene clave, puedes dejarlo vac铆o.
                El driver se configura por defecto para WPA2-PSK. Ajusta la seguridad en
                tu c贸digo si usas otros modos avanzados.

        config WIFI_MAX_RETRY
            int "N煤mero m谩ximo de reintentos"
            range 1 10
            default 3
            help
                N煤mero m谩ximo de intentos de conexi贸n antes de rendirse.
                Si se alcanza este n煤mero, el ESP32-S3 dejar谩 de intentar conectarse
                hasta que se reinicie o se llame a la funci贸n de conexi贸n nuevamente.

        config WIFI_POWER_SAVE
            int "Wi-Fi Power Save mode"
            range 0 2
            default 0
            help
            0 = WIFI_PS_NONE
            1 = WIFI_PS_MIN_MODEM
            2 = WIFI_PS_MAX_MODEM

    endmenu

    menu "MQTT Settings"

        config MQTT_URI
            string "Broker URI"
            default "mqtts://mqtt.tago.io:8883"
            help
            URI del broker MQTT. Esquemas soportados: mqtt, mqtts, ws, wss.
            Ejemplos:
                - mqtts://mqtt.tu-broker.io:8883
                - wss://tu-dominio:443/mqtt

        config MQTT_USERNAME
            string "Username"
            default ""
            help
            Nombre de usuario para autenticaci贸n MQTT (p.ej., "Token" en TagoIO).

        config MQTT_PASSWORD
            string "Password"
            default ""
            help
            Contrase帽a/Token del dispositivo. Considera usar NVS/Flash Encryption en producci贸n.

        config MQTT_CLIENT_ID
            string "Client ID (opcional)"
            default ""
            help
            Identificador del cliente. Si se deja vac铆o, el firmware genera uno con la MAC.

        config MQTT_TOPIC_PUB
            string "Publish topic"
            default "esp32s3/data"
            help
            T贸pico al que publicar谩 el dispositivo.

        config MQTT_TOPIC_SUB
            string "Subscribe topic"
            default "esp32s3/cmd"
            help
            T贸pico al que el dispositivo se suscribir谩 para recibir comandos.

        config MQTT_KEEPALIVE
            int "Keepalive (seconds)"
            range 10 65535
            default 120
            help
            Intervalo de keepalive MQTT en segundos.

        config MQTT_RECONNECT_MS
            int "Reconnect timeout (ms)"
            range 1000 600000
            default 10000
            help
            Tiempo de espera antes de reintentar la conexi贸n.

        config MQTT_CLEAN_SESSION
            bool "Clean session"
            default y
            help
            Si est谩 activado: clean session = true
            (en esp-mqtt v5 se mapea a disable_clean_session = false).

    endmenu

endmenu