Contexto
House.of desarrolla producto digital y hardware conectado, y nos incorpora como equipo móvil en los proyectos que lo requieren. Aquí el encargo no era una app sobre una web existente, sino la pieza que pone en marcha el propio hardware: un dispositivo IoT recién sacado de la caja no sabe conectarse a ninguna red, y alguien tiene que dárselo a conocer.
El reto
Un dispositivo IoT nuevo no tiene wifi configurado, así que no se le puede hablar por internet. El único canal disponible antes de eso es Bluetooth Low Energy, y BLE no resuelve por sí solo ni el descubrimiento fiable de dispositivos, ni el envío de mensajes que superan el tamaño de un paquete, ni ninguna noción de sesión persistente. Había que construir esa capa desde cero antes de poder construir la app.
Qué hicimos
Desarrollamos dos piezas. Primero, una librería propia de comunicación BLE, con un protocolo a medida sobre Bluetooth Low Energy: descubrimiento e identificación de dispositivos, gestión de conexión con keepalive, troceado de mensajes grandes, mensajería pub/sub, llamadas RPC con timeouts, serialización binaria compacta y streams de eventos en tiempo real. El canal va cifrado y cada dispositivo se valida criptográficamente antes de aceptar sus credenciales.
Sobre esa librería, la app en Flutter para iOS y Android: escanea los dispositivos cercanos, se conecta, les envía las credenciales wifi para que entren en la red, y lee de vuelta su configuración y sus comandos, incluido el reinicio remoto.
Por qué así
Separar el protocolo BLE de la app fue la decisión que hizo posible todo lo demás. La app se distribuye en tres marcas blancas distintas desde una única base de código — una de ellas para tugesto —, y cada marca blanca solo cambia identidad visual y textos: la lógica de descubrimiento, conexión y mensajería es exactamente la misma librería, reutilizada sin duplicar ni un solo caso límite del protocolo.
Construir la librería en vez de improvisar el intercambio de mensajes dentro de la propia app también es lo que permite que sea testeable de forma aislada, sin depender de tener un dispositivo físico delante en cada ciclo de desarrollo.
Resultado
La app está publicada en tiendas, en sus tres marcas blancas. Es distinto del resto de nuestros encargos para House.of: ahí encapsulamos productos web ya construidos, aquí construimos el protocolo de comunicación con el hardware desde el primer byte.