Close

Apagado de RPI/Pantallas al salir de Retrobat

A project log for THE ULTIMATE MINI ARCADE

Classic arcade with all the latest technological advancements, ready for the classics. Enjoy!

srrubioSrRubio 09/20/2025 at 16:060 Comments

1️⃣ Configuración en Windows

  1. Instalar Ncat

    • Instala Nmap para usar ncat.

    • Ruta recomendada: C:\Program Files (x86)\Nmap\ncat.exe.

    • Comprobar que desde CMD puedes ejecutar:

      "C:\Program Files (x86)\Nmap\ncat.exe" --version
      
      
      
  2. Scripts de Windows

    1.1. start.bat

    • Gestiona cierre de procesos, lanzamiento de RetroBat y monitor, y envía SHUTDOWN al cerrar.

    • Contenido ya funcional que compartiste:

    @echo off
    setlocal enabledelayedexpansion
    set "MONITOR_BAT=C:\RetroBat\plugins\MarqueeManager\marquee_monitor.bat"
    set "MONITOR_TITLE=RetroBat_MarqueeMonitor"
    set "NCAT_EXE=C:\Program Files (x86)\Nmap\ncat.exe"
    set "RPI_IPS=192.168.1.138 192.168.1.145"
    set "RPI_PORT=12345"
    
    cd /d "%~dp0"
    
    :: --- Cerrar procesos previos ---
    for %%P in (  ESEvents.exe  ESEventsScrapTopper.exe  ESRetroAchievements.exe  VPListenerWS.exe  MAMEListenerWS.exe  SUPERMODELListenerWS.exe  retroarch.exe  mpv.exe  dmd.exe  emulationstation.exe
    ) do (  tasklist | find /I "%%P" > NUL && taskkill /IM %%P /F
    )
    
    :: --- Limpiar tmp del MarqueeManager ---
    rd /s /q ".\.tmp" 2>NUL
    
    :: --- Iniciar monitor ---
    start "%MONITOR_TITLE%" cmd /k ""%MONITOR_BAT%""
    
    :: --- Iniciar ESEvents ---
    start "" ESEvents.exe
    timeout /t 1 /nobreak >NUL
    
    :: --- Iniciar RetroBat ---
    start "" ..\..\retrobat.exe
    timeout /t 2 /nobreak >NUL
    
    :: --- Esperar a que RetroBat termine ---
    :wait_rb
    tasklist | find /I "retrobat.exe" >NUL
    if not errorlevel 1 (    timeout /t 2 >NUL    goto wait_rb
    )
    tasklist | find /I "emulationstation.exe" >NUL
    if not errorlevel 1 (    timeout /t 2 >NUL    goto wait_rb
    )
    
    :: --- Cerrar monitor ---
    taskkill /FI "WINDOWTITLE eq %MONITOR_TITLE%" /F
    
    :: --- Enviar SHUTDOWN a RPis ---
    for %%I in (%RPI_IPS%) do (    echo [%time%] Enviando SHUTDOWN a %%I:%RPI_PORT%...    echo SHUTDOWN | "%NCAT_EXE%" %%I %RPI_PORT% -w 1
    )
    
    endlocal
    
    
    

    1.2. marquee_monitor.bat

    • Recibe eventos de RetroBat (sistema y ROM) y los envía a las RPis.

    • Contenido funcional que compartiste: no hay cambios, se mantiene tal cual.

2️⃣ Configuración en la RPi

  1. Script mostrar_rom_ipc.sh

    • Ubicación: /usr/local/bin/mostrar_rom_ipc.sh

    • Permisos:

      sudo chmod +x /usr/local/bin/mostrar_rom_ipc.sh
      
      
      
    • Contenido funcional que compartiste: mantener tal cual.

  2. Servicio systemd

    • Crear archivo: /etc/systemd/system/marquee-mpv.service

    [Unit]
    Description=Marquee MPV IPC Listener
    After=network.target
    
    [Service]
    Type=simple
    User=arcade
    ExecStart=/usr/local/bin/mostrar_rom_ipc.sh
    Restart=always
    RestartSec=2
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=marquee-mpv
    
    [Install]
    WantedBy=multi-user.target
    
    
    
    • Ajusta User=arcade si tu usuario es diferente.

  3. Habilitar y arrancar el servicio

    sudo systemctl daemon-reload
    sudo systemctl enable marquee-mpv.service
    sudo systemctl start marquee-mpv.service
    
    
    
    • Comprobar estado:

    sudo systemctl status marquee-mpv.service
    
    
    
    • Esto asegura que siempre se levante al iniciar la RPi y esté escuchando los mensajes de Windows.

3️⃣ Pruebas

  1. Desde Windows, prueba el envío manual:

    echo SHUTDOWN | "C:\Program Files (x86)\Nmap\ncat.exe" 192.168.1.138 12345 -w 1
    
    
    
    • La RPi debería apagarse.

  2. Lanzar start.bat en Windows:

    • RetroBat se inicia.

    • Monitor registra los eventos de sistema/ROM y los envía a las RPis.

    • Al cerrar RetroBat, el monitor envía SHUTDOWN automáticamente.

  3. Revisar logs:

    • Windows: C:\temp\marquee_debug.log

    • RPi: /home/arcade/mostrar_rom_debug.log

Discussions