1️⃣ Proyecto base: ESP32-S3 + TagoIO (HTTP)

Iniciamos creando un nuevo proyecto, seleccionamos

NEW PROJECT

Seleccionamos la versi贸n del Espressif

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

Choose Template

Elegimos una plantilla base:

template-app

2️⃣ Conexi贸n del ESP32-S3 a la red Wi-Fi local

Recursos que usaremos

wifi_conn.c

 

wifi_conn.h

 

Kconfig.projbuild

menu "WiFi Settings"

config WIFI_SSID
    string "SSID de la red Wi-Fi"
    default "MiRed"

config WIFI_PASSWORD
    string "Password de la red Wi-Fi"
    default "12345678"

config WIFI_MAX_RETRY
    int "N煤mero m谩ximo de reintentos"
    default 5

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

 

Agregamos estos archivos a la carpeta main de nuestro proyecto

Ingresamos al men煤 de configuraciones ejecutando el siguiente comando en la terminal del proyecto:

idf.py menuconfig

Ingresamos a la opcion de:

WiFi Settings

Editamos el SSID , Password, el numero Maximo de reintentos y el modo de consumo:

Guardamos los cambios y recontruimos el proyecto ejecutando el siguiente comando en el terminal:

idf.py reconfigure

Nos conectamos a la red local y esperamos a que se nos asigne una direcci贸n IP.

main.c

#include "stdio.h"
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include "esp_log.h"

#include "sdkconfig.h"
#include "wifi_conn.h"

static const char *TAG = "MAIN";

void app_main(void){

    conection_Wifi(CONFIG_WIFI_SSID,CONFIG_WIFI_PASSWORD,CONFIG_WIFI_MAX_RETRY);
    //inicia en el modo 0 -> WIFI_PS_NONE 

}

3️⃣ TagoIO: crear dispositivo y obtener token

Ingresamos a la plataforma de TagoIO

Creamos un nuevo Dispositivo "Custom HTTPS"

Generamos un nuevo Token

Ya tenemos listo para integrarlo al ESP32 S3

4️⃣ Endpoint HTTP: enviar el primer dato

 

Recursos que usaremos

tago_http.c

 

tago_http.h

 

Actualizamos el archivo:

Kconfig.projbuild

menu "WiFi Settings"

config WIFI_SSID
    string "SSID de la red Wi-Fi"
    default "MiRed"

config WIFI_PASSWORD
    string "Password de la red Wi-Fi"
    default "12345678"

config WIFI_MAX_RETRY
    int "N煤mero m谩ximo de reintentos"
    default 5

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 "TagoIO Settings"

config TAGO_REGION
    string "Regi贸n API de TagoIO"
    default "us-e1"
    help
      Regi贸n de tu cuenta TagoIO (ejemplo: us-e1, eu-w1).
      La URL quedar谩: https://api..tago.io/data

config TAGO_DEVICE_TOKEN
    string "Device-Token del dispositivo"
    default ""
    help
      Copia aqu铆 el Device-Token generado para tu dispositivo en TagoIO.
      ⚠️ Tr谩talo como secreto (no compartir p煤blicamente).

endmenu

 

Simularemos los datos de temperatura y los enviaremos cada 10 segundos.

main.c

#include "stdio.h"
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include "esp_log.h"

#include "sdkconfig.h"
#include "wifi_conn.h"
#include "tago_http.h"

#include "esp_random.h" //libreria para generar numeros aleatorios

static const char *TAG = "marse";

void app_main(void){

    conection_Wifi(CONFIG_WIFI_SSID,CONFIG_WIFI_PASSWORD,CONFIG_WIFI_MAX_RETRY); //inicia en el modo 0 -> WIFI_PS_NONE

    while(wifi_is_connected() == true)  // ingresa al while solo si esta conectado a la red
    {
        float temp = (esp_random()%8000)/100.0f; //genera un numero aleatorio entre 0 y 80.00
        tago_post_number("temp", temp, "C"); //envia datos a TagoIO
        ESP_LOGE(TAG, "data enviada a TagoIO");
        vTaskDelay(pdMS_TO_TICKS(10000)); // espera 10 segundos
    }

    ESP_LOGI(TAG, "No se conecto al a red WiFi");
}

En la terminal ingresamos al men煤 de configuraci贸n con el comando:

idf.py menuconfig

Ingresamos a la Opcion.

TagoIO Settings

Ingresamos la regi贸n y el token del dispositivo creado en TagoIO.

Guardamos los cambios, subimos el c贸digo a nuestro ESP32-S3 y nos dirigimos a TagoIO, en la pesta帽a:

Inspector

Ejemplo de c贸mo enviar dos datos en una sola llamada.

main.c
#include "stdio.h"
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include "esp_log.h"

#include "sdkconfig.h"
#include "wifi_conn.h"
#include "tago_http.h"

#include "esp_random.h" //libreria para generar numeros aleatorios

static const char *TAG = "marse";

void app_main(void){

    conection_Wifi(CONFIG_WIFI_SSID,CONFIG_WIFI_PASSWORD,CONFIG_WIFI_MAX_RETRY); //inicia en el modo 0 -> WIFI_PS_NONE

    while(wifi_is_connected() == true)  // ingresa al while solo si esta conectado a la red
    {
        uint32_t temp = esp_random() % 101;   // 0–100
        uint32_t hum  = 40 + (esp_random() % 31);  // 40–70 %

        char batch[256];
        snprintf(batch, sizeof(batch),
        "[{\"variable\":\"temp\",\"value\":%lu,\"unit\":\"C\"},"
        "{\"variable\":\"hum\",\"value\":%lu,\"unit\":\"%%\"}]",
        temp, hum);
        tago_post_batch_json(batch);

        vTaskDelay(pdMS_TO_TICKS(15000)); //espera 15 segundos para volver a enviar datos

    }
}