76 lines
3.0 KiB
Python
76 lines
3.0 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 = r"C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\.env"
|
|
load_dotenv(dotenv_path)
|
|
|
|
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 VoiceMonkey"""
|
|
print("2. Apagando luces de Alexa (barras + cuartillo)...")
|
|
token = os.getenv("VOICEMONKEY_TOKEN")
|
|
if not token:
|
|
print(" -> [ERROR] Falta VOICEMONKEY_TOKEN en .env")
|
|
return
|
|
|
|
# VoiceMonkey: crear dos "monkeys" (triggers virtuales) llamados 'apagar-barras' y 'apagar-cuartillo'
|
|
# que en su rutina de Alexa ejecutan: "Alexa, apaga barras" y "Alexa, apaga cuartillo"
|
|
|
|
luces = [
|
|
("barras", "apagar-barras"),
|
|
("cuartillo", "apagar-cuartillo")
|
|
]
|
|
|
|
for nombre, monkey in luces:
|
|
url = f"https://api-v2.voicemonkey.io/trigger?token={token}&device={monkey}"
|
|
try:
|
|
req = urllib.request.Request(url)
|
|
with urllib.request.urlopen(req, timeout=10) as response:
|
|
if response.status == 200:
|
|
print(f" -> Señal enviada para apagar '{nombre}'")
|
|
else:
|
|
print(f" -> Error HTTP {response.status} al apagar '{nombre}'")
|
|
except Exception as e:
|
|
print(f" -> Error al apagar '{nombre}': {e}")
|
|
|
|
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 ===")
|