Ingesta
Topics, QoS, formato del payload, timestamps y cómo detectamos un dispositivo caído. Tus dispositivos se conectan hacia afuera, contra nuestro broker, con credenciales que podés revocar cuando quieras.
bloomiot/v1/d/<deviceId>/telemetryDocumentación
Si tus dispositivos ya publican por MQTT —o tu gateway corre su propio network server LoRaWAN— no hace falta esperar a nadie. Te damos credenciales, mapeás tus campos y tenés mapa de zonas, historial y alertas corriendo sobre el hardware que ya está en el campo.
MQTT 3.1.1 / 5.0 · LoRaWAN · TLS 1.2+ · JSON · sin SDK obligatorio
Qué publica cada tipo de dispositivo
El mismo contrato de telemetría, en tres formas reales. Elegí un tipo de dispositivo para ver su payload y qué campos ya entiende el Workspace.
{
"deviceId": "node-lot3-04",
"ts": "2026-08-27T14:20:05Z",
"zone": "zone-b",
"fw": "1.4.2",
"metrics": {
"soil_moist": 0.31,
"battery_v": 3.71
},
"status": {
"rssi": -78
}
}metrics.soil_moist → Humedad de suelometrics.battery_v → Bateríastatus.rssi → Intensidad de señalUn Soil Sensor Node reporta humedad y batería a intervalo fijo — sin válvula, sin presión, solo la lectura de campo.
Ingesta y mapeo alcanzan para monitoreo completo. El control remoto es opcional y depende de tu firmware.
Topics, QoS, formato del payload, timestamps y cómo detectamos un dispositivo caído. Tus dispositivos se conectan hacia afuera, contra nuestro broker, con credenciales que podés revocar cuando quieras.
bloomiot/v1/d/<deviceId>/telemetryAsociá los campos de tu JSON a variables del Workspace, con conversión de unidades y vista del último mensaje recibido.
soil_moist (0–1) → Humedad de suelo (%)Para abrir y cerrar válvulas desde el Workspace, tu firmware tiene que suscribirse al topic de comandos y devolver el estado. Sin eso, todo lo demás funciona igual en modo monitoreo.
.../commands · QoS 1La ingesta es uniforme: cualquier cosa que publique entra. El control no lo es, y preferimos decirlo acá antes de que lo descubras a mitad de la integración.
MQTT nativo
Tu firmware, ESP32 u otro MCU
Cliente MQTT sobre TLS y suscripción al topic de comandos.
LoRaWAN
El servidor integrado de tu gateway
Una integración MQTT en el network server del propio gateway, apuntada a las credenciales que emite el Workspace.
LoRaWAN (Bloomiot Network Server)
Alojado por nosotros · desde Scale
Apuntá el gateway a nuestro LNS. Nosotros registramos cada nodo y emitimos sus claves OTAA.
API REST / webhook
Plataformas y dataloggers
Un endpoint con token. Sin canal de retorno hacia el dispositivo.
El mismo camino que sigue cualquier cuenta con hardware propio dentro del Workspace.
Generar las credenciales del dispositivo
Registrar el dispositivo y publicar un mensaje de prueba
Mapear tus campos JSON a variables del Workspace
Enviar telemetría real y confirmar que llega al dispositivo
Asignar el dispositivo a una zona
Activar las alertas que aplican a tu dato
El mismo esquema que publica cualquier dispositivo, sea Bloomiot o de terceros.
Protocolo
MQTT 3.1.1 / 5.0
Transporte
TLS 1.2+ · puerto 8883
QoS
1 · al menos una vez
Intervalo de telemetría
Desde 60 s por dispositivo
Identidad
1 credencial por dispositivo
Comandos
QoS 1 · envelope JSON
Timestamp
ISO 8601 UTC
Detección de caída
Topic de status · patrón Last Will
Transferencia de firmware
Nunca por MQTT · HTTPS + SHA-256
bloomiot/v1/d/{deviceId}/telemetryDispositivo → nube. Lecturas de sensores, o el lote de nodos hijos de un gateway.
bloomiot/v1/d/{deviceId}/statusDispositivo → nube. Estado de conexión; funciona como Last Will cuando el dispositivo se cae sin avisar.
bloomiot/v1/d/{deviceId}/commandsNube → dispositivo. Control de válvula, reinicio y actualización OTA, QoS 1.
bloomiot/v1/d/{deviceId}/events/otaDispositivo → nube. Progreso de OTA: accepted, downloading, verifying, success, failed.
Todo campo más allá de deviceId y ts es opcional: enviá solo lo que tu hardware mide.
deviceIdstringObligatoriotsISO 8601Obligatoriometrics.soil_moist0 – 1Opcionalmetrics.pressure_bar0 – 20 barOpcionalmetrics.flow_lpm0 – 1000 L/minOpcionalmetrics.battery_v0 – 5 VOpcionalstatus.valveopen · closedOpcionalstatus.rssinumberOpcionalEjemplo: un dispositivo publicando telemetría
LoRaWAN
El mismo Workspace, las mismas alertas, el mismo historial. Lo que cambia es quién corre el network server: tu gateway o nosotros.
La mayoría de los gateways de terceros traen un network server a bordo, casi siempre ChirpStack. Tus nodos se unen a él, sus claves de sesión nunca salen del campo, y el gateway reenvía cada uplink a Bloomiot por MQTT.
Para gateways sin servidor propio, o flotas que prefieren no correr uno. Apuntás el gateway a nuestro LNS y nosotros resolvemos el join, las claves y el ruteo.
No tenés que adivinar en cuál estás
El Workspace lo decide por el modelo del gateway. El hardware que sabemos que trae servidor embebido queda en esa ruta; el que sabemos que no tiene, va al nuestro. Solo un modelo del que no tenemos registro deja la elección abierta, y ahí el campo Network server del formulario es tuyo.
Las dos terminan en el mismo lugar: un dispositivo reportando dentro de una zona. Lo que cambia es el medio.
Registrá el gateway
Devices → Add device, conectividad LoRaWAN, tipo Gateway. Elegí fabricante y modelo; el campo Network server se resuelve en Built into this gateway.
Copiá las credenciales MQTT
El registro emite host del broker, usuario y contraseña, y se muestran una sola vez. Descargá el archivo de setup antes de cerrar el diálogo.
Apuntá el servidor del gateway a Bloomiot
En su panel: ChirpStack → Applications → Integrations → MQTT. Cargá el host sobre TLS y las credenciales del paso 2.
Declará tus nodos en ChirpStack
Cada nodo necesita un device profile con codec de payload. Bloomiot lee el objeto decodificado, así que un nodo sin codec llega con bytes que nadie puede leer.
Registrá esos mismos nodos en el Workspace
Cargá cada uno por DevEUI y asociálo al gateway del paso 1. El DevEUI es lo que une un uplink con un dispositivo.
Confirmá el primer uplink
El nodo pasa a online y sus lecturas aparecen en el historial del dispositivo. Después mapeás los campos que querés graficar y lo asignás a una zona.
Registrá el gateway
El mismo formulario, con Network server en Bloomiot Network Server.
Apuntá el gateway a nuestro LNS
La hoja de setup trae los endpoints LNS y CUPS, la clave del gateway y el plan de frecuencias de tu región.
Registrá cada nodo por DevEUI
Bloomiot lo aprovisiona en el network server y emite su JoinEUI y su AppKey.
Cargá las claves OTAA en el nodo
DevEUI, JoinEUI y AppKey, con la herramienta de configuración del fabricante. Después encendélo para que haga el join.
Confirmá el join
El nodo figura como unido apenas el network server lo ve, y las lecturas siguen en su propio intervalo de reporte.
Mapeá y asigná
El mismo paso final de siempre: mapeás los campos que querés y ponés el dispositivo en una zona.
Workspace · registro del gateway, con el network server al que resuelve su modelo
Los dos network servers envuelven lo mismo: lo que decodificó el codec de tu device profile. Ese objeto es lo que mapeamos.
application/{applicationId}/device/{devEui}/event/upGateway → Bloomiot. Un publish por cada uplink de nodo.
application/{applicationId}/device/{devEui}/command/downBloomiot → gateway. Encola un downlink en tu propio network server.
deviceInfo.devEui16 hexUne el uplink con un dispositivo registradodeviceInfo.applicationIdstringSe guarda en el primer uplink · direcciona los downlinksobjectJSON decodificadoSalida del codec — las lecturastimeISO 8601Si falta, se usa la hora de llegadarxInfo[].rssinúmeroEl gateway que mejor lo escuchóChirpStack v3 y v4 funcionan por igual: el DevEUI se lee en cualquiera de las dos grafías. Un uplink de un nodo que no registraste se descarta en vez de guardarse: en una banda compartida tu gateway también escucha hardware que no es tuyo.
Tu codec nombra sus propios campos. Estos son los nombres que Bloomiot reconoce; cualquier otro queda fuera de las métricas en vez de interpretarse a ciegas.
Humedad de suelo
soil_moist · soil_moisture · soilMoistureSe guarda como 0–1. Por encima de 1 se lee como porcentaje y se escala.
Presión de línea
pressure_bar · pressureBar · pressurebar
Caudal
flow_lpm · flowLpm · flowlitros por minuto
Batería
battery_v · batteryV · battery_voltage · batteryVoltagevolts
humidity está ausente a propósito. En la mayoría de los nodos es humedad del aire, y darle eso a humedad de suelo sería regar con el número equivocado. Si el tuyo mide suelo de verdad, renombrálo en el codec.
La integración MQTT de ChirpStack es bidireccional, así que el control no necesita conexión entrante a tu gateway ni una segunda API. Bloomiot publica en el topic de comandos y tu propio network server encola el downlink.
Lo que publica Bloomiot
{
"devEui": "A84041XXXXXXXXXX",
"confirmed": true,
"fPort": 10,
"object": { "valve": "open", "output": 1 }
}Clase C
Receptor siempre abierto. El comando se aplica en segundos.
Clase B
Ventanas fijas por beacon. El comando se aplica en la siguiente.
Clase A
Solo escucha justo después de transmitir. El comando queda encolado y se aplica en el próximo uplink, típicamente entre 15 y 60 minutos.
El Workspace te dice cuál aplica antes de confirmar, a partir del modelo que registraste. Un controlador que parece no responder casi siempre es un nodo Clase A que todavía no habló.
Elegir un modelo completa el protocolo, el plan de frecuencias, la clase del dispositivo y si el gateway corre su propio network server. Lo que no esté en la lista igual se registra: elegí Other y cargás los campos vos.
La mayoría figura como supported: especificaciones conocidas, campos precargados y cumplimiento del estándar. Verified queda reservado para el hardware que efectivamente encendimos y corrimos de punta a punta.
Cada alerta declara qué variable necesita. Si tus dispositivos no la publican, aparece deshabilitada en el Workspace en vez de fallar en silencio.
Válvula abierta sin presión
La presión de línea cae por debajo de 1.8 bar con una válvula abierta.
pressure_bar + estado de válvula
Caída brusca de presión
La presión cae más de 0.8 bar más rápido que el patrón esperado.
pressure_bar
Caudal con válvula cerrada
Se detecta caudal por encima de 1 L/min cuando todas las válvulas deberían estar cerradas.
flow_lpm + estado de válvula
La humedad no subió tras el riego
Una zona sube menos de 2% después de un ciclo de riego completo.
soil_moist + zona
Dispositivo sin comunicación
Sin mensajes por más de 10 minutos, o el topic de status reporta offline.
nada · cualquier dispositivo
Batería por agotarse
La tensión de batería cae por debajo del 20% para ese nodo.
battery_v
Catálogo completo (18 reglas) disponible dentro del Workspace, en Alerts.
Los mismos módulos, venga tu dato de hardware Bloomiot o de tus propios dispositivos.
Inteligencia satelital
Los planes Scale y Enterprise suman imágenes satelitales Sentinel-2 sobre tu dato de campo — sin hardware extra, sin integración extra, y funciona sin importar qué ruta de las de arriba elegiste.
Cobertura de todo el campo
Un sensor de suelo reporta un punto. La imagen Sentinel-2 cubre todo el lote a 10 m de resolución, así que una zona con estrés sin sensor cerca igual aparece.
Cinco índices de vegetación y humedad
NDVI, NDMI, NDRE, MSAVI y RECI convierten la imagen cruda en señales de vigor, estrés hídrico y clorofila que tu equipo puede accionar.
Funciona antes de instalar el primer dispositivo
Las capas satelitales aparecen apenas creás el sitio — incluso antes de registrar un solo sensor.
Cruza el dato con la realidad de campo
Cuando la lectura de un sensor y la imagen no coinciden, esa diferencia suele ser la primera señal de una sonda fallando o un riego desparejo.
En desarrollo
Nodos de humedad de suelo, un Edge Controller con accionamiento de válvulas y detección de fugas por presión. Llega provisionado de fábrica: sin integración, sin mapeo y sin firmware que escribir. Todavía no está disponible; la guía de instalación se publica al lanzamiento.
Soporte
Mandanos un payload de ejemplo y el modelo del dispositivo, pedí credenciales de prueba, o marcanos algo que esté mal en esta página. Cada mensaje llega directo a nuestro equipo.