Salut à tous.
Feldou a écrit :Le script est lancé par cron ce qui me convient très bien, ...
Votre problème n'est pas de lancer le script, mais de le faire à la bonne heure.
D'où comment paramétrer d'une manière interactive l'heure à laquelle votre script va se déclencher.
Feldou a écrit :SAUF QUE : pour régler l'heure dans le cron je passe par une connexion SSH
Modifier la crontab d'une manière interactive n'est pas une bonne idée.
Votre exemple est un réveil matin qui se déclenche à différentes heures selon le jour de la semaine.
Vous pouvez déclencher votre script, à partir de la crontab, disons tous les quart d'heure.
C'est ce que l'on nomme "une tâche planifiée".
Puis comme vous le suggèrer un fichier où vous indiquez vos horaires.
Pour le transférer depuis un ordinateur windows, on peut utiliser la commande "pscp" qui est disponible avec "putty".
Donc sous windows, vous avez juste à mettre en forme votre fichier et à l'envoyer en utilisant un script batch windows qui va contenir cette commande.
Par exemple :
Code : Tout sélectionner
@echo off
chcp 1252 > nul
title "Transfert vers 'Raspberry'."
set PATH=C:\Program Files (x86)\PuTty;%PATH%
echo "+-------------------------------+"
echo "| Transfert Fichier Horaire |"
echo "+-------------------------------+"
echo.
pscp.exe -load Raspberry -p c:\horaire.txt pi@192.168.1.123:/home/pi/horaire.txt
echo.
echo.
pause
exit
En ce qui concerne votre tâche planifiée qui est déclenchée par la crontab, il suffit en python de venir consulter ce fichier des horaire.
Le déclenchement doit se faire dans la périodicité de tous les quarts d'heure et tous les jours.
Par exemple, vous indiquez un déclenchement à 7H00, le lundi.
Dans votre script python, vous faites :
1) récupérer la date et l'heure système.
2) vous êtes dans une boucle (du type while), où vous allez lire une ligne à la fois, du contenu de votre fichier des horaires.
3) pour chaque ligne, vous vérifiez la condition suivante :
jour système = jour déclenchement (celui du fichier)
et
heure système <= heure de déclenchement (celui du fichier) <= heure système + 1/4 d'heure.
4) si aucune condition n'a été vérifiée, vous arrivez en fin de boucle et vous sortez définitivement de votre script.
5) si une condition est vérifiée, vous sortez de la boucle et vous poursuivez le traitement.
Vu que je ne connais pas python, je vous laisse chercher comment coder cela.
Il est inutile de réinventer le timer (solution de Bud Spencer), puisque la crontab sait très bien le faire.
@+