Files
INFRAESTRUCTURA/scripts/protocolo_apagado.py

70 lines
2.7 KiB
Python

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 ===")