Compare commits

..

10 Commits

Author SHA1 Message Date
schilling 7ee08128f8 Test.txt gelöscht
Removing Testfile

Signed-off-by: schilling <tim.schilling@kitl.bayern>
2024-11-11 08:14:28 +00:00
Tim Schilling | IuK 58e5638e67 Added Test file for Remote Sync Test 2024-11-11 09:12:51 +01:00
Tim Schilling | IuK efcd9f0d1e Changed Setup to include changed Systemd Service 2024-09-16 09:02:34 +02:00
Tim Schilling | IuK 9cf4e5142b Added Proper Files 2024-09-16 08:51:16 +02:00
Tim Schilling 1fb8f9c427 Added FBI to dependency installation 2024-09-15 17:26:36 +02:00
Tim Schilling 4cd449d7ba Changed script and files to Display Tumbnail instead of Viedo Loop 2024-09-15 17:24:56 +02:00
Tim Schilling | IuK f3f37a9166 Fixing LFS 2024-09-05 17:13:03 +02:00
Tim Schilling | IuK ec19cf1d3c First try for fixing LFS 2024-09-05 17:10:14 +02:00
Tim Schilling / IuK 948d68aa85 Added the propper videos 2024-08-29 13:59:04 +02:00
Tim Schilling / IuK a439cbe171 Changed for soon to add videos 2024-08-29 12:01:27 +02:00
16 changed files with 129 additions and 48 deletions
+3
View File
@@ -0,0 +1,3 @@
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.webm filter=lfs diff=lfs merge=lfs -text
demo* !filter !diff !merge -text
+1 -1
View File
@@ -35,4 +35,4 @@ Zusätzlich wurden für die Leichte Installation des Systems sowie für die Kont
|- start.sh |- start.sh
|- stop.sh |- stop.sh
|- reload.sh |- reload.sh
``` ```
+1 -1
View File
@@ -36,4 +36,4 @@ You can replace the files as needed with your own files. The files included righ
|- reload.sh |- reload.sh
``` ```
The button to trigger the video switch is by default conected to GPIO 17 and GND, you can change this in the Scipt itself if needed. The button to trigger the video switch is by default conected to GPIO 17 and GND, you can change this in the Scipt itself if needed.
+1 -1
View File
@@ -17,4 +17,4 @@ sudo systemctl stop $SERVICE_NAME
echo -e "${GREEN}======== Starte Dienst =========${NOCOLOR}" echo -e "${GREEN}======== Starte Dienst =========${NOCOLOR}"
sudo systemctl start $SERVICE_NAME sudo systemctl start $SERVICE_NAME
exit 0 exit 0
+1 -1
View File
@@ -167,4 +167,4 @@ echo -e "${GREEN}=========================================================${NOC
echo -e "${GREEN}======== Das Script wurde Erfolgreich Ausgeführt ========${NOCOLOR}" echo -e "${GREEN}======== Das Script wurde Erfolgreich Ausgeführt ========${NOCOLOR}"
echo -e "${GREEN}=========================================================${NOCOLOR}" echo -e "${GREEN}=========================================================${NOCOLOR}"
exit 0 exit 0
+11 -13
View File
@@ -59,7 +59,7 @@ check_error "Failed to update packages."
echo -e "${GREEN}======== Installing dependencies =========${NOCOLOR}" echo -e "${GREEN}======== Installing dependencies =========${NOCOLOR}"
sudo apt install -y vlc python3-rpi.gpio git sudo apt install -y vlc python3-rpi.gpio git fbi
check_error "Failed to install dependencies." check_error "Failed to install dependencies."
@@ -93,20 +93,14 @@ echo -e "${GREEN}======== Downloading videos ========${NOCOLOR}"
cd videos/ cd videos/
# Download video files # Download video files
download_file "videos/loop.mp4" download_file "videos/thumb.jpg"
download_file "videos/trigger.webm" download_file "videos/trigger.mp4"
cd .. cd ..
# Create the systemd service for autologin and video control # Create the systemd service for autologin and video control
echo -e "${GREEN}======== Creating systemd service ========${NOCOLOR}" echo -e "${GREEN}======== Creating systemd service ========${NOCOLOR}"
# Autologin service content
AUTOLOGIN_SERVICE_CONTENT="[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin $CURRENT_USER --noclear tty1 linux
"
# Video control service content # Video control service content
SERVICE_CONTENT="[Unit] SERVICE_CONTENT="[Unit]
Description=Video Control Script Description=Video Control Script
@@ -119,6 +113,10 @@ StandardOutput=inherit
StandardError=inherit StandardError=inherit
Restart=always Restart=always
User=$CURRENT_USER User=$CURRENT_USER
TTYPath=/dev/tty1
StandardInput=tty
RemainAfterExit=yes
Type=simple
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -126,11 +124,10 @@ WantedBy=multi-user.target
# If the user opted for autostart, create the service files # If the user opted for autostart, create the service files
if [ $SYSD -eq 0 ]; then if [ $SYSD -eq 0 ]; then
# Creating Service file for Autologin of the Current User # Disableing Login Promt for TTY1
echo "$AUTOLOGIN_SERVICE_CONTENT" | sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf > /dev/null sudo systemctl disable getty@tty1.service
check_error "Failed to create autologin service."
# Craating Service file for Video Playback # Creating Service file for Video Playback
echo "$SERVICE_CONTENT" | sudo tee /etc/systemd/system/$SERVICE_NAME > /dev/null echo "$SERVICE_CONTENT" | sudo tee /etc/systemd/system/$SERVICE_NAME > /dev/null
check_error "Failed to create PiVideo service." check_error "Failed to create PiVideo service."
@@ -170,3 +167,4 @@ echo -e "${GREEN}======== The script was executed successfully ========${NOCOLOR
echo -e "${GREEN}=========================================================${NOCOLOR}" echo -e "${GREEN}=========================================================${NOCOLOR}"
exit 0 exit 0
+1 -1
View File
@@ -16,4 +16,4 @@ sudo systemctl start $SERVICE_NAME
echo -e "${GREEN}======== ENABELING SERVICE =========${NOCOLOR}" echo -e "${GREEN}======== ENABELING SERVICE =========${NOCOLOR}"
sudo systemctl enable $SERVICE_NAME sudo systemctl enable $SERVICE_NAME
exit 0 exit 0
+1 -1
View File
@@ -17,4 +17,4 @@ sudo systemctl stop $SERVICE_NAME
echo -e "${GREEN}======== DISABELING SERVICE =========${NOCOLOR}" echo -e "${GREEN}======== DISABELING SERVICE =========${NOCOLOR}"
sudo systemctl disable $SERVICE_NAME sudo systemctl disable $SERVICE_NAME
exit 0 exit 0
Executable
+42
View File
@@ -0,0 +1,42 @@
#! /usr/bin/python3
import RPi.GPIO as GPIO
import subprocess
import time
# GPIO-Setup
BUTTON_PIN = 17 # Ersetze dies durch den tatsächlichen GPIO-Pin, den du verwendest
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
loop_video = 'videos/loop.mp4'
trigger_video = 'videos/trigger.mp4'
# Funktion zum Abspielen eines Videos
def play_video(video_file):
subprocess.run(['cvlc', '--play-and-exit', '--fullscreen', '--no-video-title-show', video_file])
# Endlosschleife Video 1 starten
loop_video = subprocess.Popen(['cvlc', '--loop', '--fullscreen', '--no-video-title-show', loop_video])
try:
while True:
# Überprüfen, ob der Button gedrückt wurde
button_state = GPIO.input(BUTTON_PIN)
if button_state == GPIO.LOW: # Button gedrückt
# Stoppe das loop_video
loop_video.terminate()
# Video 2 abspielen
play_video(trigger_video)
# Nach dem Abspielen von Video 2 wieder Video 1 in Schleife starten
loop_video = subprocess.Popen(['cvlc', '--loop', '--fullscreen', '--no-video-title-show', loop_video])
time.sleep(0.1) # Entprellen des Buttons
except KeyboardInterrupt:
# Bei einem Tastaturabbruch das laufende Video stoppen und GPIO reinigen
loop_video.terminate()
GPIO.cleanup()
Executable → Regular
+64 -29
View File
@@ -1,41 +1,76 @@
#! /usr/bin/python3 import os
import RPi.GPIO as GPIO
import subprocess
import time import time
import RPi.GPIO as GPIO
from subprocess import Popen, call
import sys
# GPIO-Setup os.system('sudo chvt 1')
BUTTON_PIN = 17 # Ersetze dies durch den tatsächlichen GPIO-Pin, den du verwendest
# Pfade zu den Dateien
THUMBNAIL_IMAGE = "/home/tim/PiVideo/videos/thumb.jpg"
TRIGGER_VIDEO = "/home/tim/PiVideo/videos/trigger.mp4"
LOG_FILE = "/home/tim/PiVideo/log.txt"
# GPIO-Einstellungen
BUTTON_PIN = 17
GPIO.setmode(GPIO.BCM) GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
loop_video = 'videos/loop.mp4' # Umleitung der Ausgaben in eine Log-Datei
trigger_video = 'videos/trigger.webm' sys.stdout = open(LOG_FILE, "a")
sys.stderr = open(LOG_FILE, "a")
# Funktion zum Abspielen eines Videos def log_message(message):
def play_video(video_file): """Schreibt eine Nachricht in die Log-Datei."""
subprocess.run(['cvlc', '--play-and-exit', '--fullscreen', '--no-video-title-show', video_file]) timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f"{timestamp} - {message}")
sys.stdout.flush()
# Endlosschleife Video 1 starten def show_thumbnail(image_path):
loop_video = subprocess.Popen(['cvlc', '--loop', '--fullscreen', '--no-video-title-show', loop_video]) """Zeigt das Thumbnail an."""
log_message(f"Displaying thumbnail: {image_path}")
call(['sudo', 'fbi', '-T', '1', '-d', '/dev/fb0', '-a','-noverbose', image_path])
try: def close_thumbnail():
while True: """Beendet fbi, um das Thumbnail zu schließen."""
# Überprüfen, ob der Button gedrückt wurde log_message("Closing thumbnail.")
button_state = GPIO.input(BUTTON_PIN) call(['sudo', 'killall', 'fbi'])
if button_state == GPIO.LOW: # Button gedrückt
# Stoppe das loop_video
loop_video.terminate()
# Video 2 abspielen def play_video(video_path):
play_video(trigger_video) """Spielt das Trigger-Video ab."""
log_message(f"Playing video: {video_path}")
p = Popen(['cvlc', '--play-and-exit', '--fullscreen', '--no-video-title-show', video_path])
p.wait()
# Nach dem Abspielen von Video 2 wieder Video 1 in Schleife starten
loop_video = subprocess.Popen(['cvlc', '--loop', '--fullscreen', '--no-video-title-show', loop_video])
time.sleep(0.1) # Entprellen des Buttons
except KeyboardInterrupt: def main():
# Bei einem Tastaturabbruch das laufende Video stoppen und GPIO reinigen log_message("Starting main loop.")
loop_video.terminate() try:
GPIO.cleanup() while True:
# Thumbnail anzeigen
show_thumbnail(THUMBNAIL_IMAGE)
# Warten, bis der Button gedrückt wird
while GPIO.input(BUTTON_PIN) == GPIO.HIGH:
time.sleep(0.1)
# Video abspielen, wenn Button gedrückt wurde
log_message("Button pressed, playing trigger video.")
play_video(TRIGGER_VIDEO)
# fbi schließen, bevor das Video abgespielt wird
close_thumbnail()
# Nach dem Video wieder Thumbnail anzeigen
log_message("Trigger video finished, displaying thumbnail again.")
except KeyboardInterrupt:
log_message("Script interrupted by user.")
finally:
GPIO.cleanup()
log_message("GPIO cleanup completed. Exiting script.")
if __name__ == "__main__":
log_message("Script started.")
main()
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
View File
Binary file not shown.