1. Requisitos
El host necesita muy poco. Si el equipo está conectado a tu WiFi y enciende, sirve.
- Sistema de 64 bits: Debian, Ubuntu, Raspberry Pi OS o derivados. Otras distribuciones funcionan, pero las probadas son estas.
- Arquitectura x86_64 (PC, portátil, mini-PC, NAS) o ARM64 (Raspberry Pi 3, 4 o 5 con sistema de 64 bits).
- Adaptador WiFi conectado a una red. El sensor mide la calidad de esa conexión, así que el equipo debe estar asociado a tu router por WiFi, no por cable.
- Una cuenta de Telegram para recibir las alertas.
- Opcional: webcam USB y micrófono si quieres evidencia con foto y audio.
Viewifi detecta movimiento midiendo cómo un cuerpo humano perturba las ondas de radio entre el equipo y el router. Si el host está conectado por Ethernet no hay señal que medir. Un dongle USB-WiFi barato basta.
Dónde colocarlo
Ponlo de forma que la persona que entre pase entre el equipo y el router: ahí es donde más se altera la señal. Un pasillo, un recibidor o la línea que va de la puerta al salón son buenos sitios. Evita pegarlo al router, porque una señal demasiado fuerte apenas varía y el sensor pierde sensibilidad.
2. Instalación
Si vas a montar una Raspberry Pi, sáltate todo lo de abajo. Hay una imagen que lleva el sistema, el host y un asistente de configuración dentro: la grabas en la microSD y listo.
Grábala con Raspberry Pi Imager — Elegir SO → Usar personalizado — y cuando te pregunte si quieres aplicar ajustes personalizados, di que no: la imagen ya trae los suyos y los del Imager los pisarían. Enciende la Pi, espera dos minutos, conecta el móvil a la red Viewifi-Setup (contraseña configurar) y abre http://10.42.0.1. El resto se hace desde el navegador, sin tocar una terminal.
Si prefieres instalarlo a mano, o vas a usar un PC en vez de una Pi, sigue aquí. Son tres comandos: el binario ya trae todo dentro, así que no hay apt install, ni entornos virtuales, ni pip.
O directamente desde la terminal del equipo. Sustituye x86_64 por arm64 si es una Raspberry Pi:
# 1. Descargar
curl -L -o viewifi-host \
https://github.com/pipe9494/viewifi-releases/releases/latest/download/viewifi-host-linux-x86_64
# 2. Dar permisos de ejecución
chmod +x viewifi-host
# 3. Arrancar
./viewifi-host
En el primer arranque el host crea su carpeta de configuración, mide la señal WiFi durante unos segundos para establecer la línea base y levanta el panel web. Verás algo así:
Viewifi Host v1.0.0
Interfaz WiFi: wlan0 · SSID: MiCasa · RSSI: -48 dBm
Calibrando línea base... listo
Panel web: http://192.168.1.42:8080
¿No sabes si tu Pi es de 64 bits?
Ejecuta uname -m en el equipo. Si responde aarch64 necesitas el binario ARM64; si responde x86_64, el otro. Si responde armv7l, tu Raspberry Pi OS es de 32 bits y tendrás que reinstalar el sistema en su versión de 64 bits.
Probarlo sin hardware
Para ver cómo se comporta antes de montarlo en su sitio, arráncalo con señal simulada:
./viewifi-host --sim
Genera lecturas falsas con eventos periódicos, así puedes recorrer el panel y las alertas sin mover un dedo delante del router.
3. El panel web
Todo se configura desde el navegador. Abre http://IP-DEL-EQUIPO:8080 desde cualquier dispositivo de la misma red: el móvil, el portátil, lo que tengas a mano. Si estás en el propio equipo, http://localhost:8080.
El panel muestra:
- Gráfica de señal en vivo, con la línea base y el umbral de disparo dibujados encima. Es la forma más rápida de entender por qué salta o por qué no salta.
- Estado: armado o desarmado, interfaz WiFi, SSID, RSSI actual y hora de la última detección.
- Botones de armar, desarmar y recalibrar.
- Prueba de Telegram, que envía un mensaje de ejemplo para confirmar que el bot está bien puesto.
- Historial de eventos registrados por ese host.
- Configuración completa: umbrales, horario protegido, evidencia, resumen diario y cuenta.
Por defecto el panel es accesible para cualquiera en tu red local. Activa web_password en la configuración y te pedirá contraseña al entrar. Hazlo siempre si la red la comparte más gente: un local, una oficina o un piso compartido.
Cambiar el puerto
Si el 8080 ya está ocupado por otro servicio, arranca el host con otro:
./viewifi-host --port 8099
El panel está pensado para la red local. No hagas port forwarding hacia el 8080 en tu router. Si necesitas verlo desde fuera de casa, usa una VPN como WireGuard o Tailscale — y recuerda que para el uso diario no hace falta: las alertas y los comandos van por Telegram, que ya funciona desde cualquier parte del mundo.
4. Conectar Telegram
Las alertas llegan a tu bot, creado por ti, con tu token. Ni nosotros ni nadie más las ve pasar.
Paso 1: crear el bot
- Abre Telegram y busca @BotFather.
- Envía
/newboty sigue las instrucciones: te pedirá un nombre y un usuario que termine enbot. - Al terminar te da un token con esta forma:
7123456789:AAE.... Cópialo.
Paso 2: obtener tu chat ID
- Busca @userinfobot en Telegram y envíale cualquier mensaje.
- Te responde con tu Id, un número como
123456789. Ese es tu chat ID. - Envía un primer mensaje a tu propio bot (un simple
/start). Telegram no permite que un bot escriba a quien nunca le ha hablado.
Paso 3: pegarlo en el panel
En la sección de Telegram del panel, pega el token y el chat ID, guarda y pulsa Enviar prueba. Si te llega el mensaje, ya está.
Crea un grupo en Telegram, añade tu bot y usa el ID del grupo (empieza por -100) como chat ID. Todos los miembros reciben las alertas, y cualquiera con permiso puede armar o desarmar desde ahí.
5. Enlazar tu cuenta
Este paso es opcional, pero es lo que hace que el host de Linux y la app de Android sean el mismo sistema y no dos cosas sueltas.
Si escribes en el panel el correo y la contraseña de tu cuenta de Viewifi, el host:
- Aparece en la lista de hosts de la app, junto a los demás sensores que tengas.
- Obedece al geofence: cuando sales de casa con el móvil, se arma solo; cuando vuelves, se desarma.
- Recibe los comandos que envíes desde la app a un host concreto o a todos a la vez.
La contraseña se guarda solo en ese equipo, en un archivo con permisos 600 que únicamente puede leer tu usuario.
Si prefieres no crear cuenta, el host detecta y alerta por Telegram igual. Lo que pierdes es el geofence y la vista conjunta de varios sensores en la app.
6. Calibración y sensibilidad
Cada casa tiene una huella de radio distinta, así que el host se calibra solo al arrancar: escucha la señal durante unos segundos sin nadie moviéndose y toma esa medida como línea base. Todo lo que se desvíe de ahí por encima del umbral cuenta como movimiento.
Cuándo recalibrar
Pulsa Recalibrar en el panel cuando:
- Muevas el equipo o el router de sitio.
- Cambies de red WiFi o de banda.
- Reorganices muebles grandes, metálicos o electrodomésticos en medio.
Hazlo siempre con la casa vacía o al menos con nadie pasando por la zona vigilada.
Ajustar el umbral
La gráfica del panel es tu mejor guía: camina por la zona y mira cuánto se separa la línea de su base.
| Síntoma | Qué hacer |
|---|---|
| Alertas cuando no hay nadie | Sube el umbral, o sube el número de lecturas seguidas que hacen falta para disparar. |
| Pasas por delante y no salta | Baja el umbral. Si aun así no detecta, acerca el host al router o cambia su orientación. |
| La señal oscila sola todo el rato | Suele ser un vecino en el mismo canal WiFi o un microondas. Cambia el canal del router y recalibra. |
| RSSI muy débil, por debajo de −75 dBm | Demasiado lejos del router: el ruido se come la señal. Acerca el equipo o usa un dongle WiFi con antena. |
Cuando llegue una alerta que era falsa, márcala como tal respondiendo al bot. El host baja la sensibilidad para ese tipo de perturbación y las falsas alarmas se reducen solas en unos días.
7. Dejarlo encendido 24/7
Lanzarlo a mano sirve para probar, pero un sensor de verdad tiene que arrancar con el equipo y levantarse solo si algo falla. Para eso está la unidad de systemd.
Copia el binario a una ruta del sistema y crea el servicio:
# Instalar el ejecutable
sudo cp viewifi-host /usr/local/bin/
sudo chmod +x /usr/local/bin/viewifi-host
# Crear el servicio para tu usuario
sudo tee /etc/systemd/system/viewifi-host@.service > /dev/null <<'EOF'
[Unit]
Description=Viewifi Host
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=%i
ExecStart=/usr/local/bin/viewifi-host
Restart=always
RestartSec=5
MemoryMax=256M
Nice=-5
[Install]
WantedBy=multi-user.target
EOF
# Activar y arrancar (cambia "pi" por tu usuario)
sudo systemctl daemon-reload
sudo systemctl enable --now viewifi-host@pi
Comprobar que va bien y leer los registros:
systemctl status viewifi-host@pi
journalctl -u viewifi-host@pi -f
Restart=always lo revive ante cualquier caída o corte de luz. MemoryMax=256M impide que se coma la RAM de una Pi pequeña. Nice=-5 le da algo de prioridad para que las lecturas de señal no se retrasen si el equipo está ocupado. Y @%i hace que corra con tu usuario, de modo que la configuración vive en tu carpeta personal y no como root.
8. Comandos del bot
Escribe estos comandos a tu bot desde cualquier lugar. No hace falta estar en la red de casa.
| Comando | Qué hace |
|---|---|
/status | Estado actual: armado o no, señal, SSID, tiempo encendido y última detección. |
/arm | Arma el sensor. A partir de ahí, cada detección genera alerta. |
/disarm | Desarma. Sigue midiendo y registrando, pero no te molesta. |
/photo | Pide una foto al instante, si hay cámara configurada. |
/help | Lista de comandos disponibles. |
Qué trae cada alerta
Una alerta incluye siempre la hora, el nivel (normal o alta) y una imagen con la onda de la señal en el momento del evento, donde se ve el pico que la disparó. Si has activado la evidencia, añade también la foto y el clip de audio.
Alarma por caída de WiFi
Si el host está armado y pierde la conexión WiFi más de diez segundos, envía una alerta de nivel alto. Un corte de red mientras vigilas no es un detalle menor: puede ser un apagón, pero también alguien desenchufando el router.
9. Foto y audio
La captura de imagen y sonido viene desactivada de fábrica. Se enciende a mano, en el panel, y solo si tú quieres.
Foto
Hace falta una webcam USB y una de estas dos herramientas:
sudo apt install fswebcam # ligera, la recomendada
# o bien
sudo apt install ffmpeg # si ya la usas para otra cosa
Comprueba que el sistema ve la cámara con ls /dev/video*. Si aparece /dev/video0, ya está.
Audio
El clip se graba con arecord, que viene incluido en alsa-utils:
sudo apt install alsa-utils
arecord -l # lista los micrófonos detectados
Grabar imagen o sonido de un espacio donde hay otras personas tiene implicaciones legales que cambian según dónde vivas, y más aún en un entorno de trabajo. Infórmate y avisa a quien corresponda. La detección por WiFi por sí sola no graba nada de nadie: esa es justamente su ventaja.
10. Horarios y rutina
Horario protegido
Define la franja en la que el espacio debería estar vacío — de 23:00 a 7:00, o de lunes a viernes de 9:00 a 18:00 en una oficina. Dentro de esa franja cualquier detección se eleva a nivel alto. Fuera de ella el movimiento normal se registra sin avisarte, así que no acabas silenciando el bot por saturación.
Resumen diario
A la hora que elijas, el bot te manda un resumen del día: cuántos eventos hubo, a qué horas se concentraron y si el sensor estuvo caído en algún momento. Es la forma de enterarte de que todo funciona sin tener que mirar nada.
Vigilancia de rutina
El host aprende en qué franjas horarias suele haber actividad y avisa cuando el patrón se rompe. Lo interesante es que funciona en los dos sentidos: te avisa si hay movimiento donde nunca lo hay, y también si no lo hay donde siempre lo hubo. Esa segunda mitad es la que convierte a Viewifi en una forma discreta de saber que una persona mayor que vive sola ha empezado el día con normalidad.
Latido
El host avisa periódicamente de que sigue vivo. Si dejas de recibir el latido, sabes que ese sensor está apagado o sin red — mucho mejor que descubrirlo el día que hacía falta.
11. Archivos y rutas
Todo lo que el host crea vive en tu carpeta personal. No escribe nada fuera de ahí.
| Ruta | Contenido |
|---|---|
~/.viewifi/config.json | Configuración completa: token de Telegram, umbrales, horarios y cuenta. Permisos 600, solo tu usuario puede leerlo. |
~/.viewifi/events.db | Base SQLite con el historial de eventos de este host. |
/usr/local/bin/viewifi-host | El ejecutable, si seguiste el paso de systemd. |
/etc/systemd/system/viewifi-host@.service | La unidad del servicio. |
Copia de seguridad
Guardar ~/.viewifi/ es guardar todo. Para mover el sensor a otro equipo, copia esa carpeta y arranca el binario allí: recupera la configuración tal cual, aunque conviene recalibrar porque la huella de radio del sitio nuevo será distinta.
config.json contiene el token de tu bot y, si la enlazaste, la contraseña de tu cuenta. No lo subas a ningún repositorio ni lo pegues en un chat de soporte sin borrar esos campos antes.
Espacio en disco
El historial local no se purga solo: crece con el tiempo, aunque muy despacio, porque cada evento ocupa unos pocos cientos de bytes. Aun con detecciones constantes tardaría años en ser un problema en la tarjeta de una Pi. Si aun así quieres limpiarlo, para el servicio y borra events.db; se crea de nuevo vacío al arrancar.
12. Solución de problemas
«No WiFi interface found»
El host busca la interfaz por tres vías: iw dev link, luego /proc/net/wireless y por último iwconfig. Si ninguna devuelve nada, el equipo no está conectado por WiFi. Comprueba con iw dev que existe una interfaz inalámbrica y con iwconfig que está asociada a tu red. Recuerda: conectado por cable no vale.
El panel no abre desde otro dispositivo
Confirma la IP del equipo con hostname -I y que ambos estáis en la misma red — un móvil conectado a la red de invitados no ve al resto. Si tienes cortafuegos, abre el puerto:
sudo ufw allow 8080/tcp
No llegan las alertas de Telegram
- ¿Le enviaste un
/starta tu bot? Sin ese primer mensaje tuyo, Telegram bloquea al bot. - Revisa que el token esté completo, con los dos puntos incluidos.
- El chat ID es un número; si es de grupo, empieza por
-100y el signo menos también va. - Usa el botón de prueba del panel: dice exactamente qué responde la API de Telegram.
Demasiadas falsas alarmas
Lo habitual es un umbral demasiado bajo o un vecino saturando el canal. Sube el umbral, recalibra con la casa vacía y, si persiste, cambia el canal WiFi del router. Un ventilador o una cortina movida por el aire acondicionado también generan variaciones reales de señal.
El servicio se reinicia solo todo el rato
Mira los registros con journalctl -u viewifi-host@TUUSUARIO -n 50. La causa más común es que el servicio arranca antes de que la red esté lista; el After=network-online.target de la unidad lo evita, así que revisa que esa línea esté puesta.
Comprobar que el motor de detección funciona
Arranca el host con --sim: si con señal simulada detecta y alerta correctamente, el problema está en la lectura del WiFi o en la colocación, no en el programa.
13. Desinstalar
Deja el equipo como estaba, sin restos:
# Parar y quitar el servicio
sudo systemctl disable --now viewifi-host@$USER
sudo rm /etc/systemd/system/viewifi-host@.service
sudo systemctl daemon-reload
# Quitar el ejecutable
sudo rm /usr/local/bin/viewifi-host
# Quitar configuración e historial
rm -rf ~/.viewifi
Si enlazaste la cuenta, entra en la app y elimina ese host de la lista para que deje de aparecer.