# Überblick

Diese Codebase wurde 08/09 2024 von Tim Schilling entwickelt um ein altes gerät im Lechfeld Museum der Stadt Königsbrunn zu ersetzten. Das Skript ist für die Verwendung auf einen Raspberry Pi 4 gedacht unter verwendung von PiOS version 12 (Bookworm).
Dieses Skript verwendet für das Spielen von Videos VLC bzw. die Kommandozeilen variante ```cvlc```. Im Normalzustnad wir ein demobild (siehe ./videos/thumb.jpg) angezeigt, bei betätigung einses GPIO Knopfes wird ein Kurzfilm (ca. 15 minuten) abgespielt. Dannach wird wieder das bild angezeigt.  Der Knopf schließt ```GPIO 17``` (PIN 11) auf ```GND``` (PIN 9) kurz.

Das Skript wird Automatische bei jedem Reboot über einen SystemD dienst gestartet, soffern dies nicht vorher abgeschalten wurde.

![Pinout des Raspberry Pis](./dokumentation/gpio-pinout-diagram.png)

## Abhängigkeiten

- vlc -> Video Lan Client, anwendung zum Abspielen von Videos
- python3-rpi.gpio -> Python Bibliothek welche für die Verwendung der GPIO gebraucht wird.
- fbi -> Frame Buffer Imageviewer, anwendung für das einzeigen von Bildern über den Framebuffer

## Skripte

Es wurden mehrer Skripte für das Aufsetzen und die Bedienung geschreiben, weiteres wird hier beschrieben.

- setup.sh -> Setup Script welches mehrere aufgaben erfüllt, dies führt (in Reienfolge der Ausführtung)
    1. Fragt den Nutzer ob für diesen der Autostart dienst Verwendet werden soll.
    2. Fragt den Nutzer ob die GPIO Shutdown funktion des Raspberry Pi verwendet werden soll.
    3. Führt ein Systemupdate über den APT aus
    4. Installiert die Abhängigkeiten
    5. Herunterladen der Aktuellen Scripte aus dem GitHub Repo
    6. Herunterladen der Videos aus dem GitHub Repo (**ACHTUNG: Wenn sich die Datein im Repo Geänder haben müssen die Datein im Skript entsprechend Angepasst werden.**)
    7. Festlegen von SystemD dienst Datein Inhalt
    8. Erstellen der System D Service Datein und Einschalten dieser je nach vorheriger Nutzerauswahl
    9. Einfügen der zeile in /boot/config.txt für GPIO Shutdown

- video.py -> Script welches die Videos Abspielt
- start.sh -> Skript zum starten der Wiedergabe, schaltet gleichzeitig den Autostart der Anwendung über einen SystemD dienst **EIN**
- stop.sh -> Skript zum stoppen der Wiedergabe, schaltet gleichzeitig den Autostart der Anwendung über einen SystemD dienst **AUS**
- reload.sh -> Skript zum Neustarten der Wiedergabe, stop diese über System D und startet diese wieder

## Dateistrucktur

```
- PiVideo/
    |- videos/
    |   |- loop.mp4
    |   |- trigger.mp4
    |- video.py
    |- start.sh
    |- stop.sh
    |- reload.sh
```
