Hallo zusammen,
eines vorweg ich bin blutiger Anfänger und benötige deswegen etwas Hilfe bei folgendem Projekt.
Hardware:
Umsetzung auf dem Raspberry Pi 3 mit RPI HC-SR501 Sensor
Szene:
Beim betreten eines Raumes, soll per PIR die Wiedergabe einer Audiodatei (bspw. Hörbuch etc.) für X Minuten ausgelöst werden.
Die Wiedergabe soll bei späterem Betreten des Raumes fortgesetzt werden.
Folgende Code habe ich aktuell:
import RPi.GPIO as GPIO
import time
import vlc
SENSOR_PIN = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
def Play(channel):
player = vlc.MediaPlayer("/home/pi/Desktop/script/sound.mp3")
player.play()
print('Es gab eine Bewegung! - Play')
time.sleep(10) #Zeit zu Testzwecken auf 10 Sekunden gesetzt
player.set_pause(1)
print('Es gab seit X Minuten keine Bewegung! - Pause')
try:
GPIO.add_event_detect(SENSOR_PIN, GPIO.RISING, callback=Play,)
while True:
continue
except KeyboardInterrupt:
print ("Script wird beendet")
GPIO.cleanup()
Display More
Soweit , so gut... Es wird bei einer Bewegung also eine Datei wiedergegeben. Damit das Script aber fehlerfrei und in vollem Umfang läuft bräuchte ich bei den folgenden Punkten Hilfe:
1. Jedes mal wenn der Sensor eine weitere Bewegung registriert, wird scheinbar eine zusätzliche Instanz des Players geöffnet und die Datei wird parallel erneut abgespielt, läuft dann also doppelt, dreifach etc. im Kanon
Es wäre gut, wenn Bewegungen während der Wiedergabe ignoriert werden würden. Sodass nur eine Instanz des Players läuft
2. Wenn die Wiedergabe nach Ablauf der Zeit pausiert, soll die sie bei einer späteren Bewegung fortgesetzt werden.
Ich hoffe das ist machbar, und dass ihr mir helfen könnt