COMUNICACIÓN CON DISPOSITIVOS BLUETOOTH A TRAVÉS DE JAVASCRIPT

Los sitios web pueden comunicarse con dispositivos Bluetooth cercanos de una manera segura que preservan la privacidad gracias a la API Web Bluetooth. La comunicación con dispositivos Bluetooth a través de JavaScript , una interfaz disponible en navegadores modernos que permite interactuar con dispositivos Bluetooth Low Energy, o BLE. La API Web Bluetooth permite a aplicaciones web descubrir, conectar y comunicarse con dispositivos Bluetooth cercanos que soporten GATT (Generic Attribute Profile), como sensores, wearables, o dispositivos IoT. No todos los navegadores la soportan (por ejemplo, Firefox no la implementa actualmente), y requiere un entorno seguro (HTTPS o localhost).
Se deben conocer los UUIDs de los servicios y características del dispositivo (se puede encontrar en la documentación del dispositivo o usar acceptAllDevices para pruebas). Los errores más comunes incluyen pérdida de conexión, permisos denegados, o características no soportadas. Es aconsejable usar try/catch para manejar excepciones. La API Web Bluetooth requiere permisos explícitos del usuario, y los datos transmitidos deben manejarse con cuidado para evitar vulnerabilidades. Hay que asegurarse que en los móviles de que el Bluetooth esté activado. En Android, Chrome es el principal navegador compatible.

Requisitos

  • Navegador compatible como Chrome, Edge, o navegadores basados en Chromium. Verifica que la API esté habilitada (puede estar detrás de una bandera experimental en algunos casos).
  • HTTPS, la API Web Bluetooth solo funciona en contextos seguros (HTTPS o localhost).
  • El dispositivo Bluetooth, debe soportar Bluetooth Low Energy (BLE) y tener un perfil GATT.
  • El usuario debe autorizar la conexión al dispositivo.
Ejemplo:

async function connectToBluetoothDevice() {
  try {
    // Verificar soporte de Web Bluetooth
    if (!navigator.bluetooth) {
 throw new Error('Web Bluetooth API no está soportada en este navegador.');
    }

    // Solicitar un dispositivo Bluetooth
    const device = await navigator.bluetooth.requestDevice({
 acceptAllDevices: true, // O especifica servicios UUID: filters: [{ services: ['battery_service'] }]
 optionalServices: ['battery_service'] // Servicios opcionales
    });

    console.log('Dispositivo encontrado:', device.name);

    // Conectar al servidor GATT
    const server = await device.gatt.connect();
    console.log('Conectado al dispositivo');

    // Obtener un servicio
    const service = await server.getPrimaryService('battery_service');

    // Obtener una característica
    const characteristic = await service.getCharacteristic('battery_level');

    // Leer el valor de la característica
    const value = await characteristic.readValue();
    console.log('Nivel de batería:', value.getUint8(0), '%');

    // Suscribirse a notificaciones (si el dispositivo las soporta)
    characteristic.addEventListener('characteristicvaluechanged', (event) => {
 const value = event.target.value;
 console.log('Notificación recibida - Nivel de batería:', value.getUint8(0), '%');
    });
    await characteristic.startNotifications();
    console.log('Suscripción a notificaciones activada');

  } catch (error) {
    console.error('Error:', error);
  }
}

// Botón para iniciar la conexión
document.getElementById('connectButton').addEventListener('click', connectToBluetoothDevice);
  • navigator.bluetooth.requestDevice: Abre un diálogo para que el usuario seleccione un dispositivo Bluetooth. Puedes filtrar dispositivos por servicios o nombres.
  • device.gatt.connect: Establece una conexión con el dispositivo.
  • getPrimaryService y getCharacteristic: Acceden a los servicios y características GATT del dispositivo.
  • readValue: Lee un valor de la característica.
  • startNotifications: Se suscribe a cambios en la característica, útil para datos que cambian dinámicamente (como sensores).
Los dispositivos Bluetooth de Baja Energía o BLE)son dispositivos que utilizan la tecnología Bluetooth Low Energy, diseñada para consumir poca energía mientras mantienen un rango de comunicación similar al Bluetooth clásico. Esta tecnología, introducida con Bluetooth 4.0, es ideal para aplicaciones en el Internet de las Cosas (IoT), cuidado de la salud, fitness, hogares inteligentes, seguridad, etc...h2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">Características principales de dispositivos Bluetooth de Baja Energía
  • Bajo consumo energético: BLE está diseñado para operar con baterías pequeñas (como pilas de botón) durante meses o incluso años, ya que permanece en modo de suspensión y solo se activa para conexiones rápidas (latencia de ~6 ms frente a los ~100 ms del Bluetooth clásico).
  • Rango de alcance: Típicamente de 2 a 5 metros en entornos reales, pero puede llegar a 30-100 metros en línea de visión, dependiendo del diseño de la antena y la potencia de transmisión.
  • Velocidad de transferencia: Hasta 1 Mbps (2 Mbps en Bluetooth 5), adecuada para pequeñas cantidades de datos.
  • Seguridad: Utiliza cifrado AES-128 y esquemas configurables para proteger las transmisiones.
  • Compatibilidad: Compatible con la mayoría de sistemas operativos móviles (iOS, Android, Windows Phone, BlackBerry) y de escritorio (macOS, Linux, Windows 8/10/11).

Tipos de dispositivos Bluetooth de Baja Energía

Los dispositivos BLE se dividen en roles como centrales (smartphones, tablets) y periféricos (sensores, wearables). Algunos ejemplos comunes incluyen: Wearables: Relojes inteligentes, pulseras de fitness (rastreadores de pasos, monitores de frecuencia cardíaca, glucosa).
  • Balizas (Beacons): Dispositivos pequeños que emiten señales para navegación en interiores, marketing de proximidad o seguimiento de activos.
  • Dispositivos médicos: Sensores de temperatura, presión arterial o glucómetros.
  • Domótica: Sensores de temperatura, humedad, luces inteligentes y termostatos.
  • Audio BLE: Auriculares y altavoces inalámbricos que usan el perfil LE Audio (Bluetooth 5.2) con códec LC3 para mejor calidad de sonido y menor latencia.
  • Redes Mesh: Permiten conectar miles de dispositivos para automatización del hogar o control industrial.