diff --git a/ghost_trigger.py b/ghost_trigger.py index 2127c32..63da976 100644 --- a/ghost_trigger.py +++ b/ghost_trigger.py @@ -1,3 +1,53 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +============================================================================= +Skript pro ovládání "digitálního ducha" v zrcadle (Projekt Zrcadlo) +============================================================================= + +:Název skriptu: ghost_trigger.py +:Autor: zrnek +:Verze: 2.0.0 (Finální verze s IPC ovládáním) +:Datum: 30. října 2025 + +:Popis: +Tento skript běží na Raspberry Pi Zero 2 W a ovládá iluzi "ducha" +pro Halloweenskou párty. + +Hlavní funkce: +1. Při startu analyzuje video soubory ve složce 'videos' a zjistí jejich délku. +2. Spustí přehrávač 'mpv' v režimu na pozadí, který zobrazuje černý + obrázek ('black.png') a čeká na příkazy. +3. Monitoruje pohybový PIR senzor. +4. Při detekci pohybu: + a. Okamžitě uzamkne senzor, aby se zabránilo opakovanému spuštění. + b. Počká na krátké "zpoždění pro překvapení" (definované v config.yaml). + c. Pošle 'mpv' přes 'socat' příkaz k plynulému přehrání náhodného videa. + d. Po skončení videa pošle příkaz pro návrat k černé obrazovce. + e. Udrží senzor zamčený po přesnou dobu trvání videa. + f. Odemkne senzor a čeká na další pohyb. + +:Závislosti: +- Python 3 +- Knihovny: PyYAML (`python3-yaml`), gpiozero (`python3-gpiozero`) +- Systémové nástroje: `mpv`, `socat`, `ffprobe` (z balíku `ffmpeg`) + +:Struktura projektu: +/home/zrnek/duch/ +├── config/ +│ └── config.yaml (Konfigurační soubor) +├── videos/ +│ ├── video1.mp4 (Soubory s videi duchů) +│ └── ... +├── black.png (Obrázek pro černé pozadí) +└── ghost_trigger.py (Tento skript) + +:Spuštění: +Skript je navržen pro automatické spuštění jako systémová služba +prostřednictvím 'ghost-player.service'. + +""" import os import yaml import random @@ -20,7 +70,7 @@ VIDEOS_DIR = os.path.join(os.path.dirname(__file__), config.get('videos_dir', 'v BLACK_IMAGE_PATH = os.path.join(os.path.dirname(__file__), "black.png") VIDEO_EXTENSIONS = tuple(config.get('video_extensions', ['.mp4', '.mkv'])) MPV_SOCKET_PATH = "/tmp/mpvsocket" -# <<< NOVINKA: Načtení hodnot ze souboru config.yaml >>> +# <<< Načtení hodnot ze souboru config.yaml >>> SURPRISE_DELAY = config.get('surprise_delay', 1.5) SENSOR_LOCK_DURATION = config.get('sensor_lock_duration', 30) available_videos = []