BLOG
Ver a través de la pared con WiFi — probando en ESP32 el OSS de detección de personas sin cámara 『RuView』
『RuView』 es un OSS hecho en Rust que estima la presencia, la respiración y la postura de una persona sin cámara, usando los reflejos del WiFi (CSI). Repasamos cómo montarlo en un ESP32-S3 de 9 dólares, cómo probarlo con Docker y en qué se diferencia de esp-csi.

Estimar la presencia de una persona, su frecuencia respiratoria, su ritmo cardíaco e incluso la postura de su cuerpo, sin usar cámara alguna, solo con las ondas de radio WiFi que ya vuelan por la habitación. Suena a ciencia ficción, pero hemos llegado al punto de poder reproducirlo con un microcontrolador de 9 dólares y software OSS.
En el centro de todo está ruvnet/RuView: una plataforma de sensado WiFi escrita en Rust que ha reunido más de 60.000 estrellas. Convierte un ESP32-S3 en un nodo sensor, analiza los «patrones de reflexión» de las ondas WiFi y lee el estado de un espacio sin capturar imagen alguna.
En este artículo repasamos cómo funciona RuView y cómo está arquitectada, cómo probarla en la práctica y en qué se diferencia de OSS similares (espressif/esp-csi, WirelessEye). El objetivo es darte el material para decidir «¿debería adoptarla en mi propio proyecto?».
Por qué se «ve» a una persona sin cámara
La clave es el CSI (Channel State Information / información del estado del canal).
Las ondas WiFi no llegan en línea recta del transmisor al receptor. Rebotan en las paredes, los muebles y también en el cuerpo humano, y alcanzan el receptor por múltiples caminos. El CSI es el registro detallado de «qué frecuencias llegaron, cuánto se atenuaron y cuánto se desfasaron al llegar».
- Una persona se mueve → cambian los caminos de reflexión → cambia la forma de onda del CSI
- Una persona respira → el tórax sube y baja al milímetro → una micro-variación periódica se monta sobre el CSI
- Una persona adopta cierta postura → aparece una «huella» propia en el patrón de reflexión
Es decir, un router WiFi, con solo emitir ondas de radio, ya está «iluminando» la habitación. RuView se sitúa como el sensor receptor que lee esa luz reflejada (las ondas). Como no guarda imagen del modo en que lo hace una cámara, el rechazo en el plano de la privacidad es abrumadoramente menor, y esa es su mayor ventaja.
La arquitectura de RuView
RuView se divide, a grandes rasgos, en tres capas.
1. Nodo sensor (ESP32-S3)
El ESP32-S3 de 9 dólares cumple el papel de emitir los datos crudos de CSI. La familia ESP32 dispone de una API de adquisición de CSI a nivel de chip, así que puedes plantarte en la puerta de entrada al sensado WiFi con un microcontrolador barato de venta común, sin comprar equipo SDR (radio definida por software) dedicado. Esto es justo lo que democratizó el género de golpe.
2. Motor de procesamiento (Rust)
El CSI crudo está lleno de ruido. El núcleo de RuView es un motor de procesamiento de señal e inferencia escrito en Rust, y aquí realiza lo siguiente.
- Preprocesado como eliminación de ruido y corrección de fase
- Extracción de componentes periódicas como la respiración y el latido
- Cálculo de rasgos e inferencia de modelos para la detección de postura y presencia
Elegir Rust apunta, con seguridad, a combinar el rendimiento en tiempo real con la seguridad de memoria. Para un procesamiento de señal que corre de forma continua en el borde, es una elección razonable.
3. Capa de visualización y API
Es la capa que expone los resultados estimados al exterior a través de un panel o una API. Como todo se puede levantar junto con Docker, arrancarlo primero en tu propia máquina es el atajo para captar el panorama completo.
Probarlo con Docker
Antes de construir nada a fondo, ver primero un estado que funcione es el atajo hacia la comprensión. RuView está preparado para levantarse como una pila completa mediante Docker Compose.
git clone https://github.com/ruvnet/RuView.git
cd RuView
docker compose up
Con esto arrancan el motor de procesamiento y la capa de visualización, y puedes acceder al panel desde el navegador. La configuración está diseñada de modo que puedes inyectar datos de CSI de muestra y confirmar el comportamiento incluso sin un ESP32-S3 físico a mano, así que si quieres palpar «qué se puede leer siquiera del CSI», empezar por aquí es el camino más corto.
Para sensar de verdad, avanzas un paso más: grabas el firmware en el ESP32-S3 y envías el flujo de CSI hacia el motor. Solo en esta etapa «la respiración al otro lado de la pared» emerge por fin como cifras.
En qué se diferencia de esp-csi / WirelessEye
RuView no es el único OSS de sensado WiFi. Para ayudar en la decisión de adopción, aquí van tres representativos.
espressif/esp-csi
Es el repositorio oficial de Espressif, centrado en firmware y ejemplos para adquirir CSI en el ESP32. Su posición es la de «adquisición de CSI y ejemplos básicos», y da por sentado que la inferencia, la visualización y la operación de nivel superior las montarás tú.
- Fortaleza: oficial, ligero, lo más cercano al chip; adquiere CSI de forma fiable
- Debilidad: no cubre la detección de presencia ni la estimación de postura. Es una base, no un producto terminado
RuView se ubica con claridad si lo entiendes como algo que apila inferencia, visualización y operación por encima de esa capa estilo esp-csi de «adquirir el CSI».
WirelessEye
Es una herramienta que pone el foco en visualizar el CSI en tiempo real. Es fuerte en la fase de investigación y aprendizaje, cuando primero quieres ver con tus propios ojos «qué se está reflejando en las ondas». Dicho esto, no tiene el carácter de una infraestructura de procesamiento que integres directamente en un producto tal cual.
Dónde se sitúa RuView
| OSS | Foco | Carácter de su completitud |
|---|---|---|
| esp-csi | Adquisición de CSI | Base (capas superiores a construir uno mismo) |
| WirelessEye | Visualización de CSI | Para observación y aprendizaje |
| RuView | Adquisición 〜 inferencia 〜 visualización | Plataforma integrada |
Si «primero quieres entender el mecanismo», asomarte a las ondas con esp-csi o WirelessEye es rápido. Si «quieres probar de principio a fin la presencia, la respiración y la postura», ve con RuView: así queda el reparto de tareas.
Precauciones realistas al plantearse la adopción
Es una tecnología llena de promesas, pero si vas a usarla en producción necesitas trazar líneas con la cabeza fría.
- La precisión depende del entorno: el CSI cambia drásticamente con la disposición de los muebles, el material de las paredes y las interferencias de otros equipos WiFi. No es que «cualquier habitación dé precisión al instante»: el calibrado por entorno es un requisito previo.
- No es un reemplazo de la cámara, sino otra cosa: identificar individuos y reconocer movimientos finos es el dominio de la cámara. Donde el CSI es fuerte no es en el «quién», sino en una captación tosca del estado, respetuosa con la privacidad, como «hay alguien / se ha movido / está respirando».
- Escoge sus usos: monitoreo de personas mayores, control de climatización e iluminación por detección de ocupación, monitoreo de constantes durante el sueño… su verdadero valor se muestra justo en los lugares donde no quieres poner una cámara.
Dicho al revés: en escenarios con la restricción de «no se puede / no se quiere poner cámara», RuView, con el que puedes empezar con un ESP32 de 9 dólares, es una opción muy atractiva.
Conclusión
El sensado WiFi ha pasado de una era que exigía equipo dedicado y caro a una fase en la que cualquiera puede probarlo con un microcontrolador barato y OSS. RuView agrupa ese «desde la adquisición hasta la inferencia y la visualización» en uno solo, y es una de las puertas de entrada más accesibles disponibles ahora mismo.
Primero ejecútalo con Docker para palpar qué se refleja en el CSI y, si te convence, compra un único ESP32-S3 y avanza a la medición real: con este orden, unos pocos miles de yenes y unas pocas horas te ponen en contacto con un mundo donde «se ve a través de la pared con WiFi».
Si estás considerando una infraestructura de procesamiento de datos de sensores, o el desarrollo de productos que involucren este tipo de dispositivos de borde, no dudes en consultarnos en Wired & Eco, Inc.