omxplayer-Status-LED

Vorrausgesetzt video_looper spielt über den Default-Prozess (omxplayer.bin) die Videos ab, lässt sich der laufende Prozess mit dieser LED überprüfen, hilfreich, wenn man sicher sein will, dass eben erst aufgespielte Daten mit dem USB-Stick abspielbar sind.
Über einen System-Service kann man das permanent einschalten.

#!/usr/bin/env python3
"""LED on GPIO26 shows whether omxplayer.bin is running.

LED on = process running
LED off = process not running
"""

import subprocess
import time
from datetime import datetime

from gpiozero import LED

LED_PIN = 26
PROCESS = "omxplayer.bin"
CHECK_INTERVAL = 0.5 # seconds

led = LED(LED_PIN)

def log(msg: str) -> None:
print(f"[{datetime.now():%H:%M:%S.%f}] {msg}", flush=True)

def is_running(name: str) -> bool:
return subprocess.run(
["pgrep", "-x", name],
stdout=subprocess.DEVNULL,
).returncode == 0

log(f"Monitoring '{PROCESS}' on GPIO{LED_PIN}...")
last_state = None
try:
while True:
t0 = time.monotonic()
running = is_running(PROCESS)
dt = time.monotonic() - t0
if dt > 2:
log(f"WARNING: pgrep took {dt:.1f}s")
led.value = running
if running != last_state:
log(f"{PROCESS} {'RUNNING -> LED ON' if running else 'GONE -> LED OFF'}")
last_state = running
time.sleep(CHECK_INTERVAL)
except KeyboardInterrupt:
pass
finally:
led.close()