Files
biblioteca_conocimiento_lab…/docs/raspberry_pi.md

8.9 KiB

Raspberry Pi del laboratorio

Objetivo

Centralizar la configuracion, el acceso y el mantenimiento de una flota de Raspberry Pi. La primera unidad es minipc; el mismo procedimiento debe servir para las cinco unidades previstas.

Inventario actual

Campo Valor
Hostname minipc
Sistema Raspbian GNU/Linux 13 (trixie)
Ethernet 192.168.50.187
Wi-Fi 192.168.50.251
Usuario operativo pi
Codigo /home/pi/minipc/
Servicio bot pi-bot.service
Servicio tunel autossh-tunel.service
Zona horaria Europe/Madrid
Teclado Espanol (es)

No se documentan contrasenas, tokens ni claves privadas en este fichero.

Comando unico de diagnostico

En la Raspberry:

bash /home/pi/minipc/vigilancia/raspberry_info.sh

El comando muestra identidad, red, teclado, locale, hora, servicios y recursos sin revelar secretos.

Desde el PC, pasando por el VPS:

ssh -i C:\Users\juanm\Documents\GitHub\contabo root@185.187.169.109 "ssh -i /root/.ssh/pi_deploy -p 2222 pi@127.0.0.1 'bash /home/pi/minipc/vigilancia/raspberry_info.sh'"

Configuracion aplicada en minipc

sudo raspi-config nonint do_configure_keyboard es
sudo localectl set-x11-keymap es pc105
sudo locale-gen es_ES.UTF-8
sudo localectl set-locale LANG=es_ES.UTF-8
sudo timedatectl set-timezone Europe/Madrid
sudo timedatectl set-ntp true

El cambio de idioma puede requerir cerrar la sesion y volver a entrar. El teclado de consola queda definido en /etc/default/keyboard con XKBLAYOUT="es".

Conectividad

  • Ethernet es la ruta preferida y usa la IP 192.168.50.187.
  • Wi-Fi queda disponible como respaldo en 192.168.50.251.
  • El tunel inverso publica SSH de la Pi en el VPS como 127.0.0.1:2222.
  • El acceso remoto usa la clave privada del VPS configurada para el tunel; nunca se copia ni documenta aqui.
  • Si la IP cambia, consultar hostname -I en la Pi y actualizar el inventario.

Acceso al ASUS RT-AX88U PRO

El ASUS esta detras del router principal de Digi. Para abrir su SSH desde el PC:

powershell -ExecutionPolicy Bypass -File scripts/router-ssh-tunnel.ps1
ssh -p 2222 usuario_del_router@127.0.0.1

El script mantiene el salto PC -> VPS -> Raspberry -> ASUS sin exponer el router a Internet.

Desde Telegram, el bot consulta el ASUS mediante la clave de servicio de la Raspberry:

/router estado
/router clientes
/router wifi
/router inventario
/router reservar confirmar
/router reiniciar confirmar

El reinicio exige la palabra confirmar. Las consultas actuales no cambian la configuracion.

Capacidades del RT-AX88U PRO

El router puede centralizar muchas funciones para Telegram:

  • Estado del firmware, uptime, IP LAN/WAN y radios Wi-Fi.
  • Clientes conectados y tabla ARP.
  • Estado de Internet y rutas.
  • Control de radios 2.4 GHz y 5 GHz.
  • Reservas DHCP y nombres de dispositivos.
  • Reinicio protegido y lectura de logs.
  • Estado AiMesh, si se añaden nodos.
  • QoS, control parental y perfiles de acceso.
  • VPN, DDNS, firewall y red de invitados.

Las acciones que cambian red, Wi-Fi, firewall o VPN deben tener confirmacion doble.

La reserva DHCP conserva la IP actual de cada lease y mantiene las reservas previas. Los dispositivos sin hostname quedan como pendiente-identificar hasta asignarles un nombre humano.

Inventario DHCP actual del ASUS

Reservas aplicadas para los 39 leases actuales y 3 reservas historicas conservadas. Los nombres marcados como pendiente-identificar son provisionales.

