automatizacion some-terminal

8 € y un llavero BLE: cómo hacer que tu asistente local sepa si has llegado antes de que le hables

Un beacon BLE con nRF51822 cuesta menos de 10 € y le da presencia real a tu asistente local: detecta llegadas y salidas sin app, GPS ni nube.

ver producto ~8€
8 € y un llavero BLE: cómo hacer que tu asistente local sepa si has llegado antes de que le hables

💡 Antes de empezar Necesitas: un beacon BLE con nRF51822, una pila CR2032, un Mac mini o una Raspberry Pi que estén siempre encendidos, Python con pip y un asistente local que ya sepa hacer algo útil, aunque sea responder texto. Tiempo estimado: 30-45 minutos para detectar el llavero, sacar eventos de arrived y left y enchufarlos a tu asistente o a Home Assistant. Nivel: Necesitas perder el miedo a la terminal y aceptar que vas a tocar un .env, dar permisos de Bluetooth y probar un par de tiempos hasta que la presencia no dé falsos positivos.

El problema no es la voz: es el contexto

Muchos asistentes locales escuchan y responden razonablemente bien, pero siguen teniendo memoria de pez. Si les hablas desde el salón o desde la calle, para ellos es casi lo mismo. No saben si acabas de llegar, si la casa está vacía o si conviene hablarte en voz alta porque de verdad estás delante.

La solución comercial suele ser tirar de geolocalización del móvil. Funciona, pero casi siempre a cambio de una app del fabricante, permisos de ubicación permanentes y, muchas veces, una dependencia incómoda de internet. Si lo que quieres es contexto local para un asistente que vive en casa, eso es matar moscas a cañonazos.

Un llavero BLE cambia la jugada. Lo llevas encima, emite una identidad por radio cada poco tiempo y un Mac o una Raspberry Pi pueden decidir si te has ido o si has vuelto sin pedir GPS, sin hablar con una nube y sin convertir el teléfono en otro punto de fallo.

Qué compras exactamente

El cacharro aquí no es un AirTag ni un localizador bonito con app propia. Es algo bastante más simple y, para este caso, bastante más útil: un beacon BLE genérico con chip nRF51822.

BLE significa Bluetooth Low Energy, una variante de Bluetooth pensada para dispositivos pequeños que pasan la mayor parte del tiempo dormidos y solo “levantan la mano” durante un instante para anunciar que siguen ahí. Eso es justo lo que quieres en un llavero de presencia.

La familia nRF51822 de Nordic lleva años siendo una base muy común para beacons porque consume poco, soporta Bluetooth LE y aparece en un montón de placas y etiquetas baratas. En la práctica, lo habitual es encontrarte un llavero redondo o cuadrado, con carcasa de plástico, una CR2032 dentro y opciones para cambiar el intervalo de anuncio, la potencia y el identificador.

¿Por qué esto y no Wi-Fi o infrarrojos?

  • Con Wi-Fi, el consumo sube muchísimo y además obligas al llavero a parecerse más a un gadget conectado que a una baliza tonta de pila.
  • Con IR, necesitas línea de visión. Si las llaves están en un bolsillo o detrás de una mochila, adiós presencia.
  • Con BLE, el llavero puede emitir su identidad, dormir y repetir. Es barato, simple y suficiente.

Cómo lo abrimos

La palabra importante aquí es iBeacon. Es un formato de anuncio BLE popularizado por Apple. No manda audio, ni texto libre, ni “tu ubicación”. Lo que emite es una identidad compacta: un UUID y dos números llamados major y minor.

Traducido a lenguaje normal:

  • El UUID es el apellido del sistema: la familia de beacons que te interesa escuchar.
  • major te sirve para distinguir un grupo.
  • minor te sirve para distinguir una unidad concreta, por ejemplo tu llavero y no el del resto de la casa.

La parte buena es que esto no exige una sesión conectada todo el rato. Un iBeacon genérico suele vivir sobre anuncios BLE, no sobre una conexión mantenida como la de unos auriculares. Tu Mac o tu Pi se limitan a escuchar el aire y a decidir si han visto la baliza lo bastante a menudo como para considerarte en casa.

Algunos beacons sí exponen GATT para configurarse. GATT es la parte de BLE que sí funciona como un árbol de servicios y características con lectura y escritura. Sirve para cambiar parámetros como el intervalo de anuncio, la potencia o el UUID. Pero para la presencia diaria no hace falta mantener una conexión GATT abierta: basta con escuchar los anuncios.

Si ya tienes el cerebro del asistente montado, esto encaja muy bien con algo como un asistente local en Raspberry Pi o con un satélite de voz que publique eventos en Home Assistant.

Cómo lo ponemos a trabajar

La forma más directa de empezar en Mac o Linux es bleak, una librería de Python para escanear dispositivos BLE sin pelearte con APIs nativas desde cero.

