# 👻 Projekt Zrcadlo: Digitální Duch 👻 Proměňte obyčejné zrcadlo v bránu do záhrobí! 😱 Tento projekt využívá Raspberry Pi a pohybový senzor k vytvoření dokonalé iluze "strašidelného zrcadla". Je navržen jako hlavní atrakce pro Halloweenskou párty. Když se někdo nic netuše přiblíží, zrcadlo ožije a zjeví se v něm duch. --- ## ✨ Klíčové vlastnosti * **Detekce pohybu:** Duch se objeví, jen když se někdo přiblíží. * **Perfektní iluze:** V klidovém stavu zobrazuje absolutně černou obrazovku. Žádné blikání terminálu, žádný text. * **Plynulé přechody:** Přechod z černé obrazovky na video (a zpět) je okamžitý a plynulý. Iluze není nikdy přerušena. * **Náhodné přehrávání:** Nikdy nevíte, který z duchů se zjeví. Skript si náhodně vybírá ze složky s videi. * **Chytrý zámek:** Senzor je po spuštění videa inteligentně deaktivován přesně na dobu délky videa. Tím se zabrání otravnému restartování scény při dalším pohybu. * **Vysoký výkon:** Všechna videa jsou analyzována předem při startu. Reakce na pohyb je tak bleskurychlá, protože skript už zná délku každého videa. * **Plná konfigurovatelnost:** Vše (GPIO piny, časování) lze snadno nastavit v jediném `config.yaml` souboru. --- ## 🛠️ Jak to funguje Celý systém běží na **Raspberry Pi Zero 2 W** se systémem Raspberry Pi OS Lite. 1. **Na pozadí** běží `mpv` přehrávač. Ten neustále zobrazuje černý obrázek (`black.png`) a poslouchá na IPC socketu (`/tmp/mpvsocket`). 2. **PIR senzor** (HC-SR501) detekuje pohyb. 3. **Python skript** (`ghost_trigger.py`) zachytí signál ze senzoru. 4. Skript okamžitě zamkne senzor (`is_playing = True`) a náhodně vybere video a jeho *předem zjištěnou* délku. 5. Po uplynutí "zpoždění pro překvapení" (např. 1.5s) pošle pomocí `socat` příkaz do běžícího `mpv`. 6. Příkaz obsahuje instrukce: "Plynule přehraj toto video (bez opakování) a hned po něm zařaď do fronty zpět černý obrázek." 7. `mpv` provede plynulý přechod, přehraje video a plynule se vrátí k černé. 8. Python skript mezitím čeká po přesnou dobu délky videa a poté senzor opět odemkne. --- ## ⚙️ Potřebný hardware * **Raspberry Pi:** Tento projekt běží na **Raspberry Pi Zero 2 W**. Zvládne to i výkonnější Pi 3/4. * **Displej:** Libovolný tenký LCD panel s HDMI vstupem. * **Zrcadlo:** Polopropustné ("špionážní") zrcadlo nebo fólie. * **Senzor:** Pohybový senzor HC-SR501 (PIR). * **Napájení:** Dostatečně silná powerbanka (alespoň 10 000 mAh) nebo UPS HAT pro delší výdrž. * **SD karta:** (alespoň 8 GB) --- ## 🚀 Instalace a spuštění 1. Naklonujte nebo zkopírujte soubory do složky (`/home/zrnek/duch`). 2. **Nainstalujte všechny potřebné závislosti:** ```bash sudo apt update sudo apt install mpv ffmpeg socat python3-gpiozero python3-yaml ``` 3. **Připravte prostředí:** * Do složky `videos/` nahrajte své video soubory (s černým pozadím). * Vygenerujte černý obrázek pro pozadí: ```bash ffmpeg -f lavfi -i color=c=black:s=1920x1080 -vframes 1 black.png ``` 4. **Nastavte `config/config.yaml`:** * Upravte si GPIO pin, časování a další hodnoty podle svých potřeb. 5. **Nastavte službu `systemd`:** * Vytvořte soubor `/etc/systemd/system/ghost-player.service`, aby se skript spouštěl automaticky při startu. (Doporučuje se spouštět jako `root` pro bezproblémový přístup k hardwaru, nebo pečlivě nastavit oprávnění pro uživatele `zrnek`). * Povolte službu: ```bash sudo systemctl daemon-reload sudo systemctl enable ghost-player.service sudo reboot ``` --- ## 🔧 Konfigurace Veškeré nastavení se provádí v souboru `duch/config/config.yaml`: ```yaml # GPIO pin, ke kterému je připojen PIR senzor pir_pin: 17 # Název složky s videi videos_dir: "videos" # Seznam povolených přípon video souborů video_extensions: - ".mp4" - ".mkv" # Zpoždění v sekundách od detekce pohybu po spuštění videa # (pro lepší "leknutí") surprise_delay: 1.5