Page 1 sur 2
CRON qui demare pas avec script py
Posté : sam. 26 mars 2016 13:41
par Eddie
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'
Re: CRON qui demare pas avec script py
Posté : sam. 26 mars 2016 22:11
par domi
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.
Re: CRON qui demare pas avec script py
Posté : dim. 27 mars 2016 10:23
par Eddie
Ok merci domi c'est plus clair pour la table.
Donc si dans je met dans crontab -e :
(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
Re: CRON qui demare pas avec script py
Posté : dim. 27 mars 2016 13:30
par domi
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.
Re: CRON qui demare pas avec script py
Posté : dim. 27 mars 2016 16:30
par Eddie
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 ?
Re: CRON qui demare pas avec script py
Posté : lun. 28 mars 2016 08:56
par domi
Bonjour,
Je parlais du chemin de python
Re: CRON qui demare pas avec script py
Posté : lun. 28 mars 2016 11:15
par Eddie
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 ?
Re: CRON qui demare pas avec script py
Posté : lun. 28 mars 2016 18:24
par domi
Lorsque tu lances la commande "sudo mount" est-ce que tu vois ton DD
Re: CRON qui demare pas avec script py
Posté : mar. 29 mars 2016 07:24
par Eddie
Oui. Quant je fais cd /media/HD1... ca mache aussi
Re: CRON qui demare pas avec script py
Posté : dim. 3 avr. 2016 12:07
par Eddie
Bon, le sujet n’intéressant pas grand monde apparemment j'ai usé de persévérance (ce qui est plutôt formateur).
Petit récap' de ma réflexion :
Cron :
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 :
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
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'