04-oct: encender_sobremesa omite WoL por defecto (--wol opcional)

This commit is contained in:
minguezsanzjuanjose
2026-10-04 01:39:52 +02:00
parent 0e784be152
commit 7f67560a0a
2 changed files with 24 additions and 20 deletions

View File

@@ -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): **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`. 1. **Encender la regleta** (comando Alexa vía Home Assistant):
> 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):
```powershell ```powershell
python C:\Users\juanm\Documents\GitHub\biblioteca_negocio_prolongo\scripts\ha_alexa.py command "enciende regleta" 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. **3. Informar** (aviso voz Carolina) tras cada comprobación.

View File

@@ -4,14 +4,16 @@
Escalera de intentos (acordada): Escalera de intentos (acordada):
0. Estado de la regleta (best-effort). 0. Estado de la regleta (best-effort).
1. Si el PC esta apagado -> intento 1: Wake-on-LAN. 1. Encender la regleta (comando Alexa via Home Assistant).
2. Si no responde -> intento 2: encender la regleta (comando Alexa via Home Assistant). 2. Si no responde -> apagar la regleta 1 min y volver a encenderla
3. Si no responde -> intento 3: apagar la regleta 1 min y volver a encenderla
(BIOS 'Restore on AC Power Loss = Power On' -> arranca solo). (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: Uso:
python scripts/encender_sobremesa.py [--espera 120] [--no-voz] python scripts/encender_sobremesa.py [--espera 120] [--wol] [--no-voz]
""" """
from __future__ import annotations from __future__ import annotations
@@ -142,6 +144,7 @@ def aviso(texto: str, voz: bool = True) -> None:
def main() -> int: def main() -> int:
ap = argparse.ArgumentParser(description="Encendido remoto del sobremesa.") 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("--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.") ap.add_argument("--no-voz", action="store_true", help="Sin avisos de voz.")
args = ap.parse_args() args = ap.parse_args()
voz = not args.no_voz voz = not args.no_voz
@@ -155,22 +158,23 @@ def main() -> int:
aviso("El sobremesa ya estaba encendido.", voz) aviso("El sobremesa ya estaba encendido.", voz)
return 0 return 0
# Intento 1 - Wake-on-LAN # Wake-on-LAN (opcional; por defecto OMITIDO para acelerar)
print(f"-> Intento 1: Wake-on-LAN...") if args.wol:
print("-> Wake-on-LAN (opcional)...")
wol() wol()
if esperar_encendido(args.espera): if esperar_encendido(args.espera):
aviso("El sobremesa se ha encendido con Wake on LAN.", voz) aviso("El sobremesa se ha encendido con Wake on LAN.", voz)
return 0 return 0
# Intento 2 - encender regleta # Encender regleta
print("-> Intento 2: encender regleta (Alexa)...") print("-> Encender regleta (Alexa)...")
encender_regleta() encender_regleta()
if esperar_encendido(args.espera): if esperar_encendido(args.espera):
aviso("El sobremesa se ha encendido al dar corriente la regleta.", voz) aviso("El sobremesa se ha encendido al dar corriente la regleta.", voz)
return 0 return 0
# Intento 3 - ciclo de regleta (Power On Loss) # Ciclo de regleta (Power On Loss)
print("-> Intento 3: apagar regleta 1 min y volver a encender (Power On Loss)...") print("-> Apagar regleta 1 min y volver a encender (Power On Loss)...")
apagar_regleta() apagar_regleta()
time.sleep(60) time.sleep(60)
encender_regleta() 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) aviso("El sobremesa se ha encendido tras el ciclo de regleta. Power On Loss funciona.", voz)
return 0 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 return 1