python3 -m venv .venv
source .venv/bin/activate
pip install bleak

Con eso no necesitas emparejar el llavero ni abrir su app. Solo escuchar anuncios y filtrar por el UUID o por el nombre que emita el beacon si lo expone.

El flujo mental es este:

  1. El llavero emite anuncios BLE cada cierto intervalo.
  2. El Mac o la Raspberry Pi los ve y actualiza una marca de tiempo.
  3. Si pasan X segundos sin anuncios, lanzas left.
  4. Si vuelven a aparecer varios anuncios seguidos, lanzas arrived.

La parte útil es que esos eventos ya no son “domótica por domótica”. Son contexto para tu asistente local. Puedes guardarlos en un .env, enviarlos por MQTT, dejarlos como entidades en Home Assistant o meterlos en el prompt del agente como una variable más.

Polling, escucha continua y por qué aquí salen 24 segundos

Aquí conviene no vender magia. 24 segundos no es una cifra del estándar BLE. Es una política sensata para no volverte loco.

Si escuchas el beacon cada pocos segundos y marcas left en cuanto pierdes un paquete, la presencia será insoportable: una pared, el microondas o un bolsillo mal colocado bastarán para hacer creer al sistema que has desaparecido. Si esperas cinco minutos, el contexto llega tarde y el asistente ya no sabe si tiene que recibirte o callarse.

El punto medio suele ser algo así:

  • considerar arrived cuando has visto el beacon varias veces seguidas;
  • considerar left solo cuando han pasado varias ventanas sin oírlo.

Por eso 24 segundos tiene sentido como heurística práctica. No porque el llavero “mantenga una conexión” con el Mac, sino porque tú decides que tres ventanas sin anuncios ya significan que probablemente te has ido de verdad.

También ayuda tocar dos parámetros del beacon:

  • el intervalo de anuncio, para no emitir demasiado lento;
  • la potencia de transmisión, para no convertir media escalera en “tu casa”.

Qué capa de IA le ponemos encima

La gracia no es encender una luz al llegar. La gracia es que el asistente deje de hablar a ciegas.

Ejemplos que sí tienen sentido:

  • Si sales de casa, el asistente entra en modo silencioso y deja de leer avisos por voz.
  • Si vuelves, te resume en una frase corta qué notificaciones o eventos se han acumulado.
  • Si detecta que estás fuera, puede responder por texto al móvil pero no por altavoz.
  • Si estás dentro, puede permitir órdenes de voz más abiertas porque sabe que hay alguien real delante del micro.

Esto también abre automatizaciones más finas que la app propietaria de un localizador normal no suele dar. Por ejemplo: “si he vuelto y la lavadora terminó hace una hora, dímelo al entrar”, o “si nadie está en casa, baja el nivel de verbosidad del asistente y deja solo alertas críticas”.

Lista de compra

  • Un beacon BLE genérico con nRF51822 y pila CR2032.
  • Un Mac mini, un MacBook que no duerma agresivamente o una Raspberry Pi con Bluetooth.
  • Python y bleak.
  • Tu asistente local favorito: Ollama, LM Studio, Home Assistant o el stack que ya uses.
  • Si quieres integrarlo bien en casa: MQTT o Home Assistant como capa de eventos.

Lo que no te van a contar

BLE no es magia. Comparte la banda de 2.4 GHz con Wi-Fi, periféricos y medio salón moderno, así que puede haber interferencias. El rango útil real en casa suele estar más cerca de una habitación grande o dos estancias razonables que de “toda la vivienda sin pensar”.

Tampoco es identidad perfecta. El asistente no sabe si estás en casa; sabe si tu llavero está en casa. Si dejas las llaves en la entrada y sales a pasear al perro, el sistema seguirá creyendo que sigues dentro.

La batería importa. Un beacon barato con CR2032 puede durar meses, pero no eternamente, y cuanto más agresivos sean el intervalo y la potencia, antes te tocará cambiar pila.

Y hay otro detalle práctico que suele olvidarse: si el Mac duerme o el Bluetooth del host entra en un estado raro, la presencia se vuelve torpe. Para un sistema fiable, mejor un equipo siempre encendido y aburrido que un portátil que entra y sale de reposo cuando le da la gana.

Fuentes para verificar antes de comprar

Veredicto

Sí compraría un beacon así si ya tienes un asistente local montado y notas que le falta contexto más que inteligencia. Por menos de lo que cuesta una comida rápida le das una señal de presencia bastante útil sin meter otra nube en medio.

No lo recomendaría como primer proyecto de domótica ni como sistema de presencia “perfecto”. Pero como capa barata para que un asistente sepa cuándo hablar, cuándo callar y cuándo recibirte, es exactamente el tipo de cacharro pequeño que luego termina siendo imprescindible.