Hallo zusammen!
Vor einiger Zeit habe ich ein kleines Projekt mit dem Raspi 3+ realisiert: Der Pi gibt über eine angeschlossene Aktivbox zufallsbasiert Audiodateien aus. Ein verschalteter PIR-Sensor wird bei Bewegung getriggert und startet im Sketch einen Programmteil, welcher eine Audioausgabe bewirkt. Das Setup ist 24/7 am Strom und im WLAN.
Nun möchte ich meinen Sketch um eine Zeitschaltuhr erweitern. Die Idee dahinter ist, dass der Pi über Nacht (22:00-08:00) keine Audioausgabe tätigt. Hat jemand eine Idee zur Umsetzung, ein Modul welches mir hilft oder andere Ideen? Den bisherigen Sketch linke ich unten. Er funktioniert fehlerfrei. Besten Dank im Voraus!
Python
# Import required Python libraries
import RPi.GPIO as GPIO
import time
import subprocess
import random
import os
from ffpyplayer.player import MediaPlayer
# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
# Define GPIO to use on Pi
GPIO_PIR = 7
print("PIR Module Test (CTRL-C to exit)")
# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN) # Echo
Current_State = 0
Previous_State = 0
try:
print("Waiting for PIR to settle ...")
# Loop until PIR output is 0
while GPIO.input(GPIO_PIR)==1:
Current_State = 0
print(" Ready")
# Loop until users quits with CTRL-C
while True :
# Read PIR state
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1 and Previous_State==0:
# PIR is triggered
print(" Motion detected!")
#Ordnerpfad der Musik festlegen
Playlist_Ordner = '/home/pi/Music/'
#Alle Dateien der Playlist auslesen
Playlist = os.listdir(Playlist_Ordner)
#print ("Files in Playlist: ")
#print (Playlist)
#Zufälliges Lied auswählen
#print ("\n")
print ("Chose following file to play: ")
Song = random.choice(Playlist)
print (Song)
Song_path = "/home/pi/Music/" + str(Song)
#print (Song_path)
print ("\n")
print ("Now playing: "+ str(Song))
player = MediaPlayer(Song_path)
time.sleep(180)
# Record previous state
Previous_State=1
elif Current_State==0 and Previous_State==1:
# PIR has returned to ready state
print(" Ready")
Previous_State=0
# Wait for 10 milliseconds
time.sleep(0.01)
except KeyboardInterrupt:
print(" Quit")
# Reset GPIO settings
GPIO.cleanup()
Alles anzeigen