CRON qui demare pas avec script py

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

CRON qui demare pas avec script py

Message par Eddie » sam. 26 mars 2016 13:41

Bonjour,

Je galère depuis pas mal de temps avec ce foutu CRON... J4ai plusieurs questions :

Je souhaiterais faire un timelapse autonome d'un chantier en cours en prenant une photo toute les 5 min et les mettre sur un disque dur branché en usb dessus /media/pi/HD1/TM-1.

* J'ai le script dans le lien ci dessous qui marche bien quant je lance la commande à la mano. Qu'il soit dans /home/pi ou /media/pi/HD1/TM-1
http://www.instructables.com/id/Simple- ... /?ALLSTEPS
Je veux modifier le fichier de destination, mon script est sur /home/pi et l’enregistrement des fichiers doit se faire sur /media/pi/HD1/TM-1

A force de faire des essais j'en suis à HD12, pourquoi ? Du coup c'est sans doute la raison pourquoi ça marche pas puisque ça cherche HD1 dans le chemin mais pourquoi ce changement de nom ? Et comment éviter ça ?

* Je comprend pas pourquoi on peut faire et avoir plusieurs tables en tapant :
- crontab -e
- sudo crontab -e
- sudo nano crontab -e

C'est quoi la différence ?

En faite je souhaiterais faire démarrer ce script du lundi au vendredi et de 7h30 à 18h
30 7 * * * 1-5 python /media/pi/HD1/TM-1/raspiLapseCam300.py

il vaut mieux un cron en python ou en shell ? et du coup la commande en shell se transforme comment ?

Merci de m’éclaircir

Ed'
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

domi
Administrateur
Messages : 2576
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: CRON qui demare pas avec script py

Message par domi » sam. 26 mars 2016 22:11

Bonsoir,

Peu importe le langage utilisé, du moment que tu mette bien l'entête dans ton fichier.

Concernant les différentes Crontab, il y en a une différentes pour chacun des utilisateurs, et une pour ROOT.
Lorsque tu lances la commande "crontab -e" tu édites la crontab de l'utilisateur courant. c'est a dire que toute les commandes demandées dans cette Crontab seront exécutée avec les droits de l'utilisateur en cours.

Si tu édites "sudo crontab -e", dans ce cas tu édite la crontab de ROOT, donc toutes les commandes seront exécutées avec les droits ROOT.

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

Re: CRON qui demare pas avec script py

Message par Eddie » dim. 27 mars 2016 10:23

Ok merci domi c'est plus clair pour la table.

Donc si dans je met dans crontab -e :

Code : Tout sélectionner

30 7 * * * 1-5 python /media/pi/HD1/TM-1/raspiLapseCam300.py
(En faite je souhaiterais faire démarrer ce script du lundi au vendredi et de 7h30 à 18h)

et que le script soit :

Code : Tout sélectionner

# Import some frameworks
import os
import time
import RPi.GPIO as GPIO
from datetime import datetime

# Grab the current datetime which will be used to generate dynamic folder names
d = datetime.now()
initYear = "%04d" % (d.year) 
initMonth = "%02d" % (d.month) 
initDate = "%02d" % (d.day)
initHour = "%02d" % (d.hour)
initMins = "%02d" % (d.minute)

# Define the location where you wish to save files. Set to HOME as default. 
# If you run a local web server on Apache you could set this to /var/www/ to make them 
# accessible via web browser.
folderToSave = "/media/pi/HD1/TM-1/timelapse_" + str(initYear) + str(initMonth) + str(initDate) + str(initHour) + str(initMins)
os.mkdir(folderToSave)

# Set the initial serial for saved images to 1
fileSerial = 1

# Run a WHILE Loop of infinitely
while True:
    
    d = datetime.now()
    if d.hour:
        
        # Set FileSerialNumber to 000X using four digits
        fileSerialNumber = "%04d" % (fileSerial)
        
        # Capture the CURRENT time (not start time as set above) to insert into each capture image filename
        hour = "%02d" % (d.hour)
        mins = "%02d" % (d.minute)
        
        # Define the size of the image you wish to capture. 
        imgWidth = 2592 # Max = 2592 
        imgHeight = 1944 # Max = 1944
        print " ====================================== Saving file at " + hour + ":" + mins
        
        # Capture the image using raspistill. Set to capture with added sharpening, auto white balance and average metering mode
        # Change these settings where you see fit and to suit the conditions you are using the camera in
        os.system("raspistill -w " + str(imgWidth) + " -h " + str(imgHeight) + " -o " + str(folderToSave) + "/" + str(fileSerialNumber) + "_" + str(hour) + str(mins) +  ".jpg  -sh 40 -awb auto -mm average -v")

        # Increment the fileSerial
        fileSerial += 1
        
        # Wait 300 seconds (5 minute) before next capture
        time.sleep(300)
        
    else:
        
        # Just trapping out the WHILE Statement
        print " ====================================== Doing nothing at this time"

