Programmation python qui plante après plusieurs minutes d'execution


#1

Bonjour,

j’ai réalisé un script python qui me sert à faire de la video-surveillance.
Le code fonctionne plutôt bien pendant 30 minutes. puis il se met à planter / freezer au bout d’un certains temps. (le servo moteur ne réagit plus mais n’empêche pas la poursuite du script. l’acquisition d’image plante à l’enregistrement)
Je pensais que le problème pouvait être lié à la mise en veille du raspberry. Je l’ai donc désactivé mais rien n’y fait.
Savez-vous si c’est un problème connu avec les raspberry (par exemple saturation de la mémoire vive) ?

voici le code :

#!/usr/bin/python
import MySQLdb
import time
import RPi.GPIO as GPIO
import datetime
import picamera

GPIO.setmode(GPIO.BCM)
PIR = 21
GPIO.setup(26, GPIO.OUT) # servo
GPIO.setup(PIR, GPIO.IN)
GPIO.setup(12, GPIO.OUT) # Definition du port en sortie
GPIO.setup(16, GPIO.OUT) # Definition du port en sortie
GPIO.setwarnings(False) # Mettre sur OFF les alertes (qui sont inutiles)
#position du cadre au lancement du programme

def servo(angle, ajoutAngle):
pwm=GPIO.PWM(26,100)
pwm.start(5)
angleChoisi = float(angle)/10 + ajoutAngle
pwm.ChangeDutyCycle(angleChoisi)
time.sleep(5)

fin def servo

servo(5, 5)

def statut():
db = MySQLdb.connect(host=“192.168.1.20”, # your host, usually localhost
user=“YYYY”, # your username
passwd=“XXXX”, # your password
db=“ZZZZZ”) # name of the data base
cur = db.cursor()
cur.execute(“SELECT * FROM survey order by id desc LIMIT 0, 1”)
for row in cur.fetchall():

            statut1 = row[1]
            if statut1 == "no":

a = “non active”

                    servo(5, 5)

print a

return statut1

            elif statut1 == "oui" and GPIO.input(PIR):

a = “activation”

                    servo(70, 5)
                    print("Mouvement ! ")
                    GPIO.output(12, True)
                    #debut APN
                    with picamera.PiCamera() as camera:
                            camera.resolution = (1024, 768)
                            camera.start_preview()
                            time.sleep(1) #prechauffage APN
                            i = 0
                            nbpic=3
                            while i < nbpic :
                                    date = datetime.datetime.now().strftime("%d-%m-%Y-%H-%M-%S")
                                    camera.capture("/home/pi/scripts/pics/image"+ date + ".jpg")
                                    time.sleep(1)
                                    i = i + 1
                    #fin camera
                    GPIO.output(12, False)

return statut1

            else:

a = “activation”

                    servo(70, 5)

print a

return statut1

    db.close()

fin def statut

try:
print(" (CTRL+C to exit)")
#GPIO.output(16, True)
# nbpic = input (“entrez le nombre de photo par detection :\n”)
print “Ready”

    while True:
            statut()
           GPIO.output(16, True)
            time.sleep(3)
           GPIO.output(16, False)

except KeyboardInterrupt:
print(“Quit”)
servo(5, 5)
GPIO.cleanup()