From 7f67560a0a5f32ca79044a6a4293852a61c6afbc Mon Sep 17 00:00:00 2001 From: minguezsanzjuanjose Date: Sun, 4 Oct 2026 01:39:52 +0200 Subject: [PATCH] 04-oct: encender_sobremesa omite WoL por defecto (--wol opcional) --- docs/PROTOCOLO_ENCENDIDO_REMOTO_SSH.md | 8 +++--- scripts/encender_sobremesa.py | 36 ++++++++++++++------------ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/docs/PROTOCOLO_ENCENDIDO_REMOTO_SSH.md b/docs/PROTOCOLO_ENCENDIDO_REMOTO_SSH.md index 7896b6b..3ea0c36 100644 --- a/docs/PROTOCOLO_ENCENDIDO_REMOTO_SSH.md +++ b/docs/PROTOCOLO_ENCENDIDO_REMOTO_SSH.md @@ -24,13 +24,13 @@ Fecha: 03-oct-2026. Objetivo: **encender el sobremesa estando apagado y conectar **2. Escalera de intentos** (en orden; comprobar el estado tras cada uno): -1. **Wake-on-LAN** — magic packet a la MAC `74:56:3C:CB:0E:CE`. - > Desde el portátil (`.50`) el magic packet **no cruza** a `.1` por el doble NAT → normalmente **falla**. Solo funcionaría desde un equipo en la red `.1`. -2. **Encender la regleta** (comando Alexa vía Home Assistant): +1. **Encender la regleta** (comando Alexa vía Home Assistant): ```powershell python C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\scripts\ha_alexa.py command "enciende regleta" ``` -3. **Ciclo de regleta** (el **fiable**): apagar la regleta, esperar **1 min**, y volver a encenderla. Con `Restore on AC Power Loss = Power On` en BIOS, el PC **arranca solo**. +2. **Ciclo de regleta** (el **fiable**): apagar la regleta, esperar **1 min**, y volver a encenderla. Con `Restore on AC Power Loss = Power On` en BIOS, el PC **arranca solo**. + +> **Wake-on-LAN: OMITIDO por defecto** (no cruza el doble NAT `.50`→`.1`). Se puede probar con `--wol`. **3. Informar** (aviso voz Carolina) tras cada comprobación. diff --git a/scripts/encender_sobremesa.py b/scripts/encender_sobremesa.py index 910a4c7..8e702f2 100644 --- a/scripts/encender_sobremesa.py +++ b/scripts/encender_sobremesa.py @@ -4,14 +4,16 @@ Escalera de intentos (acordada): 0. Estado de la regleta (best-effort). - 1. Si el PC esta apagado -> intento 1: Wake-on-LAN. - 2. Si no responde -> intento 2: encender la regleta (comando Alexa via Home Assistant). - 3. Si no responde -> intento 3: apagar la regleta 1 min y volver a encenderla + 1. Encender la regleta (comando Alexa via Home Assistant). + 2. Si no responde -> apagar la regleta 1 min y volver a encenderla (BIOS 'Restore on AC Power Loss = Power On' -> arranca solo). - 4. Informar por voz (Carolina) tras cada comprobacion. + 3. Informar por voz (Carolina) tras cada comprobacion. + +Nota: el Wake-on-LAN esta OMITIDO por defecto (no cruza el doble NAT); +se puede probar con --wol. Uso: - python scripts/encender_sobremesa.py [--espera 120] [--no-voz] + python scripts/encender_sobremesa.py [--espera 120] [--wol] [--no-voz] """ from __future__ import annotations @@ -142,6 +144,7 @@ def aviso(texto: str, voz: bool = True) -> None: def main() -> int: ap = argparse.ArgumentParser(description="Encendido remoto del sobremesa.") ap.add_argument("--espera", type=int, default=120, help="Segundos por intento (defecto 120).") + ap.add_argument("--wol", action="store_true", help="Intentar Wake-on-LAN primero (por defecto omitido).") ap.add_argument("--no-voz", action="store_true", help="Sin avisos de voz.") args = ap.parse_args() voz = not args.no_voz @@ -155,22 +158,23 @@ def main() -> int: aviso("El sobremesa ya estaba encendido.", voz) return 0 - # Intento 1 - Wake-on-LAN - print(f"-> Intento 1: Wake-on-LAN...") - wol() - if esperar_encendido(args.espera): - aviso("El sobremesa se ha encendido con Wake on LAN.", voz) - return 0 + # Wake-on-LAN (opcional; por defecto OMITIDO para acelerar) + if args.wol: + print("-> Wake-on-LAN (opcional)...") + wol() + if esperar_encendido(args.espera): + aviso("El sobremesa se ha encendido con Wake on LAN.", voz) + return 0 - # Intento 2 - encender regleta - print("-> Intento 2: encender regleta (Alexa)...") + # Encender regleta + print("-> Encender regleta (Alexa)...") encender_regleta() if esperar_encendido(args.espera): aviso("El sobremesa se ha encendido al dar corriente la regleta.", voz) return 0 - # Intento 3 - ciclo de regleta (Power On Loss) - print("-> Intento 3: apagar regleta 1 min y volver a encender (Power On Loss)...") + # Ciclo de regleta (Power On Loss) + print("-> Apagar regleta 1 min y volver a encender (Power On Loss)...") apagar_regleta() time.sleep(60) encender_regleta() @@ -178,7 +182,7 @@ def main() -> int: aviso("El sobremesa se ha encendido tras el ciclo de regleta. Power On Loss funciona.", voz) return 0 - aviso("No se ha podido encender el sobremesa ni con WoL ni con la regleta.", voz) + aviso("No se ha podido encender el sobremesa ni con la regleta ni por ciclo.", voz) return 1