Cómo usar Bloomit como logger web en tiempo real para tu ESP32
Bloomit tiene dos modos para registrar datos: WiFi directo desde la placa o USB Serial desde el navegador sin tocar la red. Guía completa de ambos enfoques.
Dos formas de hacer logging con Bloomit
Cuando querés registrar datos de un sensor en Bloomit tenés dos caminos, y elegir bien cuál usar depende de en qué etapa del proyecto estás:
- Modo WiFi: el ESP32 conecta a la red y hace un POST HTTP directo a la API de Bloomit. Ideal para el dispositivo ya instalado funcionando de forma autónoma.
- Modo Serial USB: la placa está conectada por cable USB a la PC, imprime JSON por Serial, y el navegador lo lee con la Web Serial API y lo reenvía a la API en tiempo real. Ideal para desarrollo, debugging y laboratorio.
Lo interesante es que podés usar ambos sobre el mismo dispositivo y la misma cuenta: el historial de datos se ve igual en el dashboard sin importar cómo llegaron los datos.
Modo Serial USB: el logger desde el navegador
Este es el feature más potente para trabajar en el banco de pruebas. En vez de configurar WiFi y esperar que el ESP32 conecte, enchufás el cable USB, abrís el panel en Chrome o Edge, y en 30 segundos estás viendo los datos en tiempo real.
Funciona gracias a la Web Serial API, una API de los navegadores modernos que permite a una página web comunicarse con puertos serie USB directamente, sin drivers ni aplicaciones intermedias.
Cómo se usa en el panel de Bloomit
Dentro del panel de dispositivos hay una sección Testear Dispositivo (ruta /devices/test). Ahí podés:
- Conectar al puerto USB de tu ESP32 eligiendo el baud rate (por defecto 115200)
- Ver en tiempo real todo lo que la placa imprime por Serial
- Cuando el mensaje es JSON válido con el comando correcto, Bloomit lo procesa automáticamente
- Los datos de sensores se reenvían a la API y aparecen en el dashboard
- Los mensajes de log se muestran en la consola del panel con íconos por tipo
Navegadores soportados: Chrome 89+ y Edge 89+. Firefox y Safari no implementan la Web Serial API todavía.
Formato del protocolo Serial
El ESP32 imprime líneas JSON por Serial. Bloomit entiende dos comandos:
Enviar una lectura de sensor:
// Cada línea es un JSON con salto de línea al final
Serial.println("{\"token\":\"<deviceToken>\",\"cmd\":\"sense\",\"sensorType\":\"soil_humidity\",\"value\":65.3}");Al recibir este JSON, Bloomit valida el token del dispositivo, extrae el tipo de sensor y el valor, y hace el POST a la API automáticamente. El dato aparece en el historial del dashboard al instante.
Enviar un log de debug:
// type puede ser: "info", "warn", "error"
Serial.println("{\"token\":\"<deviceToken>\",\"cmd\":\"log\",\"type\":\"info\",\"message\":\"Setup completo, WiFi OK\"}");
// También podés imprimir texto plano — se muestra como log sin procesar
Serial.println("Temperatura leída: 22.5°C");Si el texto no es JSON válido, Bloomit lo muestra igual en la consola del panel como mensaje de texto plano. Entonces no tenés que cambiar nada de tu código de debug existente para ver los prints.
Firmware de ejemplo con modo dual (WiFi + Serial)
#include <ArduinoJson.h>
const char* DEVICE_TOKEN = "eyJhbGciOi..."; // tu deviceToken
const int SENSOR_PIN = 34;
// Envía dato al panel vía Serial (para usar con Bloomit Web Serial)
void logToPanel(const char* sensorType, float value) {
StaticJsonDocument<200> doc;
doc["token"] = DEVICE_TOKEN;
doc["cmd"] = "sense";
doc["sensorType"] = sensorType;
doc["value"] = value;
String out;
serializeJson(doc, out);
Serial.println(out);
}
void debugLog(const char* message, const char* type = "info") {
StaticJsonDocument<200> doc;
doc["token"] = DEVICE_TOKEN;
doc["cmd"] = "log";
doc["type"] = type;
doc["message"] = message;
String out;
serializeJson(doc, out);
Serial.println(out);
}
void setup() {
Serial.begin(115200);
debugLog("Iniciando...");
// ... resto del setup
debugLog("Setup completo");
}
void loop() {
int raw = analogRead(SENSOR_PIN);
float humidity = map(raw, 4095, 1500, 0, 100);
debugLog(("Humedad leída: " + String(humidity)).c_str());
logToPanel("soil_humidity", humidity);
delay(3600000); // cada 1 hora
}Con este firmware podés estar en el banco, conectado por USB, viendo los datos llegar al panel en tiempo real. Cuando el dispositivo esté listo para producción, agregás el stack WiFi y el HTTP POST y seguís usando el mismo código como fallback de debug.
Modo WiFi: envío directo desde la placa
Una vez que el dispositivo está instalado y conectado a la red, el flujo es completamente autónomo: el ESP32 hace el POST directamente a la API de Bloomit sin necesidad de que ninguna PC esté encendida.
Registrar cuenta y dispositivo
Creá tu cuenta gratis en bloomit.app/register. Para obtener el token del dispositivo, hacés login primero:
POST https://user.api.bloomit.app/auth/login
Content-Type: application/json
{ "email": "tu@email.com", "password": "tupassword" }
// → { "token": "eyJhbGci..." } ← userToken
POST https://device.api.bloomit.app/register
Authorization: Bearer <userToken>
Content-Type: application/json
{ "name": "Sensor Maceta Ventana", "metadata": { "location": "living" } }
// → { "deviceToken": "eyJhbGci...", "deviceId": "abc123" } ← guardá esteEnviar lecturas por WiFi desde el ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
const char* SSID = "tu_red";
const char* PASSWORD = "tu_password";
const char* DEVICE_TOKEN = "eyJhbGciOi...";
void sendReading(const char* sensorType, float value) {
HTTPClient http;
http.begin("https://device.api.bloomit.app/sense");
http.addHeader("Authorization", "Bearer " + String(DEVICE_TOKEN));
http.addHeader("Content-Type", "application/json");
StaticJsonDocument<128> doc;
doc["sensorType"] = sensorType;
doc["value"] = value;
String body;
serializeJson(doc, body);
int code = http.POST(body);
http.end();
}
void loop() {
float humidity = readSensor();
sendReading("soil_humidity", humidity);
delay(3600000); // cada 1 hora
}Cuándo usar cada modo
- Serial USBDesarrollo y debug: No necesitás WiFi, ves logs en tiempo real, ideal para banco de pruebas
- WiFi directoProducción y campo: Funciona sin PC, el dispositivo opera de forma autónoma 24/7
Ver los datos en el panel
Independientemente de cómo llegaron los datos (WiFi o Serial), todo queda en el mismo historial. En el panel de bloomit.app podés ver la lectura más reciente de cada sensor, el gráfico de tendencia de los últimos 7 días, y el estado del dispositivo (online/offline según su última conexión).
Si asignás una especie de planta al dispositivo, el panel muestra el estado de salud en colores según los umbrales recomendados para esa especie: verde cuando todo está bien, amarillo si algún parámetro baja de lo óptimo, rojo si la planta necesita atención.
Límites del plan free
El plan gratuito permite 25 lecturas por dispositivo por día — una lectura por hora está perfectamente dentro del límite. Los planes SaaS con mayor frecuencia están disponibles en bloomit.com.ar.
Bloomit
Empezá a monitorear tus plantas hoy
Registrá tu cuenta gratis en el panel web y conectá tu primer dispositivo en minutos. Para conseguir hardware Bloomit, visitá bloomit.com.ar.