Aktualizovat ghost_trigger.py
po prvním načtení skriptu se analyzuje složka s videi a udělá se seznam videí a jejich délka, aby pak přechod byl plynulejší. Dle délky souboru se pak i nastavuje zámek senzoru.
This commit is contained in:
parent
01f8a22cb0
commit
c8a7682eff
1 changed files with 51 additions and 1 deletions
|
|
@ -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 = []
|
||||
|
|
|
|||
Loading…
Reference in a new issue