📡 Sensores BLE — Lectura de datos inalámbricos
Guía para configurar la lectura de sensores Bluetooth Low Energy en dispositivos Rinho IoT.
Esta guía cubre la lectura de sensores BLE (temperatura, humedad, combustible, presencia). Si necesita configurar un terminal serie inalámbrico para enviar comandos desde el celular, consulte la guía de Vinculación BLE (SPP).
🤔 ¿Para qué sirve la lectura de sensores BLE?
El módulo BLE permite conectar sensores inalámbricos al equipo GPS:
- 🌡️ Temperatura y humedad — Cadena de frío con sensores Rinho Condition (L02S)
- ⛽ Combustible — Nivel de tanque con Escort TD BLE
- 🚪 Puertas — Apertura/cierre con sensor magnético (Hall)
- 🏷️ Presencia — Detección de choferes, herramientas o remolques con iBeacon
- 🆘 Pánico — Botón de emergencia inalámbrico con pulsera MoKo W6
Se pueden configurar hasta 4 sensores BLE simultáneos (BS00 a BS03), cada uno vinculado a un sensor específico por su dirección MAC.
🔧 Requisitos previos
Antes de empezar se necesita:
| Requisito | Detalle |
|---|---|
| Equipo | Spider IoT, Smart IoT o Zero IoT |
| Sensor BLE | Rinho Condition (L02S), Escort TD, iBeacon u otro compatible |
| App celular | Cargando... |
| Terminal serie | Cable USB o Cargando... |
🔄 Elegir y cargar el firmware BLE
Spider IoT / Smart IoT
El ESP32 tiene dos particiones de firmware intercambiables. Para usar BLE es necesario cargar el firmware Nimble:
BLE y WiFi no pueden coexistir en la misma partición del Spider / Smart IoT. Si se necesitan ambos, cargar cada firmware en una partición diferente y cambiar con >SFRMCP0< / >SFRMCP1<.
Zero IoT
El Zero IoT posee un único firmware que incluye BLE y WiFi. No es necesario cambiar de firmware, pero ambas funcionalidades no pueden estar activas al mismo tiempo:
// Usar BLE: apagar WiFi
>SSSWIFPWR00<
// Usar WiFi: apagar BLE
>SSSBTHPWR00<| Señal | Comando encender | Comando apagar | Función |
|---|---|---|---|
WIFPWR | >SSSWIFPWR11< | >SSSWIFPWR00< | Controla el módulo WiFi |
BLEPWR | >SSSBTHPWR11< | >SSSBTHPWR00< | Controla el módulo BLE |
En el Zero IoT no hace falta descargar firmware especial. Solo hay que desactivar WiFi con >SSSWIFPWR00< cuando se quiera usar BLE, y viceversa.
Cargar firmware Nimble en Spider / Smart IoT
Configurar URL de descarga
Iniciar descarga por WiFi o celular
>SFRMM1< // Por WiFi (más rápido)
>SFRMM2< // Por celular (si no hay WiFi)Esperar la actualización
El equipo descarga, instala y reinicia automáticamente. Puede tardar 2-5 minutos por celular.
Verificar firmware
>QVR<La respuesta debe incluir NIMBLE:
>RVR RINHO IOT v1.09.16 SP EG915U LC86G 16MB NIMBLE 2025-01-15 10:30:00;ID=...Particiones de firmware (Spider / Smart): Si se tiene WiFi en una partición y se desea BLE en la otra, usar >SFRMCP0< o >SFRMCP1< para cambiar entre particiones sin perder ninguna. Luego reiniciar con >SRST<.
🌡️ Caso 1: Sensor de temperatura y humedad — Rinho Condition (L02S)
El sensor más usado en los equipos Rinho. Mide temperatura, humedad y tiene un sensor magnético (Hall) para detectar apertura de puertas.
📦 Ficha técnica del Rinho Condition · Cargando...
Paso 0: Encender el sensor
El sensor viene apagado de fábrica:
- Desenroscar la tapa inferior del sensor (giro antihorario)
- Retirar la tapa para acceder al interior
- Presionar el botón interno durante 3 segundos hasta que el LED parpadee
- Volver a enroscar la tapa
Una vez encendido, el sensor comienza a transmitir por BLE automáticamente. Para apagar: mantener presionado el botón 10 segundos.
Paso 1: Configurar el sensor con BeaconX Pro
Instalar la app
Cargando...Conectar al sensor
- Abrir BeaconX Pro y escanear dispositivos
- Tocar el sensor Rinho Condition (L02S) para conectar
Configurar Slot 2 como Sensor Info
El sensor tiene 3 “slots” (canales de broadcasting). Para que el equipo Rinho lea los datos correctamente:
- Ir a Slot 2 (SLOT2)
- Cambiar el tipo a Sensor Info
- Guardar los cambios
Anotar la dirección MAC
En la pantalla principal del sensor conectado, anotar la MAC address (ej: AC233FA24B16). Se necesitará para configurar el BS.
Configurar sensor magnético Hall (si se usa detección de puerta)
Paso crítico si se necesita usar el sensor de efecto Hall (detección de puerta). Muchos usuarios no ven cambios en el estado magnético porque omiten este paso.
Por defecto, el sensor tiene habilitado el modo “Magnet On/Off” que apaga/enciende el sensor con un imán, en vez de reportar el estado magnético. Para usarlo como sensor de puerta, hay que desactivar esa función:
- En BeaconX Pro, ir a la sección Sensor
- Buscar la opción “Magnet On/Off”
- Desactivar “Magnet On/Off”
- Guardar los cambios
Ahora el sensor reportará continuamente el estado del campo magnético en el atributo mag_st (0 = cerrado, 1 = abierto).
Paso 2: Configurar BS en el equipo
>SBS00E,AC233FA24B16,10,60,0,INVALID<| Parámetro | Valor | Descripción |
|---|---|---|
00 | Índice | Posición del sensor (00 a 03) |
E | Habilitar | E=Habilitar, D=Deshabilitar |
AC233FA24B16 | MAC | Dirección MAC del sensor (sin :) |
10 | Tipo | 10 = Rinho Condition / Sensor Info (MK) |
60 | Timeout | Segundos sin señal para considerar desconectado |
0 | Distancia | 0 = sin filtro de distancia |
INVALID | Valor inválido | Texto cuando no hay lectura válida |
Paso 3: Verificar lectura
Consultar los atributos del sensor con el comando QBS:
>QBS00< // Estado general del sensor
>QBS00.temp< // Temperatura (ej: 23.5)
>QBS00.hum< // Humedad (ej: 65)
>QBS00.mag< // Magnético (0=cerrado, 1=abierto)
>QBS00.batt< // Batería del sensor (%)
>QBS00.rssi< // Intensidad de señal BLERespuesta típica completa:
>RBS00E,AC233FA24B16,10,60,0,INVALID;mag_st:0,mot_st:0,mag_cnt:5,mot_cnt:0,x:0,y:0,z:0,temp:23.5,hum:65,batt:95,tag:MK,rssi:-52;ID=...Los atributos disponibles para tipo 10 (MK) son: mag_st (magnético), mot_st (movimiento), mag_cnt, mot_cnt, x, y, z, temp, hum, batt, tag, rssi.
⛽ Caso 2: Sensor de combustible (Escort TD BLE)
El Escort TD es un sensor de nivel de combustible wireless que se instala en el tanque.
Configurar BS
>SBS01E,A1B2C3D4E5F6,30,60,10,INVALID<| Parámetro | Valor | Descripción |
|---|---|---|
01 | Índice | BS01 (puede ser cualquiera de 00-03) |
30 | Tipo | 30 = Escort TD (Combustible) |
A1B2C3D4E5F6 | MAC | MAC del Escort TD |
Consultar nivel
>QBS01.fuel_lvl< // Nivel de combustible
>QBS01.battery< // Batería del sensor
>QBS01.temp< // TemperaturaRespuesta:
>432;ID=... // 432 = nivel de combustible (unidad según sensor)🏷️ Caso 3: iBeacon para presencia y pánico
Los iBeacon son balizas simples que transmiten su identidad. Sirven para saber si un chofer, herramienta o remolque está cerca.
Configurar BS con iBeacon
>SBS02E,AABBCCDDEEFF,2,30,5,0<| Parámetro | Valor | Descripción |
|---|---|---|
02 | Índice | BS02 |
2 | Tipo | 2 = Eddystone UID / iBeacon presencia |
30 | Timeout | 30 segundos sin señal = ausente |
5 | Distancia | 5 metros máximo |
Usar señales en reglas
Cada sensor BS genera señales automáticas que se pueden usar en el motor de eventos:
| Señal | Significado |
|---|---|
BS02+ | El beacon fue detectado (entró en rango) |
BS02- | El beacon fue perdido (salió de rango o timeout) |
Ejemplo de regla: Reportar cuando un chofer sube o baja del vehículo:
// Regla: cuando el beacon del chofer es detectado, reportar
>SRL00E;TRG=BS02+;ACC={GCQ00H}<
// Regla: cuando el beacon se pierde, reportar
>SRL01E;TRG=BS02-;ACC={GCQ00H}<🔍 BSW: Auto-detección para escenarios dinámicos
El sistema BSW (Bluetooth Smart Wildcard) detecta automáticamente sensores sin conocer su MAC previamente. Filtra por UUID, Major y Minor del iBeacon.
¿Cuándo usar BSW en vez de BS?
| Escenario | Usar |
|---|---|
| Sensor fijo, siempre el mismo | BS (con MAC) |
| Semi-remolque intercambiable | BSW (sin MAC, filtra por UUID) |
| Múltiples sensores iguales rotando | BSW |
| Flota con semis que cambian de tractor | BSW |
Ejemplo: Tractor que conecta distintos semis
Cada semi tiene un beacon con el mismo UUID pero distinto Major. El tractor detecta automáticamente cuál semi está enganchado:
// BSW00 captura beacons con UUID específico y los inyecta en BS00
>SBSW00E,00,2F234454CF6D4A0FADF2F4911BA9FFA6,0,0,30,5<| Parámetro | Valor | Descripción |
|---|---|---|
00 | Índice BSW | BSW00 |
E | Habilitar | |
00 | Target | Inyectar MAC capturada en BS00 |
2F23...FFA6 | UUID | UUID del beacon del semi |
0 | Major | 0 = cualquier Major |
0 | Minor | 0 = cualquier Minor |
30 | Timeout | 30 segundos |
5 | Distancia | 5 metros máximo |
Consultar estado BSW
>QBSW00<Respuesta con dispositivo detectado:
>RBSW00E,00,2F234454CF6D4A0FADF2F4911BA9FFA6,0,0,30,5;detects:1,active:1,mac:AA:BB:CC:DD:EE:FF,rssi:-45,distance:1.50,age:3;ID=...BSW con múltiples targets
Para monitorear temperatura en 4 zonas de un semi frigorífico, con un sensor por zona:
// BSW00 captura sensores con Major 1-4 y los distribuye en BS00-BS03
>SBSW00E,00:01:02:03,2F234454CF6D4A0FADF2F4911BA9FFA6,1,4,60,0<El rango Major 1 a 4 hace que BSW capture hasta 4 sensores diferentes y los asigne a BS00, BS01, BS02 y BS03 respectivamente.
📊 Integrar datos BLE en reportes
Para que la plataforma reciba los datos de los sensores BLE, configurar un reporte de usuario (SUC) que incluya los tokens QBS:
Ejemplo: Reporte con temperatura y humedad
>SUC04 $RCQ| #| QCQ,5,64| $;PA=temp:2:| QBS00.temp| $;PA=hum:2:| QBS00.hum| $;PA=mag:1:| QBS00.mag<| Token | Descripción |
|---|---|
$RCQ | Encabezado de reporte |
# | Número de secuencia |
QCQ,5,64 | Posición GPS estándar |
$;PA=temp:2: | Parámetro adicional “temp” tipo float (2) |
QBS00.temp | Valor de temperatura del BS00 |
$;PA=hum:2: | Parámetro adicional “hum” tipo float (2) |
QBS00.hum | Valor de humedad del BS00 |
$;PA=mag:1: | Parámetro adicional “mag” tipo integer (1) |
QBS00.mag | Valor magnético del BS00 |
Tipos de dato para parámetros PA
| Código | Tipo | Ejemplo |
|---|---|---|
1 | Integer | mag:1:0 |
2 | Float | temp:2:23.5 |
3 | String | tag:3:MK |
Generar el reporte
>GCQ04H< // Genera un reporte SUC04 y lo envíaVer comando G para más opciones de generación.
Respuesta del equipo:
>RCQ04...;PA=temp:2:23.5;PA=hum:2:65;PA=mag:1:0;ID=...🔗 Crear reglas con sensores BLE
Es posible aprovechar las señales BS para crear automatizaciones con reglas (RL) y disparadores de usuario (UV):
Ejemplo 1: Alerta de temperatura alta
Primero creamos un disparador de usuario (UV) que monitoree la temperatura y se active cuando supere 35 grados:
// UV00: monitorea QBS00.temp (float), se activa cuando valor esta entre 350 y 9999
// (el sensor reporta temp x10, entonces 350 = 35.0 grados)
>SUV00FQBS00.temp,0,10,350,9999<
// Regla: si UV00 se activa (temp alta), generar reporte
>SRL02E;TRG=UV00+;ACC={GCQ04H}<
// Regla: si UV00 se desactiva (temp normal), generar reporte
>SRL03E;TRG=UV00-;ACC={GCQ04H}<| Parámetro SUV | Valor | Descripción |
|---|---|---|
00 | Índice | Disparador UV00 |
F | Tipo | Float (punto flotante) |
QBS00.temp | Comando | Valor a monitorear |
0 | Inicio | Posición del primer carácter |
10 | Largo | Cantidad de caracteres a extraer |
350 | Mínimo | Valor mínimo para activar (35.0 grados) |
9999 | Máximo | Valor máximo |
Ejemplo 2: Alerta de puerta abierta (sensor magnético)
// UV01: monitorea el estado magnético, se activa cuando mag vale 1 o mas
>SUV01FQBS00.mag,0,10,1,2<
// Regla: puerta abierta (magnético = 1)
>SRL04E;TRG=UV01+;ACC={GCQ04H}<
// Regla: puerta cerrada (magnético = 0)
>SRL05E;TRG=UV01-;ACC={GCQ04H}<Ejemplo 3: Presencia de chofer (señal directa BS)
// BS02 tiene el iBeacon del chofer
// Regla: reportar cuando se sube (beacon detectado)
>SRL06E;TRG=BS02+;ACC={GCQ00H}<
// Regla: reportar cuando se baja (beacon perdido)
>SRL07E;TRG=BS02-;ACC={GCQ00H}<🐛 Depuración BLE
Cuando un sensor no aparece o los datos son incorrectos, activar el debug BLE:
Ver frames BLE crudos
Usar el comando DB para activar el debug BLE:
>SDB0+BLX<Esto muestra en la consola de debug todos los paquetes BLE que recibe el equipo, incluyendo MACs, tipos y datos crudos. Útil para:
- Verificar que el sensor está transmitiendo
- Confirmar la MAC address
- Ver si el tipo de sensor es correcto
- Diagnosticar sensores desconocidos
Desactivar debug BLE
>SDB0-BLX<Activar debug general
>SDB1< // Nivel 1: mensajes principales
>SDB2< // Nivel 2: más detalle🔧 Solución de problemas
| Problema | Causa posible | Solución |
|---|---|---|
QVR no muestra NIMBLE ni BLE | Firmware incorrecto (Spider/Smart) | Cargar firmware Nimble (ver sección firmware) |
| Sensor no se detecta | MAC incorrecta | Verificar MAC con BeaconX Pro |
QBS00 devuelve INVALID | Sensor fuera de rango o apagado | Acercar sensor, verificar batería |
| Temperatura siempre 0 | Slot del sensor mal configurado | Configurar Slot 2 como Sensor Info en BeaconX Pro |
| WiFi dejó de funcionar (Spider/Smart) | BLE y WiFi comparten partición | Es normal: usar particiones (>SFRMCP<) |
| WiFi dejó de funcionar (Zero) | BLE y WiFi mutuamente excluyentes | Apagar BLE con >SSSBTHPWR00< antes de usar WiFi |
| Hall siempre en 0 | Modo “Magnet On/Off” activo | Desactivar en BeaconX Pro, sección Sensor |
| Equipo más lento | Escaneo BLE consume recursos | Es normal, considerar intervalos de escaneo |
| Sensor funciona intermitente | Señal débil o interferencia | Verificar >QBS00.rssi<, acercar sensor |
📱 Apps útiles
| App | Plataforma | Uso |
|---|---|---|
| Cargando... | Android/iOS | Configurar sensores MoKo (slots, intervalos, Hall) |
| Cargando... | Android | Enviar comandos al equipo Rinho por BLE |
| Cargando... | Android/iOS | Escanear y debuggear dispositivos BLE genéricos |
📝 Ejemplo completo
Configuración típica de un equipo con sensor de temperatura Rinho Condition (L02S) y beacon de presencia de chofer:
// 1. Verificar firmware BLE
>QVR<
>RVR RINHO IOT v1.09.16 SP EG915U LC86G 16MB NIMBLE ...;ID=...
// 2. Configurar sensor de temperatura en BS00
>SBS00E,AC233FA24B16,10,60,0,INVALID<
>RBS00E,AC233FA24B16,10,60,0,INVALID;...
// 3. Verificar lectura de temperatura
>QBS00.temp<
>23.5;ID=...
// 4. Configurar beacon de chofer en BS02
>SBS02E,DDEEFF112233,2,30,5,0<
>RBS02E,DDEEFF112233,2,30,5,0;...
// 5. Crear reporte con temperatura
>SUC04 $RCQ| #| QCQ,5,64| $;PA=temp:2:| QBS00.temp| $;PA=hum:2:| QBS00.hum<
// 6. Regla: reportar cuando chofer sube/baja
>SRL00E;TRG=BS02+;ACC={GCQ04H}<
>SRL01E;TRG=BS02-;ACC={GCQ04H}<
// 7. Regla: alerta temperatura alta
>SUV00FQBS00.temp,0,10,350,9999<
>SRL02E;TRG=UV00+;ACC={GCQ04H}<
// 8. Probar reporte manual
>GCQ04H<
>RCQ04...;PA=temp:2:23.5;PA=hum:2:65;ID=...📖 Resumen de comandos
| Comando | Función | Referencia |
|---|---|---|
>SBS00E,MAC,tipo,...< | Configurar sensor BLE | BS IoT |
>QBS00< | Estado del sensor | BS IoT |
>QBS00.temp< | Leer atributo específico | BS IoT |
>SBSW00E,...< | Configurar auto-detección | BSW IoT |
>QBSW00< | Estado de wildcard | BSW IoT |
>SUV00F...< | Disparador de usuario | UV |
>SRL00E;TRG=...;ACC={...}< | Regla del motor de eventos | RL |
>SUC04 ...< | Reporte de usuario | Reportes de usuario |
>GCQ04H< | Generar reporte | G |
>SDB0+BLX< | Debug BLE | DB |
>SFRMM1< / >SFRMM2< | Actualizar firmware | — |
>SFRMCP0< / >SFRMCP1< | Cambiar partición | — |
>SSSWIFPWR00< | Apagar WiFi (Zero IoT) | — |
>SSSBTHPWR00< | Apagar BLE (Zero IoT) | — |
🎯 Próximos pasos
- 📲 Vinculación BLE (SPP) — Terminal inalámbrico para configurar desde el celular
- 🚀 Primeros Pasos — Configuración básica del equipo
- 📶 Configurar WiFi — WiFi como canal alternativo
- 🧠 Motor de Eventos — Crear reglas avanzadas
- 📡 Comandos BLE — Referencia completa de BS, BSW y BE