04-oct: encender_sobremesa omite WoL por defecto (--wol opcional)
This commit is contained in:
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
wol()
|
print("-> Wake-on-LAN (opcional)...")
|
||||||
if esperar_encendido(args.espera):
|
wol()
|
||||||
aviso("El sobremesa se ha encendido con Wake on LAN.", voz)
|
if esperar_encendido(args.espera):
|
||||||
return 0
|
aviso("El sobremesa se ha encendido con Wake on LAN.", voz)
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user