Files

1.9 KiB

Moonlight Drive-In

NFC-triggered video player for a home "drive-in" theatre: scanning a tag plays the mapped movie on a seamless dual-MPV player, with a web remote, network NFC clients and relay-controlled effects.

Repository: https://gitea.hideawaygaming.com.au/jessikitty/moonlight-drive-in

Architecture

  • Player: mpv_seamless_player.py / web_mpv_main.py — two MPV instances for gapless transitions; anti-repeat logic; manual and auto-cycle modes
  • Web: web_interface.py — Flask + SocketIO remote/gallery on port 8547; API POST /api/video/play {"nfc_id": ...}, POST /api/video/skip, GET /api/stats
  • Mappings: key_mapping.txt (tag → video), folder_mapping.txt (tag → folder sequence), gallery_config.json (web UI)
  • Clients: clients/ — GUI/CLI/auto-connect network NFC clients with global input capture (pynput)
  • Effects: esp32_relay_controller.py + theatre_automation.py — ESP32 Bluetooth relay
  • Deploy: Windows host, runs from E:\DriveIn\, batch launchers
  • lego-dimensions-reader — LEGO Dimensions portal as a multi-pad NFC reader with LED effects (planned replacement for the ACR122)
  • video-player-log-analyzer — HTML log analysis/report tool
  • esp32-bluetooth-relay — relay firmware

Conventions

  • Tkinter updates from threads go through root.after(0, ...)
  • Console output is ASCII-only ([WEB], [VIDEO]) — no emoji
  • Don't commit IPs beyond the LAN default; VPN addresses are <redacted>

Session Log

  • 2025-12-15 — ESP32 Bluetooth Relay Theatre Automation — Added relay driver and theatre automation layer over Bluetooth serial
  • 2025-12-24 — NFC Network Client, Global Input Capture and Smart Connect — Remote NFC clients, focus-independent scanning, verified smart connect and 5-second CLI auto-start

Created by: Jess Rogerson (yelling commands at Claude.AI)