47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import subprocess
|
|
import time
|
|
|
|
import config
|
|
|
|
|
|
def _adb(args, timeout=20):
|
|
try:
|
|
return subprocess.run(
|
|
[config.ADB_PATH] + args,
|
|
capture_output=True, text=True, timeout=timeout,
|
|
)
|
|
except Exception as e:
|
|
print(f"[ADB] Error: {e}")
|
|
return None
|
|
|
|
|
|
def estado():
|
|
r = _adb(["devices"])
|
|
if r is None:
|
|
return "error"
|
|
for linea in r.stdout.splitlines()[1:]:
|
|
if linea.strip().startswith(config.ADB_TV_IP):
|
|
if "unauthorized" in linea:
|
|
return "unauthorized"
|
|
if "device" in linea:
|
|
return "device"
|
|
return "offline"
|
|
|
|
|
|
def conectar():
|
|
_adb(["connect", config.ADB_TV_IP])
|
|
time.sleep(1)
|
|
return estado()
|
|
|
|
|
|
def apagar_tv():
|
|
"""Apaga la tele igual que el boton POWER del mando (KEYCODE_POWER)."""
|
|
e = conectar()
|
|
if e != "device":
|
|
print(f"[ADB] Tele no disponible ({e})")
|
|
return False
|
|
r = _adb(["-s", config.ADB_TV_IP, "shell", "input", "keyevent", "26"])
|
|
ok = r is not None and r.returncode == 0
|
|
print("[ADB] Comando POWER enviado" if ok else "[ADB] Fallo al enviar POWER")
|
|
return ok
|