Hey Leute,
zurzeit programmiere ich eine Alarmanlage. Die soll so funktionieren:
Wenn der Dieb durch die Lichtschranke (derzeit noch Taster für Tests) läuft, macht die Pi Cam ein Foto. Das funktioniert schon alles und sieht so aus:
import RPi.GPIO as GPIO
import picamera
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(23, GPIO.OUT)
GPIO.setwarnings(False)
counter = 1
while True:
if (GPIO.input(18) == True):
GPIO.output(23, 1)
cam = picamera.PiCamera()
cam.resolution = (1920, 1080)
cam.capture('bild_{}.jpg'.format(counter))
cam.close()
counter = counter +1
print counter
else:
GPIO.output(23, 0)
GPIO.cleanup()
Alles anzeigen
Der Counter ist dazu da, falls mehrere Bilder gemacht werden.
Wenn man jetzt aber das Programm neustartet, werden all diese Bilder wieder überschrieben. Um das zu lösen, riet man mir timestamp in den Dateinamen einzubinden. Das sah dann so aus (bin Python Anfänger, also verzeiht mir falls ich hier Mist gebaut habe):
import RPi.GPIO as GPIO
import picamera
import time
import datetime
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(23, GPIO.OUT)
GPIO.setwarnings(False)
timestr = time.strftime("%Y%m%d-%H%M%S")
while True:
if (GPIO.input(18) == True):
GPIO.output(23, 1)
with picamera.PiCamera() as cam:
cam.resolution = (1920, 1080)
cam.exposure_mode = 'antishake'
cam.capture('bild_{}.jpg'.format(timestr))
cam.close()
GPIO.output(23,0)
else:
GPIO.output(23, 0)
GPIO.cleanup()
Alles anzeigen
Soweit funktioniert das auch.
ABER, es wird nur ein Bild erstellt und dieses wird immer wieder überschrieben.
Der Dateiname bleibt dabei gleich, obwohl sich die Zeit sich ändert.
Wie schaffe ich es, dass immer die Zeit als Dateiname benutzt wird, zu der die Kamera das Foto aufgenommen hat?