IP MAC Nombre actual
192.168.50.2 1C:FE:2B:BE:2C:D4 pendiente-identificar
192.168.50.6 D8:47:32:6E:B8:62 termo / Tapo_SmartPlug
192.168.50.8 BE:4E:C5:AF:E3:3F pendiente-identificar
192.168.50.12 4C:A9:19:4E:E8:4C pendiente-identificar
192.168.50.13 58:11:22:1B:0E:C0 pendiente-identificar
192.168.50.16 14:EA:63:1D:1B:25 Tele
192.168.50.31 00:11:32:3B:6F:4E MINGUEZ / NAS
192.168.50.54 48:43:DD:73:A2:FB pendiente-identificar
192.168.50.65 94:B8:6D:08:2A:7D NAHID_PC
192.168.50.67 62:A3:89:4A:EB:70 iPhone
192.168.50.68 AC:15:A2:89:D7:8A P110
192.168.50.69 DC:98:40:F0:7B:56 HERMES2111
192.168.50.73 04:34:F6:0C:8E:48 TABLET INES
192.168.50.76 58:11:22:22:AD:90 pendiente-identificar
192.168.50.77 24:DF:A7:E0:13:C7 pendiente-identificar
192.168.50.80 B0:CF:CB:D0:FD:35 AmazonAQM-009R
192.168.50.101 48:E1:E9:88:AD:FF pendiente-identificar
192.168.50.102 44:87:63:9B:07:A2 203938483430501000520018
192.168.50.104 FC:67:1F:38:24:CD pendiente-identificar
192.168.50.108 D4:AD:FC:1D:01:31 pendiente-identificar
192.168.50.112 D8:1F:12:1C:FF:29 wlan0
192.168.50.122 70:C9:32:1F:E5:65 dreame_vacuum_r2205
192.168.50.127 10:5A:17:20:84:4F pendiente-identificar
192.168.50.137 74:D6:37:D8:F2:64 amazon-a816315ca
192.168.50.143 A8:8C:3E:7C:F3:C7 XBOX
192.168.50.173 24:4C:E3:DF:6D:F4 pendiente-identificar
192.168.50.187 B8:27:EB:80:C6:0E minipc / Raspberry
192.168.50.189 D8:D6:68:BD:84:BD lwip0
192.168.50.191 E0:EF:BF:AA:CD:1E pendiente-identificar
192.168.50.192 40:A2:DB:40:C0:6E pendiente-identificar
192.168.50.203 70:B1:3D:A6:D2:40 Samsung
192.168.50.207 88:1E:5A:37:E5:52 JUANJER
192.168.50.211 84:E3:42:50:1F:1E pendiente-identificar
192.168.50.213 3A:99:2B:ED:D3:5E Caroline-tablet
192.168.50.224 D8:47:32:44:8A:79 Tapo pendiente-identificar
192.168.50.226 5A:BE:9F:4A:20:DD iPad
192.168.50.241 CE:2A:16:A6:44:7D Watch
192.168.50.247 70:EE:50:86:FB:FE pendiente-identificar
192.168.50.248 EC:5C:68:32:57:B0 MiWiFi-R4A-srv0

Siguiente prioridad

Control parental por dispositivo o grupo: horarios, bloqueo temporal, perfiles, pausas desde Telegram y registro de cambios. Se implementara despues de terminar la normalizacion de nombres del inventario.

La lectura avanzada de control parental usa asusrouter y requiere ASUS_USERNAME y ASUS_PASSWORD solo en el .env local de la Raspberry. No se guardan en el repositorio.

Rutinas parentales por nombre

El diseño previsto permite guardar rutinas propias y activarlas o desactivarlas desde Telegram, sin borrar su definicion:

/parental listar
/parental activar <rutina>
/parental desactivar <rutina>
/parental pausa <rutina> <minutos>

Dispositivos iniciales:

  • Caroline-tablet — 192.168.50.213 — MAC 3A:99:2B:ED:D3:5E.
  • TABLET INES — 192.168.50.73 — MAC 04:34:F6:0C:8E:48.

Las rutinas se definirán con nombre, dispositivos objetivo, días y franjas horarias. No se aplica ninguna hasta que el usuario indique la primera definición.

Los nombres de dispositivo serán tolerantes a mayúsculas, minúsculas, tildes y nombres sencillos:

/parental activar Inés
/parental desactivar INES
/parental pausa Carolina 60

Inés, INES, ines y tablet ines identifican la misma tablet. Carolina, CAROLINA y Caroline tablet identifican la tablet de Carolina.

Despliegue

La Pi no tiene Git operativo para este flujo. El despliegue se hace por el VPS y el tunel inverso:

  1. Copiar el fichero al VPS.
  2. Copiarlo por SSH a pi@127.0.0.1:2222.
  3. Validar con python3 -m py_compile si es Python.
  4. Reiniciar el servicio correspondiente.
  5. Verificar systemctl is-active y los logs.

Escalado a cinco Raspberry

Cada unidad debe tener un registro con hostname, MAC, IP Ethernet, IP Wi-Fi, servicios, funcion y ubicacion. Se recomienda:

  • Reservas DHCP por MAC para evitar cambios de IP.
  • Ethernet como red principal.
  • Un hostname unico por unidad: minipc-01, minipc-02, etc.
  • Un servicio autossh-tunel por unidad con un puerto de tunel distinto.
  • Una clave SSH de despliegue independiente por unidad.
  • Un script de diagnostico identico en todas las unidades.

Hoja de ruta pendiente

Estas mejoras quedan apuntadas para la Raspberry actual, sin implementarlas ahora:

  • Panel Telegram de descargas y NAS con progreso, velocidad y espacio libre.
  • Pausar, reanudar y cancelar tareas de Download Station desde Telegram.
  • Aviso cuando termina o falla una descarga.
  • Estado de la NAS y sus discos.
  • Estado del VPS: CPU, RAM, disco, Docker y servicios.
  • Alertas de temperatura, disco lleno, perdida de red y servicios caidos.
  • Backups de configuracion y datos.
  • Despliegue y actualizacion remota del codigo.
  • Capturas de camaras y control de dispositivos conectados.
  • Comando /flota preparado para cuando existan varias Raspberry.

Primer dispositivo Tapo

El dispositivo termo es un Tapo Smart Wi-Fi Plug P100. El bot dispone de estos comandos directos:

/termo on
/termo off
/termo estado

La Raspberry necesita estas variables en /home/pi/minipc/vigilancia/.env, introducidas localmente y sin publicarlas:

TAPO_USERNAME=cuenta-de-tapo
TAPO_PASSWORD=contrasena-de-tapo
TAPO_TERMO_IP=192.168.50.6

El control usa python-kasa directamente desde la Raspberry y no depende de Alexa.