31 lines
1.9 KiB
Markdown
31 lines
1.9 KiB
Markdown
# 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
|
|
|
|
## Related Repos
|
|
- `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)*
|