6.3 KiB
6.3 KiB
Sistema de Apagado/Encendido Remoto del PC (20-sep-2026)
Arquitectura del sistema
TELEGRAM (iPad/Móvil)
↓ /apagar o /encender
BOT TELEGRAM (PC local - telegram_bot_pc.py)
↓ POST a webhook
HOME ASSISTANT (VPS 185.187.169.109)
↓
├─ APAGAR: POST http://192.168.1.239:5555/shutdown → PC ejecuta shutdown
│ → Espera 30s
│ → Alexa apaga luces (barras + cuartillo)
│ → Alexa apaga regleta (corta corriente)
│
└─ ENCENDER: Alexa enciende regleta
→ Espera 60s (PC arranca físicamente)
→ Wake-on-LAN a 192.168.1.239
Componentes
1. Bot Telegram (PC local)
Archivo: INFRAESTRUCTURA/scripts/telegram_bot_pc.py
Función: Interfaz de usuario desde Telegram
Características:
- Pide confirmación antes de apagar
- Watchdog automático tras apagar (30s + ping)
- Watchdog automático tras encender (90s + 3 reintentos ping)
- Filtro de autorización por USER_ID
Arrancar:
cd C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts
python telegram_bot_pc.py
2. Shutdown Listener (PC local)
Archivo: INFRAESTRUCTURA/scripts/shutdown_listener.py
Puerto: 5555
Función: Recibe comandos HTTP de Home Assistant para ejecutar shutdown local
Seguridad: Token de autenticación (SHUTDOWN_TOKEN en .env)
Arrancar:
cd C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts
python shutdown_listener.py
Health check:
Invoke-WebRequest -Uri "http://127.0.0.1:5555/health"
Ejecutar shutdown (requiere token):
Invoke-WebRequest -Uri "http://127.0.0.1:5555/shutdown" `
-Method POST `
-Headers @{ "Authorization" = "Bearer $env:SHUTDOWN_TOKEN" }
3. Home Assistant (VPS)
Ubicación: root@185.187.169.109:/opt/homeassistant
Función: Orquestador central (recibe webhooks, ejecuta shutdown, controla luces/regleta vía Alexa)
Archivos de configuración:
/opt/homeassistant/config/automations.yaml— Webhooks/apagar-pc-juanjoy/encender-pc-juanjo/opt/homeassistant/config/scripts.yaml— Scriptsapagar_pc_completoyencender_pc_completo/opt/homeassistant/config/configuration.yaml— REST commandshutdown_pc_local
Reiniciar:
cd /opt/homeassistant && docker compose restart homeassistant
4. Dispositivos Alexa
- Echo Dot de Nahid: Ejecuta comandos de voz para luces y regleta
- Luces: barras, cuartillo
- Regleta: Enchufe inteligente que alimenta el PC
Flujo de apagado completo
- Usuario en Telegram:
/apagar→ Botón "🔴 Apagar PC" - Bot pide confirmación: "✅ SÍ, apagar" | "❌ Cancelar"
- Si confirma → Bot envía POST a
http://185.187.169.109:8123/api/webhook/apagar-pc-juanjo - Home Assistant ejecuta
script.apagar_pc_completo:- 4.1 POST a
http://192.168.1.239:5555/shutdown(con token) - 4.2 PC ejecuta
shutdown /s /t 10 - 4.3 Espera 30s
- 4.4 Alexa apaga "barras"
- 4.5 Alexa apaga "cuartillo"
- 4.6 Alexa apaga "regleta" (corta corriente al PC)
- 4.1 POST a
- Bot espera 30s y verifica con ping:
- Si responde → "⚠️ APAGADO FALLIDO"
- Si no responde → "✅ PC APAGADO CONFIRMADO"
Flujo de encendido completo
- Usuario en Telegram:
/encender→ Botón "🟢 Encender PC" - Bot envía POST a
http://185.187.169.109:8123/api/webhook/encender-pc-juanjo - Home Assistant ejecuta
script.encender_pc_completo:- 3.1 Alexa enciende "regleta" (da corriente al PC)
- 3.2 Espera 60s (PC arranca físicamente)
- 3.3 Envía Wake-on-LAN a
192.168.1.239(MAC:70:85:c2:6b:3a:03)
- Bot espera 90s + hasta 3 reintentos (15s cada uno) verificando con ping:
- Si responde → "✅ PC ENCENDIDO CORRECTAMENTE"
- Si no responde → "❌ ENCENDIDO FALLIDO"
- PC arranca → Windows inicia → Autologon → Escritorio listo → Watchers arrancan
Variables de entorno necesarias (.env)
# Bot Telegram
TELEGRAM_BOT_PC_TOKEN=<token del bot @juanjo_pc_control_bot>
TELEGRAM_USER_ID=325737724
# Shutdown Listener
SHUTDOWN_TOKEN=H7iLGJixPp3J3pthCmnR2Ibq0tvERD5THyr_foAeN_8
Tareas programadas recomendadas
Shutdown Listener (arrancar al iniciar Windows)
Nombre: Shutdown Listener
Descripción: Listener HTTP para apagado remoto del PC
Acción: python C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts\shutdown_listener.py
Desencadenador: Al iniciar sesión
Usuario: juanm
Bot Telegram (arrancar al iniciar Windows)
Nombre: Bot Telegram Control PC
Descripción: Bot de Telegram para control remoto del PC
Acción: python C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts\telegram_bot_pc.py
Desencadenador: Al iniciar sesión
Usuario: juanm
Script de instalación: INFRAESTRUCTURA/scripts/instalar_watchers.ps1 (añadir estas tareas)
Troubleshooting
El apagado no funciona
- Verificar que el shutdown listener está corriendo:
http://127.0.0.1:5555/health - Verificar token en
.env(SHUTDOWN_TOKEN) - Revisar logs de Home Assistant:
ssh root@185.187.169.109 "docker logs homeassistant -f" - Probar shutdown manual:
Invoke-WebRequest -Uri "http://127.0.0.1:5555/shutdown" -Method POST -Headers @{ "Authorization" = "Bearer TOKEN" }
El encendido no funciona
- Verificar que la regleta enciende (luz física)
- Verificar Wake-on-LAN habilitado en BIOS
- Verificar MAC del PC correcta en HA:
70:85:c2:6b:3a:03 - Probar WoL manual:
wakeonlan 70:85:c2:6b:3a:03
El bot no responde
- Verificar que está corriendo:
Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match "telegram_bot_pc" } - Revisar logs:
C:\Users\juanm\Documents\Github\INFRAESTRUCTURA\scripts\telegram_bot_pc.log - Verificar token:
TELEGRAM_BOT_PC_TOKENen.env - Verificar USER_ID autorizado:
TELEGRAM_USER_ID=325737724
Seguridad
- ✅ Bot solo responde a USER_ID autorizado (325737724)
- ✅ Shutdown listener requiere token de autenticación
- ✅ Listener solo acepta conexiones locales (bind a 0.0.0.0 pero firewall protege)
- ✅ Home Assistant en VPS con IP fija conocida
- ⚠️ Token en
.enven texto plano (mitigar con permisos de archivo) - ⚠️ Autologon guarda contraseña en registro (mitigar con BitLocker + bloqueo automático)