Sur la base de http://www.instructables.com/id/Simple- ... /?ALLSTEPS

Ben pourquoi ça marche pas ? j'ai juste changé le chemin de destination

Code : Tout sélectionner

"/media/pi/HD1/TM-1/timelapse_"
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

domi
Administrateur
Messages : 2576
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: CRON qui demare pas avec script py

Message par domi » dim. 27 mars 2016 13:30

Bonjour,

Tu as une étoile en trop, et attention, cron ne connais pas le PATH, il faut donc soit le déclarer, soit mettre le lien complet.

Code : Tout sélectionner

30 7 * * 1-5 /usr/bin/python /media/pi/HD1/TM-1/raspiLapseCam300.py
Ce Cron s'exécute avec les droits utilisateur courant, il faut donc lancer une console depuis le compte utilisateur, et s'assurer que le script fonctionne avec les droits de ce user.

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

Re: CRON qui demare pas avec script py

Message par Eddie » dim. 27 mars 2016 16:30

Ok pour l'etoile mais par contre e comprend pas ce que tu veux dire par : cron ne connais pas le PATH, il faut donc soit le déclarer, soit mettre le lien complet. En relatif ou absolut ? Et comment le connaitre ? /media/... ne suffit pas ?
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

domi
Administrateur
Messages : 2576
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: CRON qui demare pas avec script py

Message par domi » lun. 28 mars 2016 08:56

Bonjour,

Je parlais du chemin de python

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

Re: CRON qui demare pas avec script py

Message par Eddie » lun. 28 mars 2016 11:15

ok entre temps je me suis rencardé... En local ça marche mais pas sur mon media... j'ai essayé avec media/... avec /media/... marche pas non plus. 'est le disque dur qui pose problème ?
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

domi
Administrateur
Messages : 2576
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: CRON qui demare pas avec script py

Message par domi » lun. 28 mars 2016 18:24

Lorsque tu lances la commande "sudo mount" est-ce que tu vois ton DD

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

Re: CRON qui demare pas avec script py

Message par Eddie » mar. 29 mars 2016 07:24

Oui. Quant je fais cd /media/HD1... ca mache aussi
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

Avatar du membre
Eddie
Messages : 80
Enregistré le : lun. 2 mars 2015 20:30

Re: CRON qui demare pas avec script py

Message par Eddie » dim. 3 avr. 2016 12:07

Bon, le sujet n’intéressant pas grand monde apparemment j'ai usé de persévérance (ce qui est plutôt formateur). :mrgreen:

Petit récap' de ma réflexion :

Cron :

Code : Tout sélectionner

* * * * * /home/pi/TM/TM-1.sh
Ca c'est pour les essais... Dans la finalité je voudrais qu'il commence du lundi au vendredi et de 7h à 22h et jusqu'à l'infini...
Donc :

Code : Tout sélectionner

0 7 * * 1-5 /home/pi/TM/TM-1.sh
Pensez vous que ce soit bon ?

Script

Code : Tout sélectionner

SAVEDIR=/media/pi/HD1/TM-1
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 300;
done;
Bon là c'est un peu plus chaud...
sleep c'est pour une pause de 5 min
Mais je voudrais rajouter une commande au niveau de raspistill car pour recommencer le mardi à 7h il faudra bien qu'il se soit arrêté à 22 h non ?
J'ai essayé de rajouter

Code : Tout sélectionner

/opt/vc/bin/raspistill -o $SAVEDIR/$filename - tl 46800000
mais ça marche pas... l’aperçu reste figé et pas d'enregistrement du fichier.
Et pourquoi je ne peux pas rajouter de commande à raspistill ?

Avez vous une autre idée ?

Merci à vous

Ed'
Raspberry Pi 2 et KODI + HD
Raspberry B et Recalbox
Raspberryi B+ expérience électronique Lego et Python
Raspicam
Freebox V6

Répondre

Retourner vers « Python »