import os import sys import time import subprocess import urllib.request from dotenv import load_dotenv # Cargar variables de entorno locales (.env de biblioteca_negocio_prolongo) dotenv_path = os.path.expanduser("~/Documents/GitHub/biblioteca_negocio_prolongo/.env") load_dotenv(dotenv_path) # Permitir importar modulos del repo de negocio (ha_alexa). _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) if _SCRIPT_DIR not in sys.path: sys.path.insert(0, _SCRIPT_DIR) try: import infra_paths infra_paths.bootstrap_biblioteca_paths() except Exception: pass def cerrar_ventanas(): print("1. Cerrando ventanas abiertas (excepto terminal de OpenCode)...") ps_command = """ $procesos = Get-Process | Where-Object { $_.MainWindowHandle -ne 0 -and $_.ProcessName -notmatch 'OpenCode|WindowsTerminal|cmd|powershell|Code|conhost' } foreach ($p in $procesos) { try { $p.CloseMainWindow() | Out-Null Start-Sleep -Milliseconds 200 if (-not $p.HasExited) { $p.Kill() } } catch {} } """ subprocess.run(["powershell", "-Command", ps_command], capture_output=True) print(" -> Ventanas cerradas.") def apagar_luces_alexa(): """Apaga las luces 'barras' y 'cuartillo' via HOME ASSISTANT (sustituye a VoiceMonkey).""" print("2. Apagando luces de Alexa via Home Assistant (barras + cuartillo)...") try: from ha_alexa import command except Exception as e: print(f" -> [ERROR] No se pudo cargar ha_alexa: {e}") return for nombre in ("barras", "cuartillo"): ok = command(f"apaga {nombre}") print(f" -> {'OK' if ok else 'ERROR'} al apagar '{nombre}'") def apagar_pantalla_tapo(): print("3. Apagando pantalla (Tapo) via túnel RPi...") # Ejecutamos el apagado del enchufe enviando el comando a través del VPS a la RPi cmd = '''ssh -i C:\\Users\\juanm\\Documents\\GitHub\\contabo root@185.187.169.109 "ssh -i /root/.ssh/pi_deploy -p 2222 -o StrictHostKeyChecking=no pi@127.0.0.1 'python3 -c \\\"from PyP100 import PyP100; p100 = PyP100.P100(\\'192.168.50.224\\', \\'hermes211@gmail.com\\', \\'Nelo@36666\\'); p100.handshake(); p100.login(); p100.turnOff()\\\"'"''' try: subprocess.run(cmd, shell=True, capture_output=True, timeout=15) print(" -> Pantalla apagada.") except Exception as e: print(f" -> Error al apagar pantalla: {e}") def shutdown_pc(): print("4. Apagando el PC en 10 segundos...") os.system("shutdown /s /t 10") if __name__ == "__main__": print("=== INICIANDO PROTOCOLO DE APAGADO ===") cerrar_ventanas() apagar_luces_alexa() apagar_pantalla_tapo() shutdown_pc() print("=== PROTOCOLO COMPLETADO ===")